Verbinden von Servern mit einem VLAN
Diese Anleitung erklärt, wie VLANs auf Linux-Servern konfiguriert werden, um Netzwerkverkehr zu isolieren und zu kontrollieren. Die folgenden Schritte decken Ubuntu 22.04, Debian 11 sowie AlmaLinux 9 / Rocky Linux 9 ab.
Stellen Sie vor der Konfiguration von VLANs auf dem Server sicher, dass der Switch-Port korrekt konfiguriert ist. Für getaggte VLANs muss der Switch-Port die erforderlichen VLAN-IDs zulassen. Für ungetaggten Datenverkehr muss sich der Port im Access-Modus befinden und dem entsprechenden VLAN zugewiesen sein.
Kernelmodul 8021q überprüfen
Überprüfen Sie bei allen Distributionen vor der VLAN-Konfiguration, ob das Kernelmodul 8021q geladen ist:
lsmod | grep 8021q
Wenn das Modul nicht geladen ist, führen Sie Folgendes aus:
sudo modprobe 8021q
Um das Modul dauerhaft zu aktivieren, fügen Sie es zu /etc/modules hinzu:
echo "8021q" | sudo tee -a /etc/modules
Ubuntu 22.04
Ubuntu 22.04 verwendet netplan für die Netzwerkkonfiguration.
Netzwerkschnittstelle ermitteln
Führen Sie den folgenden Befehl aus, um den Namen der Schnittstelle zu ermitteln:
ip link show
In den folgenden Beispielen lautet der Name der Schnittstelle enp0s8.
Netzwerk für einen ungetaggten Access-Port konfigurieren
In diesem Abschnitt wird eine statische IP-Adresse direkt der physischen Schnittstelle zugewiesen, ohne eine VLAN-Unterschnittstelle zu erstellen.
Öffnen Sie die netplan-Konfigurationsdatei:
sudo nano /etc/netplan/*.yaml
Fügen Sie die folgende Konfiguration hinzu. Verwenden Sie auf jedem Server unterschiedliche IP-Adressen:
Server 1:
network: version: 2 ethernets: enp0s8: dhcp4: no addresses: - 192.168.1.1/24 routes: - to: default via: 192.168.1.254
Server 2:
network: version: 2 ethernets: enp0s8: dhcp4: no addresses: - 192.168.1.2/24 routes: - to: default via: 192.168.1.254
Der Parameter gateway4 ist seit netplan 0.100 veraltet und erzeugt eine Warnung. Verwenden Sie stattdessen routes: wie oben gezeigt.
Testen Sie die Konfiguration vor der Anwendung. Der Befehl wartet bis zu 120 Sekunden auf eine Bestätigung und setzt die Konfiguration anschließend automatisch zurück, wenn keine Bestätigung erfolgt. Dies ist besonders bei Remote-Servern hilfreich:
sudo netplan try
Wenn die Konfiguration gültig ist, wenden Sie sie an:
sudo netplan apply
Überprüfen Sie, ob die Adresse zugewiesen wurde:
ip addr show enp0s8
Getaggte VLANs konfigurieren
Öffnen Sie die netplan-Konfigurationsdatei und fügen Sie die VLAN-Schnittstellen hinzu. Verwenden Sie für jeden Server und jedes VLAN unterschiedliche IP-Adressen:
Server 1:
network: version: 2 ethernets: enp0s8: dhcp4: no vlans: vlan10: id: 10 link: enp0s8 addresses: - 192.168.10.1/24 vlan20: id: 20 link: enp0s8 addresses: - 192.168.20.1/24
Server 2:
network: version: 2 ethernets: enp0s8: dhcp4: no vlans: vlan10: id: 10 link: enp0s8 addresses: - 192.168.10.2/24 vlan20: id: 20 link: enp0s8 addresses: - 192.168.20.2/24
Die Verwendung doppelter IP-Adressen verursacht einen Konflikt. Jeder Server muss in jedem VLAN eine eindeutige IP-Adresse besitzen.
Normalerweise sollte nur eine VLAN-Schnittstelle ein Standard-Gateway besitzen. Die Zuweisung eines Gateways zu mehreren VLAN-Schnittstellen kann zu Routing-Problemen führen, sofern kein erweitertes Routing konfiguriert ist.
Testen und übernehmen Sie die Konfiguration:
sudo netplan try sudo netplan apply
Überprüfen Sie das Ergebnis:
ip addr
Um zu überprüfen, ob VLAN-Tagging korrekt funktioniert:
ip -d link show vlan10 ip -d link show vlan20
Überprüfen Sie die Verbindung:
ping 192.168.10.2 ping 192.168.20.2
Debian 11
Debian 11 verwendet die Datei /etc/network/interfaces für die Netzwerkkonfiguration.
VLAN-Paket installieren
Bei einer sauberen Debian-Installation installieren Sie vor der Konfiguration der VLAN-Schnittstellen das Paket vlan:
sudo apt update sudo apt install vlan
Netzwerkschnittstelle ermitteln
ip link show
In den folgenden Beispielen lautet der Name der Schnittstelle enp0s8.
Netzwerk für einen ungetaggten Access-Port konfigurieren
In diesem Abschnitt wird eine statische IP-Adresse direkt der physischen Schnittstelle zugewiesen, ohne eine VLAN-Unterschnittstelle zu erstellen.
Fügen Sie auf jedem Server Folgendes zu /etc/network/interfaces hinzu.
Der Befehl ip addr add weist eine Adresse nur vorübergehend zu und übersteht keinen Neustart. Verwenden Sie die untenstehende persistente Konfiguration, um die Einstellung dauerhaft zu machen.
Server 1:
auto enp0s8 iface enp0s8 inet static address 192.168.1.1/24 gateway 192.168.1.254
Server 2:
auto enp0s8 iface enp0s8 inet static address 192.168.1.2/24 gateway 192.168.1.254
Übernehmen Sie die Konfiguration ohne Neustart:
sudo systemctl restart networking
Überprüfen Sie, ob die Adresse aktiv ist:
ip addr
Überprüfen Sie, ob die Server einander erreichen können:
ping 192.168.1.2
Getaggte VLANs konfigurieren
Fügen Sie die VLAN-Schnittstellen auf jedem Server zu /etc/network/interfaces hinzu. Verwenden Sie für jeden Server und jedes VLAN unterschiedliche IP-Adressen.
Server 1:
auto enp0s8.10 iface enp0s8.10 inet static address 192.168.10.1/24 gateway 192.168.10.254 auto enp0s8.20 iface enp0s8.20 inet static address 192.168.20.1/24
Server 2:
auto enp0s8.10 iface enp0s8.10 inet static address 192.168.10.2/24 gateway 192.168.10.254 auto enp0s8.20 iface enp0s8.20 inet static address 192.168.20.2/24
Übernehmen Sie die Konfiguration:
Das Neustarten des Netzwerkdienstes auf einem Remote-Server kann die aktuelle SSH-Verbindung unterbrechen.
sudo systemctl restart networking
Überprüfen Sie das Ergebnis:
ip addr
Um zu überprüfen, ob VLAN-Tagging korrekt funktioniert:
ip -d link show enp0s8.10 ip -d link show enp0s8.20
Überprüfen Sie die Verbindung:
ping 192.168.10.2 ping 192.168.20.2
AlmaLinux 9 / Rocky Linux 9
AlmaLinux 9 und Rocky Linux 9 verwenden NetworkManager für die Netzwerkkonfiguration. Das empfohlene Werkzeug zur Verwaltung von Verbindungen ist nmcli. Der veraltete Ansatz über /etc/sysconfig/network-scripts/ wird in RHEL-9-basierten Distributionen nicht unterstützt.
Netzwerkschnittstelle ermitteln
nmcli device status
In den folgenden Beispielen lautet der Name der Schnittstelle enp0s8.
Vorhandene Verbindungen überprüfen
Bevor Sie eine neue Verbindung hinzufügen, prüfen Sie, ob bereits ein Verbindungsprofil für die Schnittstelle vorhanden ist:
nmcli connection show
Wenn ein vorhandenes Profil auf enp0s8 aktiv ist, entfernen Sie es, um Konflikte zu vermeiden. Verwenden Sie den Profilnamen exakt so, wie er in der obigen Ausgabe angezeigt wird. Überspringen Sie diesen Schritt, wenn das vorhandene Profil von Ihrem Hosting-Anbieter oder cloud-init erstellt wurde:
nmcli connection delete "Wired connection 1"
Netzwerk für einen ungetaggten Access-Port konfigurieren
Weisen Sie der physischen Schnittstelle eine statische IP-Adresse zu.
Server 1:
nmcli connection add type ethernet con-name "enp0s8-primary" ifname enp0s8 \ ipv4.method manual ipv4.addresses 192.168.1.1/24 \ ipv4.gateway 192.168.1.254 \ connection.autoconnect yes nmcli connection up enp0s8-primary
Server 2:
nmcli connection add type ethernet con-name "enp0s8-primary" ifname enp0s8 \ ipv4.method manual ipv4.addresses 192.168.1.2/24 \ ipv4.gateway 192.168.1.254 \ connection.autoconnect yes nmcli connection up enp0s8-primary
Überprüfen Sie, ob die Adresse zugewiesen wurde:
ip addr show enp0s8
Überprüfen Sie die Verbindung zwischen den Servern:
ping 192.168.1.2
Getaggte VLANs konfigurieren
Erstellen Sie eine VLAN-Schnittstelle über der physischen Schnittstelle. Verwenden Sie auf jedem Server für jedes VLAN unterschiedliche IP-Adressen.
Server 1:
nmcli connection add type vlan con-name vlan10 ifname enp0s8.10 \ vlan.parent enp0s8 vlan.id 10 \ ipv4.method manual ipv4.addresses 192.168.10.1/24 \ connection.autoconnect yes nmcli connection add type vlan con-name vlan20 ifname enp0s8.20 vlan.parent enp0s8 vlan.id 20 ipv4.method manual ipv4.addresses 192.168.20.1/24 connection.autoconnect yes nmcli connection up vlan10 nmcli connection up vlan20
Server 2:
nmcli connection add type vlan con-name vlan10 ifname enp0s8.10 \ vlan.parent enp0s8 vlan.id 10 \ ipv4.method manual ipv4.addresses 192.168.10.2/24 \ connection.autoconnect yes nmcli connection add type vlan con-name vlan20 ifname enp0s8.20 vlan.parent enp0s8 vlan.id 20 ipv4.method manual ipv4.addresses 192.168.20.2/24 connection.autoconnect yes nmcli connection up vlan10 nmcli connection up vlan20
Die Verwendung doppelter IP-Adressen verursacht einen Konflikt. Jeder Server muss in jedem VLAN eine eindeutige IP-Adresse besitzen.
Überprüfen Sie das Ergebnis:
ip addr
Um zu überprüfen, ob VLAN-Tagging korrekt funktioniert:
ip -d link show enp0s8.10 ip -d link show enp0s8.20
Überprüfen Sie die Verbindung:
ping 192.168.10.2 ping 192.168.20.2
Fehlerbehebung
Wenn VLAN-Schnittstellen nicht angezeigt werden oder keinen Datenverkehr empfangen:
- Überprüfen Sie, ob der Switch-Port die erforderlichen VLAN-IDs zulässt.
- Stellen Sie sicher, dass der vSwitch oder die Portgruppe des Hypervisors für die Weiterleitung von VLAN-Tags konfiguriert ist.
- Stellen Sie sicher, dass in der Konfiguration die richtige übergeordnete Schnittstelle angegeben ist.
- Überprüfen Sie, ob das Kernelmodul 8021q geladen ist: lsmod | grep 8021q.