winlin
Goto Top

Wireguard Server ok Clients ohne Verbindung

Hallo Zusammen,

ich habe auf meiner Raspberry in einem Docker Container wireguard installiert. Zu erwähnen ist noch das die RPi4 per WLAN connected ist und nicht per LAN. Der Server wurde wie folgt eingerichtet:
version: "3.7"  
services:
  wireguard:
    image: linuxserver/wireguard
    container_name: wireguard
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - SERVERURL=mydomain-vpn.ddns.net #optional
      - SERVERPORT=51820 #optional
      - PEERS=3 #optional
      - PEERDNS=auto #optional
      - INTERNAL_SUBNET=10.13.13.0 #optional
      - ALLOWEDIPS=0.0.0.0/0 #optional
    volumes:
      - /opt/wireguard-server/config:/config
      - /opt/wireguard-server/lib/modules:/lib/modules
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1

UFW Status auf der RPI:
51820/udp                  ALLOW       Anywhere

Start war erfolgreich mit sudo docker-compose up -d:
sudo docker-compose up -d
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Recreating wireguard ... done

Konfiguration gecheckt mit sudo docker exec -it wireguard wg show:
interface: wg0
  public key: MEINKEY000/SZsWzW8GKedKwtpDti3fiMEINKEY000
  private key: (hidden)
  listening port: 51820

peer: PEER1cusYo3vZfnSiwUXGNN0RofGRzp9Hs0CqUrPEER1
  allowed ips: 10.13.13.2/32

peer: PEER2shSKYqzQZqA/w6FcekMHOmH7KVY0/KQnPEER2
  allowed ips: 10.13.13.3/32

peer: PEER3OxK47ckgG4Zne+jVVJE9PcNIvr49Df+cK6PEER3
  allowed ips: 10.13.13.4/32

Public IP check:
curl -w "\n" ifconfig.me  
result ===> 109.192.6x.xxx

Und dann das gleiche vom container aus:
docker exec -it wireguard curl -w "\n" ifconfig.me  
result ===> 109.192.6x.xxx

Logfile gecheckt:
sudo docker-compose logs -f wireguard
Attaching to wireguard
wireguard    | [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
wireguard    | [s6-init] ensuring user provided files have correct perms...exited 0.
wireguard    | [fix-attrs.d] applying ownership & permissions fixes...
wireguard    | [fix-attrs.d] done.
wireguard    | [cont-init.d] executing container initialization scripts...
wireguard    | [cont-init.d] 01-envfile: executing...
wireguard    | [cont-init.d] 01-envfile: exited 0.
wireguard    | [cont-init.d] 10-adduser: executing...
wireguard    |
wireguard    | -------------------------------------
wireguard    |           _         ()
wireguard    |          | |  ___   _    __
wireguard    |          | | / __| | |  /  \
wireguard    |          | | \__ \ | | | () |
wireguard    |          |_| |___/ |_|  \__/
wireguard    |
wireguard    |
wireguard    | Brought to you by linuxserver.io
wireguard    | -------------------------------------
wireguard    |
wireguard    | To support the app dev(s) visit:
wireguard    | WireGuard: https://www.wireguard.com/donations/
wireguard    |
wireguard    | To support LSIO projects visit:
wireguard    | https://www.linuxserver.io/donate/
wireguard    | -------------------------------------
wireguard    | GID/UID
wireguard    | -------------------------------------
wireguard    |
wireguard    | User uid:    1000
wireguard    | User gid:    1000
wireguard    | -------------------------------------
wireguard    |
wireguard    | [cont-init.d] 10-adduser: exited 0.
wireguard    | [cont-init.d] 30-config: executing...
wireguard    | Uname info: Linux 1a0939e45fdb 5.10.52-v8+ #1440 SMP PREEMPT Tue Jul 27 09:56:40 BST 2021 aarch64 aarch64 aarch64 GNU/Linux
wireguard    | **** It seems the wireguard module is already active. Skipping kernel header install and module compilation. ****
wireguard    | **** Server mode is selected ****
wireguard    | **** External server address is set tomydomain-vpn.ddns.net ****
wireguard    | **** External server port is set to 51820. Make sure that port is properly forwarded to port 51820 inside this container ****
wireguard    | **** Internal subnet is set to 10.13.13.0 ****
wireguard    | **** AllowedIPs for peers 0.0.0.0/0 ****
wireguard    | **** PEERDNS var is either not set or is set to "auto", setting peer DNS to 10.13.13.1 to use wireguard docker host's DNS. ****  
wireguard    | **** Server mode is selected ****
wireguard    | **** No changes to parameters. Existing configs are used. ****
wireguard    | [cont-init.d] 30-config: exited 0.
wireguard    | [cont-init.d] 90-custom-folders: executing...
wireguard    | [cont-init.d] 90-custom-folders: exited 0.
wireguard    | [cont-init.d] 99-custom-scripts: executing...
wireguard    | [custom-init] no custom files found exiting...
wireguard    | [cont-init.d] 99-custom-scripts: exited 0.
wireguard    | [cont-init.d] done.
wireguard    | [services.d] starting services
wireguard    | [services.d] done.
wireguard    | [#] ip link add wg0 type wireguard
wireguard    | [#] wg setconf wg0 /dev/fd/63
wireguard    | [#] ip -4 address add 10.13.13.1 dev wg0
wireguard    | .:53
wireguard    | CoreDNS-1.8.4
wireguard    | linux/arm64, go1.16.4, 053c4d5
wireguard    | [#] ip link set mtu 1420 up dev wg0
wireguard    | [#] ip -4 route add 10.13.13.4/32 dev wg0
wireguard    | [#] ip -4 route add 10.13.13.3/32 dev wg0
wireguard    | [#] ip -4 route add 10.13.13.2/32 dev wg0
wireguard    | [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

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

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

[Peer]
# peer2
PublicKey = MYPUBLICKEYzQZqA/w6FcekMHOmH7KVYMYPUBLICKEY
AllowedIPs = 10.13.13.3/32

[Peer]
# peer3
PublicKey = MYPUBLICKEYG4Zne+jVVJE9PcNIvr49Df+cK6MYPUBLICKEY
AllowedIPs = 10.13.13.4/32

peer1.conf:
[Interface]
Address = 10.13.13.2
PrivateKey = MYPRIVATEKEYyty0eLOxpdVE2k8yACbjOugDUzbMcdMYPRIVATEKEY
ListenPort = 51820
DNS = 10.13.13.1

[Peer]
PublicKey = MYPUBLICKEY2o/SZsWzW8GKedKwtpDti3fiMvfrRMYPUBLICKEY
Endpoint = mydomain-vpn.ddns.net:51820
AllowedIPs = 0.0.0.0/0

Und wenn ich nun die peer1.conf nehme und auf meinem Windows 10 PC (wo schon wireguard client mit der conf eingerichtet ist erhalte ich folgenden Wireguard status:
Schnittstelle wg:
- Status: aktiv
- Öffentlicher Schlüssel (der aus der config)
- Eingangsport: 51820
- Adressen: 10.13.13.2./32
- DNS Server: 10.13.13.1
Teilnehmer:
- Öffentlicher Schlüssel (der aus der config)
- Erlaubte IPs: 0.0.0.0/0
- Endpunkt: 192.39.2xx.xx;51820
- Übertragen: 0B empfangen, 5,95KiN gesendet

Ipconfig zeigt den neuen adapter an:
Unbekannter Adapter wg:

   Verbindungsspezifisches DNS-Suffix:
   IPv4-Adresse  . . . . . . . . . . : 10.13.13.2
   Subnetzmaske  . . . . . . . . . . : 255.255.255.255
   Standardgateway . . . . . . . . . : 0.0.0.0

Eine Internetverbindung ist leider nicht möglich.
Im Wireguard Protokoll steht folgendes:
2021-08-03 12:18:17.793: [TUN] [wg] peer(00xJ…bUXs) - Sending handshake initiation
2021-08-03 12:18:43.465: [TUN] [wg] peer(00xJ…bUXs) - Handshake did not complete after 5 seconds, retrying (try 2)

Im Router habe ich den Port 51820 freigegeben (siehe screenshot).

Kann mir einer evtl helfen?

Danke im voraus!!!
wg0
ports

Content-ID: 1118187888

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

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

winlin
winlin 03.08.2021 um 12:55:40 Uhr
Goto Top
Zusätzliche Infos:

In der echt guten Beschreibung hier Merkzettel: VPN Installation mit Wireguard

beziehe ich mich nun auf "Wireguard Server und Client Konfiguration".
Das IP Forwarding habe ich ja bereits in meiner o.g. compose.yml aktiviert.

Dann steht in dieser Anleitung ja auch noch unter "Konfiguration Wireguard Server" das man:
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key 
wg genkey | tee peer1_private.key | wg pubkey > peer1_public.key 

Das habe ich zwar gemacht und diese keys liegen bereit abe rich habe die peerX.conf nicht editiert sonder habe sie so genommen und dann auf dem Windows PC benutzt um den Wireguard client zu konfigurieren.

Aber was mache ich nun mit den keys??? Muss ich doch alle peerX.conf files editieren und dort die keys ersetzen?
winlin
winlin 03.08.2021 um 13:19:32 Uhr
Goto Top
UPDATE NR2:

Nachdem ich im Router unter DDNS die Daten erneut eingegeben hatte machte ich einen neuen Versuch - das ist dieselber ServerURL die ich in der compose file angegeben habe "mydomain-vpn.ddns.net".
Nun beim öffnen des Wireguard Clients am Windows PCs erhalte ich den Fehler von zuvor nicht mehr:
Status ist aktiv
Letzter Schlüssel tausch: vor 3 Minuten
Endpunkt: 109.192.xx.xxx:51820
Übertragen: 7,81MiB empfangen, 1.40 MiB gesendet.

Protokoll vom Wireguard client:
2021-08-03 13:15:07.923: [TUN] [wg] peer(00xJ…bUXs) - Sending keepalive packet
2021-08-03 13:15:38.648: [TUN] [wg] peer(00xJ…bUXs) - Receiving keepalive packet

Wenn ich nun die VPN Domain mydomain-vpn.ddns.net nehme um mich pr ssh anzumelden dann klapt das auch.Zudem habe ich ja auch noch zuvor im outer Oenmediavault unter den Port 81 freigegeben und da komme ich nun auch mit mydomain-vpn.ddns.net:81 drauf.

Das heisst die Connectin steht - ABER das ist ja sicherlich nicht eine gute Lösung hier, oder????
h bin für Tipps offen - Es handelt sich ja nur um einen Testaufbauface-smile
winlin
winlin 03.08.2021 um 13:26:22 Uhr
Goto Top
Was mich aber interessieren würde:

route print output nachdem ich wireguard client aktiviert habe:
route print
===========================================================================
Schnittstellenliste
 46...........................Wintun Userspace Tunnel
  7...0c 37 96 2f db c3 ......Dell Giga Ethernet
 18...54 27 1e 25 63 89 ......Realtek 8821AE Wireless LAN 802.11ac PCI-E NIC
 19...56 27 1e 25 63 89 ......Microsoft Wi-Fi Direct Virtual Adapter
  8...54 27 1e 25 63 89 ......Microsoft Wi-Fi Direct Virtual Adapter #2
 17...e0 3f 49 6e a6 41 ......Realtek PCIe GbE Family Controller
  9...54 27 1e 25 63 88 ......Bluetooth Device (Personal Area Network)
  1...........................Software Loopback Interface 1
===========================================================================

IPv4-Routentabelle
===========================================================================
Aktive Routen:
     Netzwerkziel    Netzwerkmaske          Gateway    Schnittstelle Metrik
          0.0.0.0          0.0.0.0      192.168.0.1     192.168.0.42    291
          0.0.0.0          0.0.0.0   Auf Verbindung        10.13.13.2      0
       10.13.13.2  255.255.255.255   Auf Verbindung        10.13.13.2    256
        127.0.0.0        255.0.0.0   Auf Verbindung         127.0.0.1    331
        127.0.0.1  255.255.255.255   Auf Verbindung         127.0.0.1    331
  127.255.255.255  255.255.255.255   Auf Verbindung         127.0.0.1    331
      192.168.0.0    255.255.255.0   Auf Verbindung      192.168.0.42    291
     192.168.0.42  255.255.255.255   Auf Verbindung      192.168.0.42    291
    192.168.0.255  255.255.255.255   Auf Verbindung      192.168.0.42    291
        224.0.0.0        240.0.0.0   Auf Verbindung         127.0.0.1    331
        224.0.0.0        240.0.0.0   Auf Verbindung      192.168.0.42    291
  255.255.255.255  255.255.255.255   Auf Verbindung         127.0.0.1    331
  255.255.255.255  255.255.255.255   Auf Verbindung      192.168.0.42    291
===========================================================================
Stndige Routen:
  Netzwerkadresse          Netzmaske  Gatewayadresse  Metrik
          0.0.0.0          0.0.0.0      192.168.0.1  Standard
===========================================================================

IPv6-Routentabelle
===========================================================================
Aktive Routen:
 If Metrik Netzwerkziel             Gateway
  1    331 ::1/128                  Auf Verbindung
 17    291 fc00::/7                 fe80::6a8f:2eff:fef8:e8f2
 17    291 fd00:688f:2ef8:e8f2::/64 Auf Verbindung
 17    291 fd00:688f:2ef8:e8f2:39e1:e16c:7192:cb57/128
                                    Auf Verbindung
 17    291 fd00:688f:2ef8:e8f2:5923:7ea6:79b4:6453/128
                                    Auf Verbindung
 17    291 fe80::/64                Auf Verbindung
 17    291 fe80::5923:7ea6:79b4:6453/128
                                    Auf Verbindung
  1    331 ff00::/8                 Auf Verbindung
 17    291 ff00::/8                 Auf Verbindung
===========================================================================
Stndige Routen:
  Keine

Unbekannter Adapter wg:

   Verbindungsspezifisches DNS-Suffix:
   IPv4-Adresse  . . . . . . . . . . : 10.13.13.2
   Subnetzmaske  . . . . . . . . . . : 255.255.255.255
   Standardgateway . . . . . . . . . : 0.0.0.0

Wieso ist das Gateway 0.0.0.0ß???
aqui
aqui 04.08.2021 um 11:19:30 Uhr
Goto Top
Es ist völlig unsinnig im eigenen Netzwerk NAT (Adress Translation) auf dem Tunnel Interface zu machen. In sofern sind die postroute Kommandos mit NAT völlig überflüssig und kontraproduktiv, denn sie führen zu einer routingtechnischen Einbahnstrasse (NAT Firewall).
Siehe dazu das hiesige WG Tutorial:
Merkzettel: VPN Installation mit Wireguard
winlin
winlin 04.08.2021 um 12:39:43 Uhr
Goto Top
Ich bin nach dem offizielle. Tutorial gegangen und habe Wireguard installiert. Verstehe nicht wo ich nun den Fehler gemacht habe? Sind diese dokus falsch?
aqui
aqui 04.08.2021 aktualisiert um 20:19:21 Uhr
Goto Top
Ja viele sind falsch weil sie ein NAT im Tunnel machen, was völlig falsch und überflüssig ist. Solltest du also besser löschen.
Die Original Anleitung redet übrigens zu keiner Zeit davon NAT im Tunnel zu machen. face-wink
winlin
winlin 04.08.2021 um 20:23:22 Uhr
Goto Top
An was erkenne ich an meiner config das ich NAT gemacht habe? Ich habe einfach die docker compose yml genommen. Danach lediglich die standard Dinge noch gemacht und das wars…
Kannst mir genau sagen wonach den Fehler gemacht habe?
canlot
canlot 05.08.2021 aktualisiert um 22:17:42 Uhr
Goto Top
Zitat von @winlin:


wg0.conf:
> [Interface]
> Address = 10.13.13.1
> ListenPort = 51820
> PrivateKey = MYPRIVATEKEYbccTOPlw8NGeUHLrlKOWyd2dMYPRIVATEKEY
> PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
> PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
> 
> [Peer]
> # peer1
> PublicKey = MYPUBLICKEYSiwUXGNN0RofGRzp9Hs0MYPUBLICKEY
> AllowedIPs = 10.13.13.2/32
> 
> [Peer]
> # peer2
> PublicKey = MYPUBLICKEYzQZqA/w6FcekMHOmH7KVYMYPUBLICKEY
> AllowedIPs = 10.13.13.3/32
> 
> [Peer]
> # peer3
> PublicKey = MYPUBLICKEYG4Zne+jVVJE9PcNIvr49Df+cK6MYPUBLICKEY
> AllowedIPs = 10.13.13.4/32
> 

Hi,

bei PostUp wird ein NAT auf das Interface eth0 erstellt (iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE)
und bei PostDown wieder gelöscht ( iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE )
winlin
winlin 05.08.2021 um 23:20:54 Uhr
Goto Top
Ok und was heißt das für mich? Kannst du mir sagen wie es korrekt aussehen sollte?
aqui
Lösung aqui 06.08.2021 aktualisiert um 11:11:05 Uhr
Goto Top
Das heisst das das NAT im eigenen Netzwerk, wie bereits mehrfach gesagt, durch das im WG integrierte Cryptokey_Routing überflüssiger Unsinn ist und du die beiden „Post...“ Kommandos dringenst entfernen solltest aus der Konfig. Siehe o.g. Wireguard „Merkzettel“.
winlin
winlin 06.08.2021 um 11:11:36 Uhr
Goto Top
Alles klar entfern das und deploye nochmal
winlin
winlin 06.08.2021 um 11:11:51 Uhr
Goto Top
Danke
winlin
winlin 17.08.2021 um 14:01:19 Uhr
Goto Top
Hallo Leute,

ich kam bisher nicht dazu das NAT was hier wohl falsch ist zu löschen. Also verstehe ich das richtig...ich muss das hier aus der wg0.conf löschen:
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

und danach den befehl ausführen:
docker-compose up -d docker-ymlfile.yml

Ist das so korrekt?
aqui
aqui 17.08.2021 um 14:16:00 Uhr
Goto Top
Das ist korrekt !
Masquerading hat auf den Tunnel Interfaces nichts zu suchen. Siehe dazu auch das Wireguard_Tutorial wie die Konfig Files genau auszusehen haben.