Hallo zusammen,
ich wende mich nach tagelanger, erschöpfender Fehlersuche an die Community. Ich versuche, einen Roon-Musikserver (LXC) über ZeroTier erreichbar zu machen, stoße aber auf ein Konnektivitätsproblem, das nachweislich im Kernel-Netzwerkstack des Proxmox-Hosts liegt und selbst bei Verwendung des Proxmox SDN-Frameworks besteht.
Egal ob eine manuelle L2-Bridge oder das Proxmox SDN verwendet wird, der Zugriff über ZeroTier schlägt mit "Request Timeout" fehl. Eine tcpdump-Analyse beweist, dass der Proxmox-Host die Pakete vom ZeroTier-Netzwerk empfängt, sie aber intern verwirft, bevor sie die virtuelle Netzwerkschicht zum LXC erreichen.
Um einen manuellen Konfigurationsfehler auszuschließen, wurde das integrierte SDN-Framework von Proxmox getestet.
Meine Frage an die Experten:
Angesichts dieser erdrückenden Beweislast, die auf ein Problem im Proxmox-Kernel-Netzwerkstack hindeutet:
Ich bin für jeden tiefgreifenden technischen Einblick dankbar.
ich wende mich nach tagelanger, erschöpfender Fehlersuche an die Community. Ich versuche, einen Roon-Musikserver (LXC) über ZeroTier erreichbar zu machen, stoße aber auf ein Konnektivitätsproblem, das nachweislich im Kernel-Netzwerkstack des Proxmox-Hosts liegt und selbst bei Verwendung des Proxmox SDN-Frameworks besteht.
1. Zielsetzung & Anforderungen
- Ziel: Ein LXC-Container soll simultan über das physische LAN (192.168.178.0/24) und ein ZeroTier-Netzwerk (10.x.x.x/16) erreichbar sein.
- Anforderung (Nicht verhandelbar): Der Dienst muss aus Performance-Gründen in einem LXC-Container verbleiben. Ein Wechsel zu einer VM ist keine Option.
2. Systemumgebung
- Host-Hardware: Lenovo Mini-PC
- Hypervisor: Proxmox VE 8.4.1 (Kernel: 6.8.x) mit physischer NIC eno1.
- Host-IP (LAN): 192.168.178.x/24 (auf vmbr0)
- LXC-Container (ID 100): DietPi (Debian 12 basiert), für Roon Core.
- Router: AVM Fritz!Box 7590
- ZeroTier-Netzwerk: ID [ZT_NETWORK_ID], Subnetz 10.x.x.x/16
3. Das Kernproblem in Kürze
Egal ob eine manuelle L2-Bridge oder das Proxmox SDN verwendet wird, der Zugriff über ZeroTier schlägt mit "Request Timeout" fehl. Eine tcpdump-Analyse beweist, dass der Proxmox-Host die Pakete vom ZeroTier-Netzwerk empfängt, sie aber intern verwirft, bevor sie die virtuelle Netzwerkschicht zum LXC erreichen.
4. Chronologischer und thematischer Ablauf der Fehlersuche
Versuch 1: Der "saubere" manuelle L2-Bridge-Aufbau
- Host-Konfiguration (pve):
- ZeroTier-Client auf dem Host installiert, Netzwerk beigetreten, "Allow Ethernet Bridging" aktiviert.
- Eine neue Linux Bridge vmbr1 (ohne IP/Ports) wurde erstellt.
- Ein systemd-Timer hängt das ZT-Interface (zt-bridge-if) zuverlässig an vmbr1 an. brctl show bestätigt den Erfolg.
- LXC-Konfiguration (ID 100):
- Zwei Netzwerkkarten zugewiesen: net0 an vmbr1 (ZT-IP), net1 an vmbr0 (LAN-IP).
- ip a im LXC bestätigt, dass beide Interfaces UP sind und die korrekten IPs haben.
- Testergebnis & Forensischer Beweis:
- ping [LAN_IP_LXC] aus dem LAN: ERFOLGREICH.
- ping [ZT_IP_LXC] von einem Remote-Client: FEHLGESCHLAGEN (Request Timeout).
- Der tcpdump-Beweis: Ein simultaner Paket-Mitschnitt wurde auf dem Host gestartet:
- tcpdump -i zt-bridge-if -n icmp: Zeigte die ankommenden ICMP "echo request"-Pakete.
- tcpdump -i vmbr1 -n icmp: Zeigte KEINERLEI Pakete.
- Schlussfolgerung: Der Kernel empfängt die Pakete, verwirft sie aber, bevor sie die Bridge erreichen.
Versuch 2: Systematische Firewall-Deaktivierung
- Aktion: Alle bekannten Firewalls wurden deaktiviert: Proxmox Global, Proxmox LXC-Interface-Checkboxen und ufw im Gast.
- Ergebnis: Keine Veränderung.
Versuch 3: Tiefgreifendes Host-Kernel-Debugging
- Aktion 1 (Bridge Netfilter): net.bridge.bridge-nf-call-iptables wurde via sysctl auf 0 gesetzt.
- Aktion 2 (Hardware Offloading): tso, gso, gro wurden auf der physischen NIC eno1 mit ethtool -K deaktiviert.
- Aktion 3 (Hairpin Mode): Der Versuch, den hairpin mode zu aktivieren, wurde vom Kernel mit RTNETLINK answers: Operation not supported abgelehnt, was auf eine Limitierung im Bridge-Modul hindeutet.
Versuch 4: Verwendung des Proxmox SDN (Software-Defined Network)
Um einen manuellen Konfigurationsfehler auszuschließen, wurde das integrierte SDN-Framework von Proxmox getestet.
- Aktion 1 (SDN-Einrichtung): Eine Simple Zone und ein VNet mit eigenem Subnetz (z.B. 10.10.10.0/24) wurden im SDN-Menü erstellt.
- Aktion 2 (LXC-Konfiguration): Dem LXC wurde eine Netzwerkkarte zugewiesen, die direkt an das neue SDN-VNet angeschlossen war.
- Aktion 3 (Routing): ZeroTier wurde auf dem Host installiert und eine "Managed Route" in ZeroTier Central für das SDN-Subnetz (10.10.10.0/24) via Host-ZT-IP eingerichtet. IP-Forwarding wurde auf dem Host aktiviert.
- Ergebnis: Identisches Fehlerbild. Ein Ping von einem externen ZT-Client auf die SDN-IP des LXC (10.10.10.x) schlug fehl.
- Schlussfolgerung: Das Problem ist fundamentaler Natur und nicht auf eine fehlerhafte manuelle Konfiguration zurückzuführen. Selbst die Proxmox-eigene Abstraktionsebene scheitert.
Versuch 5: Alternative Architekturen & ZT-Dienst-Validierung
- 5a) ZeroTier direkt im LXC: Führt zu Destination Host Unreachable.
- 5b) Windows-VM als L3-Router: Selbst eine Windows-VM auf demselben Host zeigt das identische Fehlerbild.
- 5c) Validierung der Peer-Verbindungen: zerotier-cli peers auf dem Host zeigt für alle relevanten Peers den Status DIRECT. Dies schließt externe Netzwerkprobleme (Router-NAT, ISP-Blockaden) als Ursache aus.
5. Zusammenfassung der Erkenntnisse & die zentrale Frage
- Die Konfiguration ist korrekt, egal ob manuell oder via Proxmox SDN.
- Das Problem ist keine Firewall.
- Beweis 1: tcpdump belegt, dass der Proxmox-Host Pakete vom ZT-Interface empfängt, aber nicht an die virtuelle Netzwerkschicht (Bridge/VNet) weiterleitet.
- Beweis 2: Der Kernel meldet, dass der hairpin mode nicht unterstützt wird, was auf eine Limitierung im Bridge-Modul hindeutet.
- Beweis 3: Das Problem ist plattform-, nicht gast-spezifisch und tritt auch bei Verwendung des Proxmox SDN auf.
- Gegenprobe: Eine andere VPN-Lösung (Tailscale) funktioniert aus demselben LXC heraus einwandfrei.
Meine Frage an die Experten:
Angesichts dieser erdrückenden Beweislast, die auf ein Problem im Proxmox-Kernel-Netzwerkstack hindeutet:
- Ist dies ein bekannter Bug in der Bridge- oder VNet-Implementierung des Proxmox-Kernels 6.8.x im Zusammenspiel mit virtuellen Interfaces wie denen von ZeroTier?
- Gibt es eine Möglichkeit, die fehlende Unterstützung für den hairpin mode zu umgehen oder eine alternative Kernel-Einstellung, die den Paketfluss von einem virtuellen Interface zu einer Bridge/VNet erzwingen kann?
Ich bin für jeden tiefgreifenden technischen Einblick dankbar.