Du bist nicht angemeldet.

#1 18.06.2020 18:20:48

Ähm Sekunde?
Mitglied

VMs über Bridge mit lokaler IP-Adresse, danach VMs ohne Internet

Moin moin,

ich benötige mal einen Denkanstoß, da ich derzeit versuche eine Bridge per systemd-networkd einzurichten und offenbar grundsätzliches etwas missverstanden haben muss. Folgende "Ist"-Szenario (IP-Adressen beisoielhaft):

  • Server mit NIC eno1, besitzt drei direkt zugewiesene IP-Adressen: 1.1.1.1, 1.1.1.2, 1.1.1.3

  • IP 1.1.1.1 ist die SSH-IP des Servers und wird z.B. auch für SMB verwendet

  • IP 1.1.1.2 und 1.1.1.3 werden von zwei Docker-Containern verwendet um z.B. einen reverse proxy zu stellen (ala 1.1.1.2:80->80/tcp, 1.1.1.2:443->443/tcp)

  • Zusätzlich läuft auf dem Server eine VM per KVM mit IP 1.1.1.4, als Network source wird "Host device eno1: macvtap" im Bridge-Mode verwendet

Bild zur Verdeutlichung:
fA5Onnb.png

root@black-hole ~ # ip addr
[...]
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 0c:c4:7a:7c:a6:64 brd ff:ff:ff:ff:ff:ff
    altname enp1s0
    inet 1.1.1.1/24 brd 10.0.1.255 scope global eno1
       valid_lft forever preferred_lft forever
    inet 1.1.1.2/24 brd 10.0.1.255 scope global secondary eno1
       valid_lft forever preferred_lft forever
    inet 1.1.1.3/24 brd 10.0.1.255 scope global secondary eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::ec4:7aff:fe7c:a664/64 scope link 
       valid_lft forever preferred_lft forever
[...]

Auf die zuletzt genannte VM kann vom LAN per SSH zugreifen ohne das die IP eno1 direkt zugewiesen ist und alle genannten Container/VMs können frei aufs Internet zugreifen.

Nun wollte ich mich von Docker lösen und auf LXC/LXD umstellen. Die ich teilweise Container mit eigener dedizierten IP betreiben möchte, wollte ich dies über eine Bridge realisieren. Als Idee habe ich diesen Blog-Artikel genommen.

Im gleichen Zuge habe ich von netctl auf systemd-networkd umgestellt, da ich es einfach mal aufprobieren wollte, da netctl ja eine reine Insel-Lösung von Arch Linux ist.

Also eingelesen und ähnlich wie hier eine Bridge mit systemd-networkd realisiert:

  • Bridge als netdev angelegt

  • eno1 der Bridge zugewiesen

  • IP-Adressen, Gateway etc. der Bridge zugewiesen

Erstes Ergebnis: Host hat nach einem Reboot weiterhin Internet und ist im LAN vollkommen erreichbar.

Nun die Probleme:

  • Docker-Container und VM haben keinen Zugriff auf das Internet, jedoch Zugriffs aufs LAN: So kann ich den reverse proxy aus dem LAN ansprechen, dieser kann auch Anfragen an 1.1.1.4 weiterreichen

  • Die VM mit IP 1.1.1.4, welche nicht als IP der Bridge zugewiesen ist, kann ich vom LAN nun jedoch nicht mehr direkt erreichen. Eine SSH-Verbindung funktioniert z.B. vom Host in die VM aus problemlos

Grundsätzlich scheinen also zwei Probleme vorzulegen:

  • Die Bridge lässt nicht allen Traffic durch

  • Werden IP-Adressen von VMs "hinter der Bridge" genutzt, sind die nur auf dem Host sichtbar/erreichbar

Grundsätzlich vermute ich hier ein Verständnisproblem bei der Bridge, Firewall oder allgemeinen Routing-Angelegenheiten, weswegen ich hier nun um Hilfe bitten muss. Da ich nun nicht weiß, was ich alles posten soll und nicht tausende Zeilen an Logs, Configs etc. posten möchte, würde ich darum bitten, relevante Dinge einfach anzufragen.

Offline

#2 19.06.2020 05:56:40

segfault
Mitglied

Re: VMs über Bridge mit lokaler IP-Adresse, danach VMs ohne Internet

Also erst einmal: Eine Bridge arbeitet auf Layer 2 und kennt nur Ethernetframes. Von IP Adressen hat sie keine Ahnung. Kommt ein Ethernetframe an einem Port an, kuckt die Bridge in eine Tabelle, an welchen Port das Ziel angeschlossen ist, und sendet das Ethernetframe über diesen Port raus. Gibt es keinen Match, d.h. die Bridge kennt das Ziel nicht, wird das Frame über alle Ports rausgeschickt. Alle Bridges/Switches auf der gesamten Welt arbeiten so.

Zu Deinen zwei Problemen:

Hosts haben untereinander Konnektivität, kommen aber nicht ins Internet. Routing auf dem Host überprüfen. Ist das default Gateway korrekt gesetzt? Kann es errreicht werden? Kommen die Pakete dort an und werden sie dort korrekt weiterverarbeitet? Alles mit ping und tcpdump gut zu prüfen.

Hosts haben untereinader keine Konnektivität. Kann eigentlich/theoretisch nicht sein (siehe Funktionsweise Bridge). Das hört sich für mich an wie falsche/kaputte/dysfunktionele ebtables/iptables Funktionalität. Ich würde mal in diese Richtung gebuggen.

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums