Hallo!
Ich möchte unter openSUSE 11.4 ein VLAN einrichten. Der Server (test1) ist als XEN-Host konfiguriert, daher hat das Interface eth0 keine Konfiguration, sondern wird nur als Basis für das Bridge-Device br0 verwendet.
Für mich wäre es logisch, das VLAN-Interface auf Basis des physischen Interface eth0 zu definieren, also so:
test1 # ip link add link eth0 name vlan200 type vlan id 200
test1 # ip link set vlan200 up
test1 # ip addr add 192.168.200.15/24 dev vlan200
Wenn ich das so konfiguriere und dann einen Ping zu 192.168.200.3 raus schicke, sehe ich auf dem Zielsystem mittels tcpdump auf dem physischen Interface die ARP-Requests und die zugehörigen Responses mit korrektem VLAN-Tag:
test2 # tcpdump -e -i eth0 arp
01:51:28.434569 00:19:66:0a:b0:45 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 60: vlan 200, p 0, ethertype ARP, Request who-has 192.168.200.3 tell 192.168.200.15, length 42
01:51:28.434585 00:25:22:17:d5:38 (oui Unknown) > 00:19:66:0a:b0:45 (oui Unknown), ethertype 802.1Q (0x8100), length 46: vlan 200, p 0, ethertype ARP, Reply 192.168.200.3 is-at 00:25:22:17:d5:38 (oui Unknown), length 28
Auf dem VLAN-Interface am Zielsystem sehe ich die Pakete erwartungsgemäß ohne VLAN-Tag:
test2 # tcpdump -e -i vlan200 arp
01:51:35.434383 00:19:66:0a:b0:45 (oui Unknown) > Broadcast, ethertype ARP (0x0806), length 56: Request who-has 192.168.200.3 tell 192.168.200.15, length 42
01:51:35.434395 00:25:22:17:d5:38 (oui Unknown) > 00:19:66:0a:b0:45 (oui Unknown), ethertype ARP (0x0806), length 42: Reply 192.168.200.3 is-at 00:25:22:17:d5:38 (oui Unknown), length 28
Im Quellsystem sehe ich auf dem physischen Interface ebenfalls die ARP-Requests und die Responses:
test1 # tcpdump -e -i eth0 arp
01:58:08.479502 00:19:66:0a:b0:45 (oui Unknown) > Broadcast, ethertype 802.1Q (0x8100), length 46: vlan 200, p 0, ethertype ARP, Request who-has 192.168.200.3 tell 192.168.200.15, length 28
01:58:08.479574 00:25:22:17:d5:38 (oui Unknown) > 00:19:66:0a:b0:45 (oui Unknown), ethertype 802.1Q (0x8100), length 64: vlan 200, p 0, ethertype ARP, Reply 192.168.200.3 is-at 00:25:22:17:d5:38 (oui Unknown), length 46
Allerdings werden diese anscheinend nicht an das VLAN-Interface weitergegeben:
test1 # tcpdump -e -i vlan200 arp
01:59:59.504499 00:19:66:0a:b0:45 (oui Unknown) > Broadcast, ethertype ARP (0x0806), length 42: Request who-has 192.168.200.3 tell 192.168.200.15, length 28
02:00:00.507498 00:19:66:0a:b0:45 (oui Unknown) > Broadcast, ethertype ARP (0x0806), length 42: Request who-has 192.168.200.3 tell 192.168.200.15, length 28
Wenn ich auf test1 das VLAN auf Basis des Bridge-Devices br0 definiere, funktioniert es wie erwartet. Allerdings ist mir nicht klar, warum das so ist. Die Tatsache, dass über das physische Interface eth0 noch einmal eine Bridge gelegt ist, dürfte doch für das VLAN keine Rolle spielen.
Wie sieht es denn dann aus, wenn ich sowohl den Trunk-Port als auch das VLAN an eine virtuelle Maschine weitergeben möchte? Muss ich dann das VLAN-Interface vlan200 auf Basis von br0 definieren und dann über vlan200 noch einmal ein Bridge-Device br1 anlegen, das dann die Gastsysteme bekommen?
Für Aufklärung wäre ich dankbar!
Vielen Dank und viele Grüße
Christian