VLAN mit Linux und Open vSwitch: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=== Zielbeschreibung === * Der Cisco-Port '''Ethernet1/1''' ist als '''802.1Q-Trunk''' konfiguriert. * Der Linux-Rechner verwendet das Interface '''enp0s8'''.…“)
 
 
(52 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Zielbeschreibung ===
+
=Wir brauchen einen Open vSwitch=
* Der Cisco-Port '''Ethernet1/1''' ist als '''802.1Q-Trunk''' konfiguriert.
+
*Dozent sagt wo ihr die runterladen könnt
* Der Linux-Rechner verwendet das Interface '''enp0s8'''.
+
*Anleitung wie man die Maschine aufsetzt findet ihr hier:
* Drei VLANs werden getaggt übertragen:
+
*[[Open Vswitch]]
* Ethernet1/2 und Ethernet1/3 → LAN
+
== Zielbeschreibung ==
* Ethernet1/4 und Ethernet1/5 → SERVER
+
{| class="wikitable"
* Ethernet1/6 und Ethernet1/7 → MGMT
+
! Port !! VLAN !! Modus
** VLAN 24 → '''172.18.2xx.1/24'''
+
|-
** VLAN 22 → '''172.17.2xx.1/24'''
+
| port1 || 1 (native), 21, 22, 23 (tagged) || trunk native-untagged
** VLAN 23 → '''172.16.2xx.1/24'''
+
|-
 +
| port2 || 21 || access
 +
|-
 +
| port3 || 21 || access
 +
|-
 +
| port4 || 21 || access
 +
|-
 +
| port5 || 21 || access
 +
|-
 +
| port6 || 21 || access
 +
|-
 +
| port7 || 21 || access
 +
|-
 +
| port8 || 21 || access
 +
|-
 +
| port9 || 21 || access
 +
|-
 +
| port10 || 22 || access
 +
|-
 +
| port11 || 22 || access
 +
|-
 +
| port12 || 22 || access
 +
|-
 +
| port13 || 22 || access
 +
|-
 +
| port14 || 23 || access
 +
|-
 +
| port15 || 23 || access
 +
|-
 +
| port16 || 23 || access
 +
|-
 +
| port17 || alle || Mirror (SPAN)
 +
|}
  
 +
{| class="wikitable"
 +
! VLAN !! Netz !! Bezeichnung
 +
|-
 +
| 1 || 172.27.2XX.0/24 || MGMT
 +
|-
 +
| 21 || 10.88.2XX.0/24 || DMZ
 +
|-
 +
| 22 || 172.26.2XX.0/24 || LAN
 +
|-
 +
| 23 || 10.2XX.1.0/24 || SERVER
 +
|}
 
== Plan ==
 
== Plan ==
 
{{#drawio:vlan-linux-cisco}}
 
{{#drawio:vlan-linux-cisco}}
  
 +
= Zum Open vSwitch =
 +
ssh localhost -p 2222
  
=== Voraussetzungen auf Debian/Linux ===
+
oder im Notfall
;VLAN-Paket installieren:
+
nc localhost 2323
*apt install vlan
+
 
;VLAN-Modul laden:
+
;Logindaten
*sudo modprobe 8021q
+
*user: kit
;Modul beim Booten automatisch laden:
+
*pass: kit
*echo 8021q | sudo tee -a /etc/modules
+
*root: mit '''sudo -i'''
=== /etc/network/interfaces ===
+
 
<pre>
+
===Ports auflisten===
#OHNE IP
+
ovs-vsctl show
auto enp0s8
 
iface enp0s8 inet manual
 
  
#LAN
+
=== VLAN zuordnen ===
auto enp0s8.22
+
;Trunk
  iface enp0s8.22 inet static
+
ovs-vsctl set port port1 tag=1 trunks=21,22,23 vlan_mode=native-untagged
  address 172.17.2xx.1/24
+
;DMZ (VLAN 21)
  vlan-raw-device enp0s8
+
ovs-vsctl set port port2  tag=21
 +
ovs-vsctl set port port3  tag=21
 +
ovs-vsctl set port port4  tag=21
 +
ovs-vsctl set port port5  tag=21
 +
ovs-vsctl set port port6  tag=21
 +
ovs-vsctl set port port7  tag=21
 +
ovs-vsctl set port port8  tag=21
 +
ovs-vsctl set port port9  tag=21
 +
;LAN (VLAN 22)
 +
ovs-vsctl set port port10 tag=22
 +
  ovs-vsctl set port port11 tag=22
 +
ovs-vsctl set port port12 tag=22
 +
ovs-vsctl set port port13 tag=22
 +
;SERVER (VLAN 23)
 +
  ovs-vsctl set port port14 tag=23
 +
  ovs-vsctl set port port15 tag=23
 +
ovs-vsctl set port port16 tag=23
  
#SERVER
+
=== VLAN-Interfaces anlegen ===
auto enp0s8.23
+
Diese sind schon angelegt
  iface enp0s8.23 inet static
+
ovs-vsctl add-port sw0 mgmt  tag=1  -- set interface mgmt  type=internal
  address 172.16.2xx.1/24
+
  ovs-vsctl add-port sw0 dmz    tag=21 -- set interface dmz    type=internal
  vlan-raw-device enp0s8
+
  ovs-vsctl add-port sw0 lan    tag=22 -- set interface lan    type=internal
 +
  ovs-vsctl add-port sw0 server tag=23 -- set interface server type=internal
  
#MGMT
+
=== MGMT-IP setzen ===
auto enp0s8.24
+
;Ergänzen
iface enp0s8.24 inet static
+
nano /etc/network/interfaces
address 172.18.2xx.1/24
+
  auto mgmt
vlan-raw-device enp0s8
+
  iface mgmt inet static
root@fw:~#
+
    address 172.27.2XX.2/24
 +
    gateway 172.27.2XX.1
 +
    dns-nameservers 10.88.2XX.21
 +
    dns-search it2XX.int
  
 +
== Mirror-Port konfigurieren (SPAN) ==
 +
port17 dient als Mirror-Ausgang — dort kann ein IDS oder Wireshark angeschlossen werden:
 +
<syntaxhighlight lang="bash">
 +
ovs-vsctl -- --id=@p get port port17 \
 +
          -- --id=@m create Mirror name=mirror0 \
 +
          select-all=true \
 +
          select-vlan=1,21,22,23 \
 +
          output-port=@p \
 +
          -- set Bridge sw0 mirrors=@m
 +
</syntaxhighlight>
 +
=== Kontrolle ===
 +
<pre>
 +
ovs-vsctl list Mirror
 
</pre>
 
</pre>
 +
Erwartete Ausgabe (gekürzt):
 +
* name: mirror0
 +
* select_all: true
 +
* select_vlan: [1, 21, 22, 23]
 +
* output_port: port17
 +
===Dann ein Reboot===
 +
*reboot
 +
===Check===
 +
*ip a s mgmt
 +
*ip r s
 +
*cat /etc/resolv.conf
  
==Zum Cisco==
+
=== Nutzung ===
*ssh localhost -p 3022
+
* An '''port17''' wird ein IDS oder ein Analyse-System (z. B. Wireshark/tcpdump) angeschlossen
oder im Notfall
+
* Dort ist der gesamte Traffic der VLANs 1, 21, 22 und 23 sichtbar
*nc localhost 2023
 
;Logindaten
 
*user: admin
 
*pass: admin
 
  
 +
=== Test ===
 +
<syntaxhighlight lang="bash">
 +
tcpdump -ni port17
 +
</syntaxhighlight>
 +
Bei korrekter Konfiguration ist sofort Traffic sichtbar.
  
===VLAN anlegen===
+
== Cheat-Sheet: ovs-vsctl ==
configure terminal
+
{| class="wikitable"
vlan 22
+
! Befehl !! Beschreibung
name LAN
+
|-
vlan 23
+
| <code>ovs-vsctl show</code> || Gesamte OVS-Konfiguration anzeigen
name SERVER
+
|-
vlan 24
+
| <code>ovs-vsctl list-br</code> || Alle Bridges anzeigen
name MGMT
+
|-
end
+
| <code>ovs-vsctl list-ports sw0</code> || Alle Ports der Bridge sw0 anzeigen
copy running-config startup-config
+
|-
 +
| <code>ovs-vsctl add-br sw0</code> || Bridge sw0 anlegen
 +
|-
 +
| <code>ovs-vsctl del-br sw0</code> || Bridge sw0 löschen
 +
|-
 +
| <code>ovs-vsctl add-port sw0 port1</code> || Port hinzufügen
 +
|-
 +
| <code>ovs-vsctl del-port sw0 port1</code> || Port löschen
 +
|-
 +
| <code>ovs-vsctl set port port1 tag=22</code> || Port in VLAN 22 setzen (Access)
 +
|-
 +
| <code>ovs-vsctl set port port1 trunks=21,22,23</code> || Trunk-VLANs setzen
 +
|-
 +
| <code>ovs-vsctl set port port1 vlan_mode=native-untagged</code> || VLAN-Modus setzen
 +
|-
 +
| <code>ovs-vsctl clear port port1 tag</code> || VLAN-Tag entfernen
 +
|-
 +
| <code>ovs-vsctl clear port port1 trunks</code> || Trunks entfernen
 +
|-
 +
| <code>ovs-vsctl list port port1</code> || Details zu einem Port anzeigen
 +
|-
 +
| <code>ovs-vsctl list interface port1</code> || Interface-Details anzeigen
 +
|-
 +
| <code>ovs-vsctl list Mirror</code> || Mirror-Konfiguration anzeigen
 +
|-
 +
| <code>ovs-vsctl clear Bridge sw0 mirrors</code> || Mirror löschen
 +
|-
 +
| <code>ovs-appctl fdb/show sw0</code> || MAC-Tabelle anzeigen
 +
|-
 +
| <code>ovs-ofctl dump-flows sw0</code> || OpenFlow-Flows anzeigen
 +
|}
  
=== Cisco-Konfiguration für Ethernet1/1 ===
+
= Auf der Firewall =
  configure terminal
+
;VLAN-Paket installieren:
<pre>
+
  apt install vlan
interface Ethernet1/1
+
;VLAN-Modul laden:
  description Trunk zu Linux-Host
+
modprobe 8021q
  switchport mode trunk
+
;Modul beim Booten automatisch laden:
  switchport trunk allowed vlan 22,23,24
+
echo 8021q | tee -a /etc/modules
  spanning-tree port type edge trunk
 
</pre>
 
  
=== Cisco-Konfiguration für Access-Ports ===
+
=== /etc/network/interfaces ===
;Ethernet1/2 und Ethernet1/3 → VLAN 22 (LAN)
+
<syntaxhighlight lang="text">
<pre>
+
# MGMT
interface Ethernet1/2-3
+
auto enp0s8
  description VLAN 22 LAN
+
iface enp0s8 inet static
  switchport mode access
+
   address 172.27.2XX.1/24
  switchport access vlan 22
 
   spanning-tree port type edge
 
</pre>
 
  
;Ethernet1/4 und Ethernet1/5 → VLAN 23 (SERVER)
+
# DMZ
<pre>
+
auto enp0s8.21
interface Ethernet1/4-5
+
iface enp0s8.21 inet static
   description VLAN 23 SERVER
+
  address 10.88.2XX.1/24
   switchport mode access
+
  vlan-raw-device enp0s8
   switchport access vlan 23
+
    
  spanning-tree port type edge
+
# LAN
</pre>
+
auto enp0s8.22
 +
iface enp0s8.22 inet static
 +
   address 172.26.2XX.1/24
 +
   vlan-raw-device enp0s8
  
;Ethernet1/6 und Ethernet1/7 → VLAN 24 (MGMT)
+
# SERVER
<pre>
+
auto enp0s8.23
interface Ethernet1/6-7
+
iface enp0s8.23 inet static
   description VLAN 24 MGMT
+
   address 10.2XX.1.1/24
   switchport mode access
+
   vlan-raw-device enp0s8
  switchport access vlan 24
+
</syntaxhighlight>
  spanning-tree port type edge
 
</pre>
 
  
end
+
== Abschluss ==
copy running-conf startup-conf
+
*Maschine ausschalten
 +
*In Virtualbox die Schnittstellen 3 und 4 deaktiveren
 +
*Maschnine wieder hochfahren
 +
== Kontrolle ==
 +
*ip a s
 +
== Kabel umstecken ==
  
==IP im MGMT NETZ Vergeben==
+
{| class="wikitable"
configure terminal
+
! VM !! Interface !! Port
interface vlan 24
+
|-
description MGMT-IP
+
| fw || Adapter 2 || port1
ip address 172.18.213.11/24
+
|-
no shutdown
+
| www || Adapter 1 || port2
end
+
|-
 +
| mail || Adapter 1 || port3
 +
|-
 +
| ns || Adapter 1 || port4
 +
|-
 +
| proxy || Adapter 1 || port5
 +
|-
 +
| revproxy || Adapter 1 || port6
 +
|-
 +
| client || Adapter 1 || port10
 +
|-
 +
| smb || Adapter 1 || port14
 +
|-
 +
| ldap || Adapter 1 || port15
 +
|}
  
==Gateway und Nameserver einstellen==  
+
== TODO ==
  configure terminal
+
===Firewall===
  ip route 0.0.0.0/0 172.18.2xx.1
+
;Variablen ändern
  ip name-server 10.88.2xx.21
+
/etc/nfttables-vars.conf
end
+
  define WANDEV = enp0s3
copy running-configure startup-configure
+
  define MGMTDEV  = enp0s8
 +
define DMZDEV = enp0s8.21
 +
define LANDEV = enp0s8.22
 +
define SERVERDEV = enp0s8.23
 +
;Neu starten
 +
*nft -f /etc/nftables.conf
 +
===DHCP-Server===
 +
;Interface ändern
 +
vi /etc/kea/kea-dhcp4.conf
 +
"interfaces": [ "enp0s8.22" ]
 +
;Neu starten
 +
*systemctl restart kea-dhcp4-server.service
  
==Checken==
+
==Testen==
show running-config
+
Was muss man testen?
 +
==Debugging==
 +
;ICMP auf dem virtuellen Interface von VLAN 22
 +
*tcpdump -ni enp0s8.22 icmp
 +
;ICMP auf dem Haupt Interface aber nur der VLAN 22 getaggt
 +
*tcpdump -ni enp0s8.22 icmp and vlan 22
 +
;ICMP auf dem Haupt Interface aber nur der VLAN 22 getaggt. Anzeige inklusive Header
 +
*tcpdump -ni enp0s8.22 -e icmp and vlan 22
  
=== Aktivierung der Konfiguration ===
+
==Todo==
Nach den obigen Anpassungen auf dem Linux-System die Netzwerkschnittstellen neu starten:
+
;Nameserver
*sudo systemctl restart networking
+
*ovs.it2XX.int IN A 172.27.2XX.2 im Nameserver anlegen.
*ip addr show
+
;Vom CLient aus Key hinterlegen
* Sicherstellen, dass die IP-Adressen korrekt zugewiesen wurden und die Kommunikation innerhalb der VLANs funktioniert.
+
*ssh-copy-id  ovs
== TODO Anpassungen ==
+
;Vom CLient aus einlogen
*Firewall
+
*ssh  ovs
*DHCP Server
 
*Sonst nochwas?
 

Aktuelle Version vom 6. August 2026, 11:59 Uhr

Wir brauchen einen Open vSwitch

  • Dozent sagt wo ihr die runterladen könnt
  • Anleitung wie man die Maschine aufsetzt findet ihr hier:
  • Open Vswitch

Zielbeschreibung

Port VLAN Modus
port1 1 (native), 21, 22, 23 (tagged) trunk native-untagged
port2 21 access
port3 21 access
port4 21 access
port5 21 access
port6 21 access
port7 21 access
port8 21 access
port9 21 access
port10 22 access
port11 22 access
port12 22 access
port13 22 access
port14 23 access
port15 23 access
port16 23 access
port17 alle Mirror (SPAN)
VLAN Netz Bezeichnung
1 172.27.2XX.0/24 MGMT
21 10.88.2XX.0/24 DMZ
22 172.26.2XX.0/24 LAN
23 10.2XX.1.0/24 SERVER

Plan

Zum Open vSwitch

ssh localhost -p 2222

oder im Notfall

nc localhost 2323
Logindaten
  • user: kit
  • pass: kit
  • root: mit sudo -i

Ports auflisten

ovs-vsctl show

VLAN zuordnen

Trunk
ovs-vsctl set port port1 tag=1 trunks=21,22,23 vlan_mode=native-untagged
DMZ (VLAN 21)
ovs-vsctl set port port2  tag=21
ovs-vsctl set port port3  tag=21
ovs-vsctl set port port4  tag=21
ovs-vsctl set port port5  tag=21
ovs-vsctl set port port6  tag=21
ovs-vsctl set port port7  tag=21
ovs-vsctl set port port8  tag=21
ovs-vsctl set port port9  tag=21
LAN (VLAN 22)
ovs-vsctl set port port10 tag=22
ovs-vsctl set port port11 tag=22
ovs-vsctl set port port12 tag=22
ovs-vsctl set port port13 tag=22
SERVER (VLAN 23)
ovs-vsctl set port port14 tag=23
ovs-vsctl set port port15 tag=23
ovs-vsctl set port port16 tag=23

VLAN-Interfaces anlegen

Diese sind schon angelegt

ovs-vsctl add-port sw0 mgmt   tag=1  -- set interface mgmt   type=internal
ovs-vsctl add-port sw0 dmz    tag=21 -- set interface dmz    type=internal
ovs-vsctl add-port sw0 lan    tag=22 -- set interface lan    type=internal
ovs-vsctl add-port sw0 server tag=23 -- set interface server type=internal

MGMT-IP setzen

Ergänzen
nano /etc/network/interfaces 
  auto mgmt
  iface mgmt inet static
   address 172.27.2XX.2/24
   gateway 172.27.2XX.1
   dns-nameservers 10.88.2XX.21
   dns-search it2XX.int

Mirror-Port konfigurieren (SPAN)

port17 dient als Mirror-Ausgang — dort kann ein IDS oder Wireshark angeschlossen werden:

ovs-vsctl -- --id=@p get port port17 \
          -- --id=@m create Mirror name=mirror0 \
          select-all=true \
          select-vlan=1,21,22,23 \
          output-port=@p \
          -- set Bridge sw0 mirrors=@m

Kontrolle

ovs-vsctl list Mirror

Erwartete Ausgabe (gekürzt):

  • name: mirror0
  • select_all: true
  • select_vlan: [1, 21, 22, 23]
  • output_port: port17

Dann ein Reboot

  • reboot

Check

  • ip a s mgmt
  • ip r s
  • cat /etc/resolv.conf

Nutzung

  • An port17 wird ein IDS oder ein Analyse-System (z. B. Wireshark/tcpdump) angeschlossen
  • Dort ist der gesamte Traffic der VLANs 1, 21, 22 und 23 sichtbar

Test

tcpdump -ni port17

Bei korrekter Konfiguration ist sofort Traffic sichtbar.

Cheat-Sheet: ovs-vsctl

Befehl Beschreibung
ovs-vsctl show Gesamte OVS-Konfiguration anzeigen
ovs-vsctl list-br Alle Bridges anzeigen
ovs-vsctl list-ports sw0 Alle Ports der Bridge sw0 anzeigen
ovs-vsctl add-br sw0 Bridge sw0 anlegen
ovs-vsctl del-br sw0 Bridge sw0 löschen
ovs-vsctl add-port sw0 port1 Port hinzufügen
ovs-vsctl del-port sw0 port1 Port löschen
ovs-vsctl set port port1 tag=22 Port in VLAN 22 setzen (Access)
ovs-vsctl set port port1 trunks=21,22,23 Trunk-VLANs setzen
ovs-vsctl set port port1 vlan_mode=native-untagged VLAN-Modus setzen
ovs-vsctl clear port port1 tag VLAN-Tag entfernen
ovs-vsctl clear port port1 trunks Trunks entfernen
ovs-vsctl list port port1 Details zu einem Port anzeigen
ovs-vsctl list interface port1 Interface-Details anzeigen
ovs-vsctl list Mirror Mirror-Konfiguration anzeigen
ovs-vsctl clear Bridge sw0 mirrors Mirror löschen
ovs-appctl fdb/show sw0 MAC-Tabelle anzeigen
ovs-ofctl dump-flows sw0 OpenFlow-Flows anzeigen

Auf der Firewall

VLAN-Paket installieren
apt install vlan
VLAN-Modul laden
modprobe 8021q
Modul beim Booten automatisch laden
echo 8021q | tee -a /etc/modules

/etc/network/interfaces

# MGMT
auto enp0s8
iface enp0s8 inet static
  address 172.27.2XX.1/24

# DMZ
auto enp0s8.21
iface enp0s8.21 inet static
  address 10.88.2XX.1/24
  vlan-raw-device enp0s8
  
# LAN
auto enp0s8.22
iface enp0s8.22 inet static
  address 172.26.2XX.1/24
  vlan-raw-device enp0s8

# SERVER
auto enp0s8.23
iface enp0s8.23 inet static
  address 10.2XX.1.1/24
  vlan-raw-device enp0s8

Abschluss

  • Maschine ausschalten
  • In Virtualbox die Schnittstellen 3 und 4 deaktiveren
  • Maschnine wieder hochfahren

Kontrolle

  • ip a s

Kabel umstecken

VM Interface Port
fw Adapter 2 port1
www Adapter 1 port2
mail Adapter 1 port3
ns Adapter 1 port4
proxy Adapter 1 port5
revproxy Adapter 1 port6
client Adapter 1 port10
smb Adapter 1 port14
ldap Adapter 1 port15

TODO

Firewall

Variablen ändern

/etc/nfttables-vars.conf

define WANDEV = enp0s3
define MGMTDEV  = enp0s8
define DMZDEV = enp0s8.21
define LANDEV = enp0s8.22
define SERVERDEV = enp0s8.23
Neu starten
  • nft -f /etc/nftables.conf

DHCP-Server

Interface ändern

vi /etc/kea/kea-dhcp4.conf

"interfaces": [ "enp0s8.22" ]
Neu starten
  • systemctl restart kea-dhcp4-server.service

Testen

Was muss man testen?

Debugging

ICMP auf dem virtuellen Interface von VLAN 22
  • tcpdump -ni enp0s8.22 icmp
ICMP auf dem Haupt Interface aber nur der VLAN 22 getaggt
  • tcpdump -ni enp0s8.22 icmp and vlan 22
ICMP auf dem Haupt Interface aber nur der VLAN 22 getaggt. Anzeige inklusive Header
  • tcpdump -ni enp0s8.22 -e icmp and vlan 22

Todo

Nameserver
  • ovs.it2XX.int IN A 172.27.2XX.2 im Nameserver anlegen.
Vom CLient aus Key hinterlegen
  • ssh-copy-id ovs
Vom CLient aus einlogen
  • ssh ovs