Proxmox, Wireguard LXC, Multicast Avahi richtig konfiguriert? Möglich?

parrotle

Cadet 4th Year
Registriert
Mai 2018
Beiträge
102
Hallo,

ich habe auf Proxmox einen LXC mit Wireguard am laufen. Funktioniert perfekt, egal ob WLAN oder über das Mobilfunknetz. Einziger Nachteil: alle *.local Rechnernamen werden nicht mehr aufgelöst. Das ist insofern etwas problematisch, da ich im Netzwerk keinen IP Bereich zuweisen kann, auf DHCP angewiesen bin und somit gerne die Multicast Funktion der einzelnen Rechner nutzen möchte. Im lokalen Netz funktioniert das ja auch einwandfrei. Nur sobald Wireguard verbunden ist, natürlich nicht mehr. Das Internet gibt nicht viel her zu dem Thema, zwei brauchbare Diskussionen und da bin ich schon durch:

https://www.reddit.com/r/WireGuard/comments/g80bxf/comment/hr4yp4s/ und https://github.com/lathiat/avahi/issues/262.

Hier mal meine Einstellungen und de Konsolenausgaben:
Server wg con
Code:
[Interface]
Address = 10.7.0.1/24
PrivateKey = x
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth>
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o e>
PostUp = ip link set dev wg0 multicast on

# BEGIN_PEER Handy
[Peer]
PublicKey = x
PresharedKey = x
AllowedIPs = 10.7.0.2/32
# END_PEER Handy

peer conf:
Code:
[Interface]
Address = 10.7.0.2/24, fddd:2c4:2c4:2c4::2/64
DNS = 192.168.100.254
PrivateKey =

[Peer]
PublicKey = x
PresharedKey = x
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = x.x:51820
PersistentKeepalive = 25

Avahi conf:
Avahi Server
Code:
[server]
use-ipv4=yes
use-ipv6=yes
allow-interfaces=eth0,wg0
allow-point-to-point=yes

[reflector]
enable-reflector=yes


systemctl status wg-quick@wg0.service
Code:
wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/wg-quick@wg0.service.d
             `-boringtun.conf
     Active: active (exited) since Sat 2022-10-15 15:14:21 CEST; 23min ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 1035 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 1035 (code=exited, status=0/SUCCESS)
        CPU: 70ms

Oct 15 15:14:21 pWireguard systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Oct 15 15:14:21 pWireguard wg-quick[1035]: [#] ip link add wg0 type wireguard
Oct 15 15:14:21 pWireguard wg-quick[1035]: [#] wg setconf wg0 /dev/fd/63
Oct 15 15:14:21 pWireguard wg-quick[1035]: [#] ip -4 address add 10.7.0.1/24 dev wg0
Oct 15 15:14:21 pWireguard wg-quick[1035]: [#] ip link set mtu 1420 up dev wg0
Oct 15 15:14:21 pWireguard wg-quick[1035]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEP>
Oct 15 15:14:21 pWireguard wg-quick[1035]: [#] ip link set dev wg0 multicast on
Oct 15 15:14:21 pWireguard systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

systemctl status avahi-daemon.service
Code:
avahi-daemon.service - Avahi mDNS/DNS-SD Stack
     Loaded: loaded (/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-10-15 15:41:37 CEST; 4s ago
TriggeredBy: * avahi-daemon.socket
   Main PID: 1086 (avahi-daemon)
     Status: "avahi-daemon 0.8 starting up."
      Tasks: 2 (limit: 8878)
     Memory: 820.0K
        CPU: 19ms
     CGroup: /system.slice/avahi-daemon.service
             |-1086 avahi-daemon: running [pWireguard.local]
             `-1087 avahi-daemon: chroot helper

Oct 15 15:41:37 pWireguard avahi-daemon[1086]: New relevant interface wg0.IPv4 for mDNS.
Oct 15 15:41:37 pWireguard avahi-daemon[1086]: Joining mDNS multicast group on interface eth0.IPv6 with address fe80::1c>
Oct 15 15:41:37 pWireguard avahi-daemon[1086]: New relevant interface eth0.IPv6 for mDNS.
Oct 15 15:41:37 pWireguard avahi-daemon[1086]: Joining mDNS multicast group on interface eth0.IPv4 with address 192.168.>
Oct 15 15:41:37 pWireguard avahi-daemon[1086]: New relevant interface eth0.IPv4 for mDNS.
Oct 15 15:41:37 pWireguard avahi-daemon[1086]: Network interface enumeration completed.
Oct 15 15:41:37 pWireguard avahi-daemon[1086]: Registering new address record for 10.7.0.1 on wg0.IPv4.
Oct 15 15:41:37 pWireguard avahi-daemon[1086]: Registering new address record for fe80::1cea:68ff:fe82:1e8 on eth0.*.
Oct 15 15:41:37 pWireguard avahi-daemon[1086]: Registering new address record for 192.168.100.34 on eth0.IPv4.
Oct 15 15:41:37 pWireguard avahi-daemon[1086]: Server startup complete. Host name is pWireguard.local. Local service co

Hab ich da irgendwo einen massiven Fehler drin? Lokal funktioniert die Auflösung hervorragend und Wireguard funktioniert ja auch soweit.

Irgendwelche Hinweise?
 
Ich verstehe die Frage noch nicht richtig. Du willst Multicast über Wireguard übertragen? Das wird nicht klappen. Multicast über VPN geht nur, wenn du auf Layer 2 tunnelst, was eher unüblich ist.

Oder was ist dein Anliegen? Namensauflösung über VPN kannst du ja ggf. auch über die Einbeziehung eines lokalen DNS Servers erreichen.
 
sooo, Wochenende war etwas länger und ohne Rechner.

Es gibt wie beschrieben, wohl einige Lösungen, die mit dem Multicast scheinbar funktionieren, siehe die Links. Wie das mit Layer 2 genau läuft, kann ich nicht sagen, technisch ist es wohl nicht machbar. Aber mit der Lösung aus den Foren, scheint es einen möglichen Workaround zu geben.

Die Namesauflösung findet bei mir schon lokal über PiHole statt. Nur wie ich die Auflösung der .local avahi Domain machen soll, wenn ich per Wireguard verbunden bin, weiß ich nicht. Da hört mein Wissen auf ;-)
 
parrotle schrieb:
Es gibt wie beschrieben, wohl einige Lösungen, die mit dem Multicast scheinbar funktionieren, siehe die Links.
Naja, so richtig Multicast machen sie da nicht. Sie erlauben im avahi Point-to-Point Verbindungen und Wireguard kann offenbar Traffic aus dem Multicast-IP Bereich zu immer genau einem Client schicken. Wenn man mit den Einschränkungen leben kann, dann geht es. Sobald 2 VPN Clients zum Einsatz kommen, hat man verloren.

Du machst natürlich NAT bei dir im WG, was in den Anleitungen explizit ausgeschlossen wird. Damit wird es wohl nicht funktionieren.
 
Das habe ich auch vermutet... schade. Trickserei mit dem lokalem DNS kann man wohl vermutlich auch nicht machen. Eine 100% Einbindung über Wireguard in das lokale Netz wäre cool gewesen.
 
Eine 100% Einbindung wird es mit Wireguard nicht geben. Dafür bräuchte es ein Layer 2 VPN, wie z.B. OpenVPN im TAP Modus.

Du kannst den Weg aus deinen verlinkten Anleitungen gehen, indem du die NAT Regeln aus deinem Wireguard Setup eliminierst und durch vollwertiges Routing ersetzt. Aber die Einschränkung mit dem einen VPN Client gilt halt weiterhin.
 
habs anders gelöst. Mein PiHole kriegt jede Nacht die /etc/hosts per Skript mit den lokalen Container IPs aktualisiert und mit einem pihole restartdns kann er dann die lokal definierten (und in der hosts vorhandenen) .local Domains auflösen.
Durch die hosts Datei sehr statisch, aber für meine Zwecke ausreichend. Kann leider nicht so viel mit statischen IPs arbeiten und muss den DHCP hier nutzen. Daher die nächtlichen Aktualisierungen.
 
Klappt das denn uneingeschränkt? ".local" ist ja eigentlich die Domain für mdns (Port 5353), und wird üblicherweise nicht über Standard DNS aufgelöst. Ich könnte mir vorstellen, dass nicht alle Geräte .local auf dem Pihole suchen.
 
Das reicht, soweit ich es verstanden habe, insofern aus, da PiHole die spezifischen z.b. nextcloud.local über die hosts auflöst. Und da die Wireguard peers alle beim PiHole als DNS rauskommen, läuft das. Alle anderen lokalen Geräte ohne Wireguard kriegen das über mdns/avahi mit. Die Lösung ist nur speziell für die Wireguard Verbindung.
 
Zurück
Oben