GCNAT mit Unifi und Wireguard Tunnel zum VPS umgehen

Hallo zusammen,

ich bin schon einige Zeit stiller Mitleser und wende mich nun an euch da ich mit meinem Latein langsam am Ende bin.

Folgende Situation treibt mich langsam an die Grenze des Wahnsinns. Im Homelab ist eine UDM SE installiert, welche über ein Vigor 165 mit einem PPPoE Signal versorgt wird. Da ich in meinem zukünftigen Haus lediglich ein DSLite besitzen werde und der Provider GCNAT betreibt baue ich nun meinen VPN Zugangspunkt um.

Bei IONOS ist ein VPS gemietet mit IPv4. Subdomain XYZ ist auf die Public IPv4 Adresse des VPS per A Record gemappt. Ports sind frei in der FW von IONOS und dem OS. Wireguard ist konfiguriert. Das WG Interface ist entsprechend konfiguriert worden damit VPN Teilnehmer mit ein anderer kommunizieren dürfen. VPS seitig sollen keine Netze zugängig gemacht werden. VPN Transfernetz ist die 10.10.94.0/24. Der VPS ist die .1.

Auf Seite der UDM SE wurde über die UDM UI eine VPN Client config angelegt. DNS ist der lokale DNS Server hinter der UDM und für den Fehlerfall die UDM selbst. Die UDM SE ist im Transfernetz die .2. Firewallregeln sind gesetzt worden in der UDM SE. Folgende Netze sollen von dem UDM SE zum Transfernetz erreichbar gemacht werden:

  • 10.10.5.0/24
  • 10.10.10.0/24
  • 10.10.20.0/24
  • 10.10.30.0/24
  • 10.10.80.0/24

Zweiter Client in der Runde ist eins meiner Mobile Devices. Trägt im Transfernetz die .3. DNS Server sind die ebenfalls der DNS hinter der UDM SE und die UDM selbst. Dieser soll über das Transfernetz auf IPs hinter der UDM SE in den entsprechenden freigegebenen Netzwerken zugreifen können.

Nun zum Problemfall:
Vom VPS 10.10.94.1 zu UDM SE 10.10.94.2 kann nicht gepingt werden, zum Mobile Device 10.10.94.3 aber schon. IP Adressen hinter der UDM SE sind erreichbar, aber keine Gateways! Vom Mobile Device zur UDM SE exakt das selbe Spiel. Mobile Device zum VPS problemlos. Jetzt kommt der Knüller, die 10.10.94.2 UDM SE kann aber beide VPS sowohl auch Mobile Device anpingen.

WG Conf VPS:

[Interface]
Address = 10.10.94.1/24
ListenPort = 1195
PrivateKey = BlaBlaBlaBla

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s6 -j MASQUERADE; ufw route allow in on wg0
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s6 -j MASQUERADE; ufw route delete allow in on wg0

# darkside
[Peer]
PublicKey = BlaBlaBlaBla
PresharedKey = BlaBlaBlaBla
AllowedIPs = 10.10.94.2/32, 10.10.5.0/24, 10.10.10.0/24, 10.10.20.0/24, 10.10.30.0/24, 10.10.80.0/24

# lucas
[Peer]
PublicKey = BlaBlaBlaBla
PresharedKey = BlaBlaBlaBla
AllowedIPs = 10.10.94.3/32

Conf UDM SE:

interface: wgclt1
  public key: BlaBlaBlaBla
  private key: BlaBlaBlaBla
  listening port: 44074

peer: BlaBlaBlaBla
  preshared key: BlaBlaBlaBla
  endpoint: xxx.xxx.xxx.xxx:1195
  allowed ips: 0.0.0.0/0
  latest handshake: 1 second ago
  latest receive: 1 second ago
  transfer: 11.25 MiB received, 91.66 MiB sent
  persistent keepalive: every 1 minute
  forced handshake: every 5 seconds

Config vom Mobile Device:

[Interface]
PrivateKey = BlaBlaBlaBla
ListenPort = 1195
Address = 10.10.94.3/24
DNS = 10.10.80.10, 10.10.80.1

[Peer]
PublicKey = BlaBlaBlaBla
PresharedKey = BlaBlaBlaBla
AllowedIPs = 0.0.0.0/0
Endpoint = subdomain.xyz.tld:1195
PersistentKeepalive = 25

Übersicht der Netze:

Firewallregel auf UDM SE:

Wo liegt der Fehler? :smiley: Vielleicht sehe ich den Wald vor lauter Bäumen nicht. Ich wäre euch sehr dankbar für einen Tipp. :slight_smile:

Wenn du das Gateway erreichen willst brauchst du auch eine FW Regel auf Internet LOCAL… In Bedeutet ja das was DURCH diesen Port weiter geht.

1 Like

Danke! Das war die Lösung. Für die Nachwelt habe ich die Firewallregel mal mit angehangen.
Hast du noch n Tipp wie ich es bewerkstelligen kann, dass auch die UDM im Transfernetz anping bar wird?
Oder ist das wieder eine Unifi spezifische Sperre die nicht geht? :stuck_out_tongue:

Hallo techsolo12,

ich habe deinen Beitrag interessiert mitgelesen, da ich ein ähnliches Problem habe. Das heisst, ich bin noch nicht so erfolgreich in meinem Vorhaben wie du. Bevor ich nun einen eigenen Beitrag erstelle, hoffe ich, dass du oder sonst jemand mir hier weiterhelfen kann.

Meine Situation
Ich habe eine Unifi Dream Machine Pro (UDM) hinter einem Internetanschluss via Handynetz mit CGNAT. Bei Hetzner habe ich Wireguard auf Ubuntu installiert. Auf der UDM und auf meinem Notebook habe ich jeweils die Wireguard Konfiguration hinterlegt und ich kann erfolgreich eine Verbindung zum VPS bei Hetzner aufbauen. Nun mein Problem: ich kann lediglich von den beiden Clients den Wireguard Server pingen. In die andere Richtung, oder von Peer zu Peer kann ich nicht pingen. Auch die lokalen IPs hinter der UDM kann ich nicht pingen. Ich gehe davon aus, dass es am Routing liegt. Leider habe ich vom Routing bei Wireguard nicht viel Ahnung. Ich komme da nicht weiter und wäre froh um Hilfe.

Nachfogend meine Konfigurationen:

Wireguard Server-Konfig
[Interface]
PrivateKey = Der private Schlüssel
ListenPort = 51820
Address = 10.10.0.1/24

[Peer]
PublicKey = Der öffentliche Schlüssel
AllowedIPs = 10.10.0.2/32

[Peer]
PublicKey = Der öffentliche Schlüssel
AllowedIPs = 10.10.0.3/32
Wireguard Peer 1 Konfig

[Interface]
PrivateKey = Der private Schlüssel
Address = 10.10.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = Der öffentliche Schlüssel
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820
PersistentKeepalive = 25

Wireguard Peer 2 Konfig
[Interface]
PrivateKey = Der private Schlüssel
Address = 10.10.0.3/24
DNS = 1.1.1.1

[Peer]
PublicKey = Der öffentliche Schlüssel
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820
PersistentKeepalive = 25

UDM Firewall
Da habe ich die selben Einstellungen wie du konfiguriert.

Vielen Dank und Gruss

Das NAS muss entweder mit 192.168.120.10/32 oder das komplette 192.168.120.0/24 Netz als Allowed IPs in der Server Konfig für den entsprechenden Peer 2 drin stehen. Erste Option ermöglicht nur Zugriff auf die explizite IP, die zweite auf das ganze /24 Netz.

Wireguard Server-Konfig

[Interface]
PrivateKey = Der private Schlüssel
ListenPort = 51820
Address = 10.10.0.1/24

### Mobile device
[Peer]
PublicKey = Der öffentliche Schlüssel
AllowedIPs = 10.10.0.2/32

### UDM
[Peer]
PublicKey = Der öffentliche Schlüssel
AllowedIPs = 10.10.0.3/32, 192.168.120.0/24

Zusätzlich musst du deinem VPN konfigurieren, dass VPN Teilnehmer über das WG0 Interface mit einander kommunizieren dürfen. In deiner Config fehlen die PostUp und PostDown Parameter oder hast du zusätzlich ein Skript was das regelt?

Was hast du alles im VPS konfiguriert?

Ich habe noch einen Vorschlag wie man das ganze GCNAT Problem noch anders umschiffen könnte.
Vor ein paar Tagen habe ich nett bei meinem Provider angerufen und mein Problem mit dem GCNAT in Verbindung mit einem VPN geschildert. Nachdem ich dann an die Technikabteilung weitergeleitet wurde hat ein netter Mensch mir wieder eine öffentliche IPv4 freigeschaltet. Seitdem bin ich IPv4 technisch wieder voll dabei.

1 Like

Habe ich alles schon mehrfach probiert. Unter anderem angeboten, dass mir das ganze auch 10 - 20 Euro im Monat wert wäre.
Die Aussage seitens des Providers bleibt: Brauchen Sie eine dynamische oder statische IPv4 benötigen Sie einen Business Vertrag. Kostenfaktor x2 :confused:

@Iriomote Das habe ich auch schon versucht. Leider ohne Erfolg.

@techsolo12
vielen Dank für deine Hilfe. Der interne IP Bereich 192.168.120.0 habe ich hinzugefügt. Das einzige, was ich auf dem Server noch gemacht habe, ist das auskommentieren von „net.ipv4.ip_forward=1“.

Nun muss ich, wie du geschrieben hast, mit PostUp und PostDown das Routing konfigurieren. Hier tue ich mich jedoch schwer und suche noch entsprechende Anleitungen, wie genau dies zu tun ist. Kennst du da etwas?

Edit:
Ich habe es nun mit dem Wireguard GUI versucht, da mein Wissen offenbar für eine manuelle Installation nicht ausreicht. Und ich war erfolgreich. Für mich ist das Problem für den Moment erledigt. Nochmals vielen Dank!

Gruss

Hallo zusammen,

ich habe - vermute ich - ein ähnliches oder sogar das gleiche Problem.
Aufgebaut ist ein WG-Tunnel zwischen einem VPS (WG0: 10.1.0.1) und einem Unifi-UCG Ultra (VPN-Client, Tunnel-IP: 10.1.0.2) - Unifi VPNClient Status: connected.
Der VPN wird m.E.n. auch aufgebaut, jedoch habe ich folgende Probleme:

  1. Ping von meinem Macbook zum VPS-WG Interface (10.1.0.1) funktioniert, jedoch nicht vom VPS zur Unifi-Tunnel-IP 10.1.0.2
  2. Ping vom VPS zu einem der Endgeräte in meinem lokalen Netzwerk, z.b. 10.1.5.30 funktioniert jedoch

Ich bin mit den Routen noch stark am lernen, daher vermute ich, dass ich hier lokal auf meinem Unifi-GW etwas falsch gemacht oder vergessen habe.
Aktuell sind hier 2 Routen eingerichtet (Internet IN und Internet LOCAL), Source ist die IP-Group aus dem WG Tunnel und bei Internet IN die Weiterleitung auf any, bei Internet local ist dies beschränkt auf port 80,443 mit Weiterleitung auf meinen nginx.

Hätte jemand einen Tipp für mich?