FreeBSD unterstützt VLANs nach IEEE 802.1Q. Dazu folgende Beispielkonfiguration:
FreeBSD-Host ---Ethernet--- Cisco Switch
Zunächst muss im Kernel die Option
pseudo-device vlan 2 # IEEE 802.1Q VLAN Supporthinzugefügt werden. Die 2 ist die Anzahl der VLAN-devices. Danach muss der Kernel neu kompiliert und installiert werden (siehe Handbuch). (Nicht verwirren lassen, pseudo-devices haben keinen Eintrag unter /dev).
Seit Dezember 2001 muss man keine Anzahl mehr Angeben. Man erzeugt das Vlandevice dynamisch mit:
ifconfig vlan_device create
Anschliessend wird das VLAN interface nach folgendem Schema konfiguriert:
ifconfig vlan_device vlan vlan_id vlandev parent_deviceSeit FreeBSD 5.3 kann ein VLAN interface auch mit einem einzigen Befehl erzeugt werden:
ifconfig vlan_device.vlan_id createparent_device ist die Netzwerkkarte zu der das VLAN gehört.
Beispiel:
ifconfig vlan 0 vlan 34 vlandev xl0Anschliessend wird noch eine IP-adresse vergeben:
ifconfig vlan0 inet 128.130.34.35 netmask 255.255.255.128ifconfig zeigt jetzt folgende Ausgabe:
xl0: flags=8843Um diese Konfiguration automatisch beim Systemstart herzustellen fügt man folgendes in die /etc/rc.conf ein:mtu 1500 inet 128.130.34.35 netmask 0xffffff80 broadcast 128.130.34.127 inet6 fe80::204:76ff:fe12:acba%xl0 prefixlen 64 scopeid 0x1 ether 00:04:76:12:ac:ba media: autoselect (100baseTX ) status: active supported media: autoselect 100baseTX 100baseTX 10baseT/UTP 10baseT/UTP 100baseTX vlan0: flags=8843 mtu 1496 inet 128.130.34.35 netmask 0xffffff00 broadcast 128.130.34.255 inet6 fe80::204:76ff:fe12:acba%vlan0 prefixlen 64 scopeid 0x3 ether 00:04:76:12:ac:ba vlan: 34 parent interface: xl0
cloned_interfaces="vlan0" #Hierfür benötigt man ein aktulles STABLE. #network_interfaces="lo0 vlan0" ifconfig_vlan0="inet 128.130.34.35 netmask 255.255.255.128 vlan 34 vlandev xl0" #Achtung: Wenn man dem VLAN Parent Device keine IP Adresse zuordnet, muss man #das Device explizit auf "up" setzten: ifconfig_xl0="up"Alternativ kann man auch ein Skript mit dem Namen /etc/start_if.xl0 (xl0 ist das das Parentdevice in meinem Beispiel) anlegen, in das man die benötigten Befehle schreibt. Das ist aber nicht so elegant. Folgende Konfiguration habe ich auf einem Cisco Switch mit Catalyst Betriebsystem vorgenommen:
switch#(enable) clear trunk 3/28 1-33,37-333,335,337-1005 switch#(enable) set trunk 3/28 on dot1q 34-36,334,3363/28 ist in diesem Beispiel der Port an dem der FreeBSD Rechner hängt. Die Erste Zeile verbietet einige VLANs, die zweite erlaubt VLANs.
Verbindet man jetzt die NIC mit dem Port, sollte auf der CISCO Konsole folgende Meldung erscheinen:
2001 Jul 30 17:42:05 MDT +02:00 %DTP-5-TRUNKPORTON:Port 3/28 has become dot1q trunk 2001 Jul 30 17:42:18 MDT +02:00 %PAGP-5-PORTTOSTP:Port 3/28 joined bridge port 3/28sMit
show trunkkann man das Ergebnis kontrollieren.
Auf einem Switch mit IOS Betriebssystem konfiguriert man den Trunk mit folgenden Befehlen:
configure interface FastEthernet0/11 switchport trunk encapsulation dot1q switchport trunk allowed vlan 34 switchport mode trunk
Mit den VLAN-pseudodevices ist es jetzt möglich, einen VLAN-Router zu ersetzten.
Lob, Kritik, Ergänzungen und Korrekturen sind natürlich erwünscht: arved@FreeBSD.org