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-linux-network-namespaces-i/
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-bridges-and-vlans-in-unnamed-linux-network-namespaces-iv/
und (Befehle)
https://linux-blog.anracom.com/2017/11/28/fun-with-veth-devices-linux-bridges-and-vlans-in-unnamed-linux-network-namespaces-vi/

Grüsse
Andreas

-- 
The three chief virtues of a programmer are:
Laziness, Impatience and Hubris. -- Larry Wall

Attachment: signature.asc
Description: PGP signature

Antwort per Email an