Über Internet auf OPNsense Wireguard hinter Fritz.box

Started by vltn, April 05, 2025, 02:46:40 PM

Previous topic - Next topic
Hallo zusammen,

ich versuche seit einiger Zeit meinen WireGuard Tunnel zum Laufen zu bringen, um aus dem Internet auf einige Homelab-VMs zuzugreifen. Ich habe euch den aktuellen Netzwerkaufbau als Bild angehängt. Bisher waren meine Recherchen leider erfolgslos.

Folgendermaßen ist der Aufbau:
1. Fritz.box 7520 Router (192.168.178.1), öffentliche IP-Adresse ohne CGNAT
2. Dahinter mein Heimnetz (192.168.178.0/24) mit meinem Admin-Client (192.168.178.10/24)
3. TPLink AC750 (192.168.178.101), das ein WLAN Signal empfängt und per Ethernet auf einen Mini-PC übergibt (nicht optimal aber ich habe keine Möglichkeit, meinen Mini-PC per Ethernet anzuschließen)
4. Mini-PC ist mit Proxmox aufgesetzt, worauf OPNsense als VM läuft. Die OPNsense steht vor Proxmox.
   - OPNsense WAN IP (zum Heimnetz): 192.168.178.110/24
   - OPNsense LAN IP (zum Homelab): 10.180.1.1/29
5. Auf der OPNsense laufen mehrer OPNsense Instanzen. U.a. meine Admin-Instanz (:51820) mit der ich mich verbinde, um auf mein Homelab-Netzwerk zuzugreifen. Das klappt auch wunderbar.

Jetzt habe ich eine weitere WG-Instanz aufgesetzt, damit man aus dem Internet über Port 51821 auf eine bestimmte VM zugreifen kann.

Dafür habe ich konfiguriert:
1. Auf Fritz.box Portfreigabe für 192.168.178.110 auf :51821 (Exposed host deaktiviert)
2. Netcup Domäne DNS A-Record erstellt für meine öffentliche IP-Adresse (ist auch per nslookup auflösbar)
3. DynDNS per Netcup API konfiguriert, damit IP-Adressänderung berücksichtigt werden -> klappt auch

4. Verübergehende, nicht granulare OPNsense Firewallregel für WAN Interface erstellt:
   - Source: any
   - Source Port: any
   - Destination: any
   - Destination port: 51821

5. Wireguard Instanz:
    - Name: WG-Instance-Clients
   - Instance: WG1
   - Listen port: 51821
   - Tunnel adress: 10.180.255.224/27
   - Peers: WG-Peer-Client-1

6. WireGuard Peer:
   - Name: WG-Peer-Client-1
   - Allowed IPs: 10.180.255.227/32
   - Endpoint address: <öffentlicher DNS-Eintrag>
   - Endpoint port: 51821
   
   [Interface]
   PrivateKey = WG-Peer-PrivateKey
   Address = 10.180.255.227/32

   [Peer]
   PublicKey = WG-Server-PublicKey
   AllowedIPs = 10.180.0.0/16
   Endpoint = <öffentlicher DNS-Eintrag>:51821
   PersistentKeepalive = 25

7. Firewall Regel für WG-Instance-Clients Interface erstellt, um Zugriff auf bestimmte VM zu erlauben.
   - Source: any
   - Source Port: any
   - Destination: 10.180.1.250/32
   - Destination Port: any
   
Ich gehe davon aus, dass die WireGuard-Konfiguration stimmt, da die Verbindung mittels OPNsense WAN IP Adresse statt öffentlicher DNS als Endpoint problemlos klappt.

Ich sehe außerdem keinen Traffic auf der OPNsense bzgl. WG-Instance-Clients. Ich habe auch einen tcpdump per OPNsense shell laufen lassen, während ich versuche mich mit meinem Handy über mobile Daten zu verbinden. Da sehe ich auch keinen Traffic auf :51821.

Der Fehler liegt also vermutlich zwischen Fritz.box und OPNsense. Ich denke der TPLink ist nicht das Problem, da ich darauf auch keine weiteren Einschränkungen treffen kann (Firewall,...). Ich bin mir aber auch sehr sicher, dass das Portforwarding auf der Fritz.box korrekt konfiguriert ist. So viel dürfte man da ja nicht falsch machen können.

Ich hoffe sehr, dass ihr mir weiterhelfen könnt :)

VG

Gib bei Endpoint address: <öffentlicher DNS-Eintrag> mal deinen Zielport 51821 mit an.

Quote from: osmom on April 07, 2025, 11:45:06 AMGib bei Endpoint address: <öffentlicher DNS-Eintrag> mal deinen Zielport 51821 mit an.

Moin,

die angehängte Peer-Config stammt von der Konfiguration auf der OPNsense. Port 51821 lässt sich nicht unter Endpoint address mit einbinden sondern nur über das entsprechende Feld dafür. Die Konfiguration auf dem Client selbst ist direkt darunter und enthält :51821 in der Endpoint address ([Interface],...)

Quote from: vltn on April 05, 2025, 02:46:40 PM6. WireGuard Peer (Konfiguration auf OPNsense):
    - Name: WG-Peer-Client-1
    - Allowed IPs: 10.180.255.227/32
    - Endpoint address: <öffentlicher DNS-Eintrag>
    - Endpoint port: 51821

    ---

    [Interface] (Konfiguration auf Client, der verbinden soll)
    PrivateKey = WG-Peer-PrivateKey
    Address = 10.180.255.227/32

    [Peer]
    PublicKey = WG-Server-PublicKey
    AllowedIPs = 10.180.0.0/16
    Endpoint = <öffentlicher DNS-Eintrag>:51821
    PersistentKeepalive = 25

VG