FreeBSD VLAN mini HowTo

Autor: Tilman Keskinöz
Zuletzt geändert: 2007-05-17

Englisch Version

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 Support
hinzugefü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_device
Seit FreeBSD 5.3 kann ein VLAN interface auch mit einem einzigen Befehl erzeugt werden:
ifconfig vlan_device.vlan_id create
parent_device ist die Netzwerkkarte zu der das VLAN gehört.

Beispiel:

ifconfig vlan 0 vlan 34 vlandev xl0
Anschliessend wird noch eine IP-adresse vergeben:
ifconfig vlan0 inet 128.130.34.35 netmask 255.255.255.128
ifconfig zeigt jetzt folgende Ausgabe:
xl0: flags=8843 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
Um diese Konfiguration automatisch beim Systemstart herzustellen fügt man folgendes in die /etc/rc.conf ein:
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,336
3/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/28s
Mit
show trunk
kann 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

Danke an:


© 2001-2007 Tilman Keskinöz $Id: vlan_de.html,v 1.8 2012/06/11 06:05:54 arved Exp $