Hallo Luca...
On Sun, Apr 11, 2021 at 02:46:19PM +0200, Luca Bertoncello wrote:
Ich will eigentlich *alle* VLANs an die VM weiterleiten, obwohl es eventuell auch interessant wäre, nur *bestimmte* VLANs weiterzuleiten.
Mein erstes Versuch war ohne den "bridge-vlan-aware yes" und hat auch nicht funktioniert.
Hättest du vielleicht ein konkretes Beispiel, wie ich die Schnittstelle konfigurieren soll?
Bei der Konfiguration über /etc/network/interfaces kann ich Dir leider nicht wirklich weiter helfen... Ich habe mal manuell folgendes gemacht: (ich hab die ip link dev foo up Dinger und die ganze IP Adress Konfig mal weg gelassen)
Normale Bridge nicht vlan aware: (host) # ip link add name br0 type bridge
Fake Port veth1 auf dem tagged Pakete rein kommen (entspricht Deinem eth0) (host) # ip link add type veth (host) # ip link add link veth0 name veth0.100 type vlan id 100 (host) # ip link add link veth0 name veth0.101 type vlan id 101 (host) # ip link add link veth0 name veth0.102 type vlan id 102
Fake Port in die Bridge: (host) # ip l set dev veth1 master br0
Virtuelle Maschine # qemu-system-x86_64 -enable-kvm -machine q35 -m 2G -smp cpus=2 -display gtk -cdrom ~af/Downloads/alpine-virt-3.13.4-x86_64.iso -netdev tap,id=nd0,ifname=tap0 -device e1000,netdev=nd0
# ip l set dev tap0 master br0
Mit dem Setup kann ich im Gast der virtuellen Maschine ganz normal vlan Interfaces aufsetzen eg. (gast) # ip link add link eth0 name eth0.100 type vlan id 100 (gast) # ip link add link eth0 name eth0.101 type vlan id 101 (gast) # ip link add link eth0 name eth0.102 type vlan id 102
Nach up setzen und konfigurieren von IPs kann ich da vom Gast in den Host pingen und anders herum.
Die Bridge sieht so aus: # bridge vlan show port vlan ids br0 1 PVID Egress Untagged veth1 1 PVID Egress Untagged tap0 1 PVID Egress Untagged
Erst wenn ich vlan filtering auf der Bridge aktiviere: (host) # ip link set dev br0 type bridge vlan_filtering 1 dann geht nicht's mehr durch.
Man kann dann aber die beiden Ports (tap0 und veth1) als Trunk Ports konfigurieren. Dafür muss man das default vlan der Bridge entfernen und die beiden Ports für die erlaubten vlans konfigureren:
(host) # bridge vlan del vid 1 dev veth1 (host) # bridge vlan del vid 1 dev tap0 (host) # bridge vlan del dev br0 vid 1 self
Default vlan ist weg: (host) # bridge vlan show port vlan ids br0 None veth1 None tap0 None
Jetzt die vlans als tagged zu den Ports hinzufügen: (host) # bridge vlan add vid 100 tagged dev veth1 (host) # bridge vlan add vid 100 tagged dev tap0 (host) # bridge vlan add vid 102 tagged dev veth1 (host) # bridge vlan add vid 102 tagged dev tap0
(host) # bridge vlan show port vlan ids br0 None veth1 100 102 tap0 100 102
Damit gehen dann im Gast auch wieder eth0.100 und eth0.102. VLan 101 ist weiterhin dicht.
Du findest hier: https://linux-blog.anracom.com/2017/10/30/fun-with-veth-devices-in-unnamed-l... Ne sehr gute Erklärung wie das ganze funktioniert. Insbesondere in den Teilen: (Grundlagen) https://linux-blog.anracom.com/2017/11/20/fun-with-veth-devices-linux-bridge... und (Befehle) https://linux-blog.anracom.com/2017/11/28/fun-with-veth-devices-linux-bridge...
Grüsse Andreas