VLAN mit Linux und Open vSwitch: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
| (37 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
=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 == | == Zielbeschreibung == | ||
{| class="wikitable" | {| class="wikitable" | ||
| Zeile 49: | Zeile 53: | ||
| 23 || 10.2XX.1.0/24 || SERVER | | 23 || 10.2XX.1.0/24 || SERVER | ||
|} | |} | ||
== Plan == | == Plan == | ||
{{#drawio:vlan-linux-cisco}} | {{#drawio:vlan-linux-cisco}} | ||
= Zum Open vSwitch = | |||
ssh localhost -p 2222 | ssh localhost -p 2222 | ||
oder im Notfall | oder im Notfall | ||
nc localhost | nc localhost 2323 | ||
;Logindaten | ;Logindaten | ||
| Zeile 99: | Zeile 66: | ||
*pass: kit | *pass: kit | ||
*root: mit '''sudo -i''' | *root: mit '''sudo -i''' | ||
===Ports auflisten=== | |||
ovs-vsctl show | |||
=== VLAN zuordnen === | === VLAN zuordnen === | ||
| Zeile 123: | Zeile 93: | ||
=== VLAN-Interfaces anlegen === | === 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 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 dmz tag=21 -- set interface dmz type=internal | ||
| Zeile 129: | Zeile 100: | ||
=== MGMT-IP setzen === | === MGMT-IP setzen === | ||
;Ergänzen | |||
nano /etc/network/interfaces | |||
auto mgmt | auto mgmt | ||
iface mgmt inet static | iface mgmt inet static | ||
address 172.27.2XX.2/24 | address 172.27.2XX.2/24 | ||
gateway 172.27.2XX.1 | gateway 172.27.2XX.1 | ||
dns-nameservers 10.88.2XX.21 | dns-nameservers 10.88.2XX.21 | ||
dns-search it2XX.int | dns-search it2XX.int | ||
== Mirror-Port konfigurieren (SPAN) == | == Mirror-Port konfigurieren (SPAN) == | ||
| Zeile 146: | Zeile 114: | ||
ovs-vsctl -- --id=@p get port port17 \ | ovs-vsctl -- --id=@p get port port17 \ | ||
-- --id=@m create Mirror name=mirror0 \ | -- --id=@m create Mirror name=mirror0 \ | ||
select-vlan= | select-all=true \ | ||
select-vlan=21,22,23 \ | |||
output-port=@p \ | output-port=@p \ | ||
-- set Bridge sw0 mirrors=@m | -- set Bridge sw0 mirrors=@m | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Kontrolle === | === Kontrolle === | ||
<pre> | |||
ovs-vsctl list Mirror | |||
</pre> | |||
Erwartete Ausgabe (gekürzt): | Erwartete Ausgabe (gekürzt): | ||
*name: mirror0 | * name: mirror0 | ||
* | * select_all: true | ||
* | * select_vlan: [21, 22, 23] | ||
* output_port: port17 | |||
===Dann ein Reboot=== | |||
*reboot | |||
===Check=== | |||
*ip a s mgmt | |||
*ip r s | |||
*cat /etc/resolv.conf | |||
=== Nutzung === | === Nutzung === | ||
*An '''port17''' wird ein IDS oder ein Analyse-System (z. B. Wireshark/tcpdump) angeschlossen | * An '''port17''' wird ein IDS oder ein Analyse-System (z. B. Wireshark/tcpdump) angeschlossen | ||
*Dort ist der gesamte Traffic der VLANs | * Dort ist der gesamte Traffic der VLANs 21, 22 und 23 sichtbar | ||
=== Test === | |||
<syntaxhighlight lang="bash"> | |||
tcpdump -ni port17 | |||
</syntaxhighlight> | |||
Bei korrekter Konfiguration ist sofort Traffic sichtbar. | |||
== Cheat-Sheet: ovs-vsctl == | |||
{| class="wikitable" | |||
! Befehl !! Beschreibung | |||
|- | |||
| <code>ovs-vsctl show</code> || Gesamte OVS-Konfiguration anzeigen | |||
|- | |||
| <code>ovs-vsctl list-br</code> || Alle Bridges anzeigen | |||
|- | |||
| <code>ovs-vsctl list-ports sw0</code> || Alle Ports der Bridge sw0 anzeigen | |||
|- | |||
| <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 | |||
|} | |||
= 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 === | |||
<syntaxhighlight lang="text"> | |||
# 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 | |||
# LAN | |||
auto enp0s8.22 | |||
iface enp0s8.22 inet static | |||
address 172.26.2XX.1/24 | |||
== | # SERVER | ||
auto enp0s8.23 | |||
iface enp0s8.23 inet static | |||
address 10.2XX.1.1/24 | |||
</syntaxhighlight> | |||
== Abschluss == | |||
*Maschine ausschalten | |||
*In Virtualbox die Schnittstellen 3 und 4 deaktiveren | |||
*Maschnine wieder hochfahren | |||
== Kontrolle == | |||
*ip a s | |||
== Kabel umstecken == | |||
{| class="wikitable" | |||
! 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 == | == TODO == | ||
===Firewall=== | |||
*DHCP-Server | ;Variablen ändern | ||
/etc/nftables-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 | |||
Aktuelle Version vom 1. Oktober 2026, 12:41 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=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: [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 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
# LAN
auto enp0s8.22
iface enp0s8.22 inet static
address 172.26.2XX.1/24
# SERVER
auto enp0s8.23
iface enp0s8.23 inet static
address 10.2XX.1.1/24
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 |
| 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/nftables-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
