hypernia
Goto Top

Wireguard in Docker Probleme mit IPv6

Hallo zusammen,

ich habe in Docker mehrere Container laufen - z. B. Paperless auf Port 8000 TCP und Wireguard auf 51820 UDP.
  • Aus meinem heimischen LAN kann ich alle Dienste (über IPv4) erreichen.
  • Mobil über IPv6 kann ich testweise Paperless aufrufen, aber bekomme keinen Handshake in Wireguard.

Ich habe Mikrotik-Geräte im Einsatz und die Firewall freigeschaltet:
add action=accept chain=forward comment="Paperless erlauben" dst-address-list=Odroid dst-port=8000 protocol=tcp  
add action=accept chain=forward comment="WireGuard erlauben" dst-address-list=Odroid dst-port=51820 protocol=udp  

Über
sudo tcpdump -ni eth0 port 51820
auf dem Docker-Host sehe ich die Anfragen:
08:37:29.225961 IP6 2a02:.51820:  > 2003:.51820: UDP, length 148
08:37:29.227486 IP6 2003:51820 > 2a02:.51820: UDP, length 92

Mit
docker exec -it wireguard /bin/bash
wg show
kann ich sehen, dass im 5-Sekunden Takt der Handshakes Sent und Received erhöht wird.

Die wg0.conf:
[Interface]
Address = 10.13.13.1
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE

[Peer]
# peer1
PublicKey
PresharedKey
AllowedIPs = 10.13.13.2/32

Auszug docker-compose.yml:
  wireguard:
    image: linuxserver/wireguard
    container_name: wireguard
    restart: unless-stopped
    ports:
      - 51820:51820/udp
    volumes:
      - /home/odroid/docker/containerconfig/wireguard:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin
      - SERVERURL=meindyndns
      - SERVERPORT=51820
      - INTERNAL_SUBNET=10.13.13.0
      - PERSISTENTKEEPALIVE_PEERS=
      - PEERS=1 #optional
      - PEERDNS=auto #optional
      - ALLOWEDIPS=0.0.0.0/0 #optional
      - LOG_CONFS=true #optional
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    cap_add:
      - NET_ADMIN
      - SYS_MODULE

Client Einstellungen unter Android:
Adresse 10.13.13.2
Eingangsport 51820
Nameserver leer
Endpunkt: Mein DynDNS
Erlaubte IPs 10.13.13.0/24, 192.168.1.0/24

Content-Key: 8351983424

Url: https://administrator.de/contentid/8351983424

Printed on: May 8, 2024 at 16:05 o'clock

Member: aqui
aqui Sep 11, 2023 at 10:22:05 (UTC)
Goto Top
Die üblichen Fehler:
  • überflüssiges NAT im Tunnel
  • Falsche Subnetzmaske bei den erlaubten IPs fürs interne WG Netz.
Und vermutlich on Top noch das hier?!
WG Grundlagen, wie immer, hier.
Member: Hypernia
Hypernia Sep 11, 2023 updated at 12:03:58 (UTC)
Goto Top
Wenn ich dich richtig verstehe - die neue wg0.conf:
[Interface]
Address = 10.13.13.1/24
ListenPort = 51820
PrivateKey 
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT
#; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT
#; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE

[Peer]
# peer1
PublicKey 
PresharedKey 
AllowedIPs = 10.13.13.2/32

Mein Problem bleibt leider unverändert. Auch im Tutorial konnte ich nichts finden:
Als Route habe ich
/ip route
add distance=1 dst-address=10.13.13.0/24 gateway=192.168.1.151
Da ich nur an einzelne Clients per IPv6 zurück gehe, entfällt eine Route zum Remote LAN?

Am Docker-Host:
cat /proc/sys/net/ipv4/ip_forward
1

Routen auf einem ungerooteten Android zu prüfen ist mWn nicht möglich. Zu einem IPv6-Netzwerk zu pendeln ist nicht praktikabel. Zudem scheitert ja schon der Handshake, also so wie ich es verstehe noch vor dem WG-Routing.

Die Android Interface-Adresse ist jetzt auch +"/24"

IPv6 scheint ja "grundsätzlich" zu funkionieren, da ich wie gesagt in einen anderen Container per TCP 8000 greifen kann.
Member: Hypernia
Solution Hypernia Sep 14, 2023, updated at Sep 20, 2023 at 09:49:40 (UTC)
Goto Top
Als Update von meiner Seite:
Die Wireguard-Android-App verhält sich anscheinend anders als andere Clients. Ich hatte zwischenzeitlich die IPv6-Firewall im Router deaktiviert, um sie auszuschließen. Dann klappte es aber. Die Lösung ist, innerhalb von IPv6 ICMP zum Wireguard-Server zu erlauben.
Member: aqui
aqui Sep 15, 2023 at 07:00:56 (UTC)
Goto Top
IPv6 ICMP (ich meine hier NICHT ICMPv6)
Bahnhof?? Wo wäre denn deiner Meinung nach der genaue Unterschied zw. IPv6 ICMP und ICMPv6.
Das wäre in einem Administrator Forum sicher mal interessant das zu erfahren! Also bitte mal Aufklärung!
Member: Hypernia
Hypernia Sep 20, 2023 at 09:53:18 (UTC)
Goto Top
Zitat von @aqui:

IPv6 ICMP (ich meine hier NICHT ICMPv6)
Bahnhof?? Wo wäre denn deiner Meinung nach der genaue Unterschied zw. IPv6 ICMP und ICMPv6.
Das wäre in einem Administrator Forum sicher mal interessant das zu erfahren! Also bitte mal Aufklärung!

Du ich habe ehrlich gesagt keine Ahnung, wieso ich das geschrieben habe. Wenn ich nochmal drauf schaue, könnte es sein, dass ich mich in WinBox bzgl. igmp und icmp verlesen habe.
Im Rahmen von kurzfristig alles erlauben tauchten auch Verbindungen mit Countdown in WinBox auf. Mein Verständnis der Firewall ist dann nicht groß genug, aber ich befürchte, dass darauf basierend "related" Verbindungen für mich das Ergebnis meiner Anpassungen verwaschen haben.

Ich habe meine Antwort oben eingekürzt um den falschen Teil.
Member: aqui
aqui Sep 20, 2023 at 10:10:05 (UTC)
Goto Top
bzgl. igmp und icmp verlesen habe.
Das wirds wohl gewesen sein, denn alles andere wäre ziemlicher Unsinn! 😉