PiHole mit OpenVPN (NordVPN) - Korrekte Routing Tabellen ?!

  • Auf einem Pi4 habe ich PiHole und OpenVPN (mit einem Account bei NordVPN) installiert. Beide Installationen funktionieren für sich einwandfrei (PiHole filtert, OpenVPN-Verbindung wird aufgebaut und steht; anhand der Prüfung mit "wget http://ipinfo.io/ip -qO -" sehe ich, dass dem VPN eine IP von NordVPN zugewiesen wurde). Der Internet-Verkehr aller Clients wird über PiHole gefiltert, ABER nicht über die VPN-Verbindung geroutet. Nachdem ich nun tagelang unendlich viele iptable-Einträge erfolglos ausprobiert habe, versuche ich hier eine Lösung zu finden.


    Kann mir bitte jemand Vorschläge machen, welche das Routing zwischen eth0 und tun0 zum funktionieren bringen und der ganze Internet-Verkehr über die VPN-Verbindung geht UND mit PiHole gefiltert wird.

    Herzlichen Dank im Voraus.



    Hier meine iptable und die Routingeinträge:


    Mein internes Netz 10.0.0.0/24

    Mein Router 10.0.0.1 / 255.255.255.0

    PiHole / OpenVPN: 10.0.0.82


    sudo sysctl -p /etc/sysctl.conf

    net.ipv4.ip_forward = 1


    route

    Kernel IP routing table PiHole

    Destination Gateway Genmask Flags Metric Ref Use Iface

    0.0.0.0 10.8.1.1 128.0.0.0 UG 0 0 0 tun0

    default 10.0.0.1 0.0.0.0 UG 202 0 0 eth0

    10.0.0.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0

    10.8.1.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0

    37.120.213.107 10.0.0.1 255.255.255.255 UGH 0 0 0 eth0

    128.0.0.0 10.8.1.1 128.0.0.0 UG 0 0 0 tun0


    sudo iptables -L -v -n

    Chain INPUT (policy ACCEPT 77632 packets, 7926K bytes)

    pkts bytes target prot opt in out source destination

    2392 126K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW,ESTABLISHED


    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

    pkts bytes target prot opt in out source destination

    0 0 ACCEPT all -- tun0 eth0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

    0 0 ACCEPT all -- eth0 tun0 0.0.0.0/0 0.0.0.0/0


    Chain OUTPUT (policy ACCEPT 60484 packets, 4325K bytes)

    pkts bytes target prot opt in out source destination

    1850 379K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:22 ctstate ESTABLISHED

    2327 931K ACCEPT all -- * tun0 0.0.0.0/0 0.0.0.0/0 /* vpn */

    2 188 ACCEPT icmp -- * eth0 0.0.0.0/0 0.0.0.0/0 /* icmp */

    7882 4633K ACCEPT all -- * eth0 0.0.0.0/0 10.0.0.0/24 /* lan */

    2515 1072K ACCEPT udp -- * eth0 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 /* allow vpn traffic */

    0 0 ACCEPT udp -- * eth0 0.0.0.0/0 0.0.0.0/0 udp dpt:123 /* ntp */


    sudo iptables -t nat -L

    Chain PREROUTING (policy ACCEPT)

    target prot opt source destination


    Chain INPUT (policy ACCEPT)

    target prot opt source destination


    Chain POSTROUTING (policy ACCEPT)

    target prot opt source destination

    MASQUERADE all -- anywhere anywhere

    MASQUERADE all -- anywhere anywhere

    MASQUERADE all -- anywhere anywhere


    Chain OUTPUT (policy ACCEPT)

    target prot opt source destination



    ifconfig

    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

    inet 10.0.0.82 netmask 255.255.255.0 broadcast 10.0.0.255

    inet6 fe80::a977:2af1:5cfd:c6b4 prefixlen 64 scopeid 0x20<link>

    ether dc:a6:32:47:b9:91 txqueuelen 1000 (Ethernet)

    RX packets 20615 bytes 3748702 (3.5 MiB)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 14880 bytes 6767313 (6.4 MiB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


    lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

    inet 127.0.0.1 netmask 255.0.0.0

    inet6 ::1 prefixlen 128 scopeid 0x10<host>

    loop txqueuelen 1000 (Local Loopback)

    RX packets 65245 bytes 4620454 (4.4 MiB)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 65245 bytes 4620454 (4.4 MiB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


    tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500

    inet 10.8.1.8 netmask 255.255.255.0 destination 10.8.1.8

    inet6 fe80::a07b:8d06:c73a:ccff prefixlen 64 scopeid 0x20<link>

    unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (UNSPEC)

    RX packets 390 bytes 163098 (159.2 KiB)

    RX errors 0 dropped 0 overruns 0 frame 0

    TX packets 446 bytes 229680 (224.2 KiB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    Ich schwimme nicht mit dem Strom - Ich fahre damit

  • Der Internet-Verkehr aller Clients wird über PiHole gefiltert, ABER nicht über die VPN-Verbindung geroutet.

    Wissen diese Clients, dass der PI als gateway für ihre default route, fungieren soll?

    Welches Betriebssystem haben diese Clients bzw. welchen Router hast Du?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Wissen diese Clients, dass der PI als gateway für ihre default route, fungieren soll?

    Welches Betriebssystem haben diese Clients bzw. welchen Router hast Du?

    Ja, das wissen diese Clients (MacOS), der PiHole ist bei Ihnen als Default DNS-Server eingetragen. Im PiHole werden ihre Verbindungen protokolliert. Der eingesetzte Router ist ein Airport Extreme.

    Ich schwimme nicht mit dem Strom - Ich fahre damit

  • Ja, das wissen diese Clients (MacOS), der PiHole ist bei Ihnen als Default DNS-Server eingetragen.

    OK, d. h. wenn der PiHole als DNS-Server eingetragen und benutzt wird, dann wird der PI auch als gateway für die default route gesetzt bzw. benutzt?

    Dann poste von deinem Mac. die Ausgaben von:

    Code
    route -n
    nslookup heise.de
    mtr -4nr -c 1 4.2.2.1

    (oder gleichwertig).

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • OK, d. h. wenn der PiHole als DNS-Server eingetragen und benutzt wird, dann wird der PI auch als gateway für die default route gesetzt bzw. benutzt?

    Dann poste von deinem Mac. die Ausgaben von:

    (oder gleichwertig).

    Ich schwimme nicht mit dem Strom - Ich fahre damit

  • Welche tools für die Kommandozeile des Macs gleichwertig sind (für route und mtr), solltest Du wissen. Ich benutze keinen Mac. Mit *BSDs gibt es netstat und mtr oder mtr-nox11:

    Code
    netstat -nr -f inet

    z. B. für FreeBSD:

    Code
    mtr-0.94                       Traceroute and ping in a single network diagnostic tool
    mtr-nox11-0.94                 Traceroute and ping in a single network diagnostic tool

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Lt. der Ausgabe von netstat, ist nicht dein PI (mit der IP-Adresse 10.0.0.82) das default gateway, sondern die IP-Adresse 10.0.0.1 (dein Router?, als "border device") via eth0-Interface, das default gateway.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Lt. der Ausgabe von netstat, ist nicht dein PI (mit der IP-Adresse 10.0.0.82) das default gateway, sondern die IP-Adresse 10.0.0.1 (dein Router?, als "border device") via eth0-Interface, das default gateway.

    DAS wars! Ich habe nun bei den Macs den Pi als Router eingetragen und so funktionierts. Habe wohl vor lauter Bäumen den Wald nicht mehr gesehen :danke_ATDE:

    Ich schwimme nicht mit dem Strom - Ich fahre damit

  • Lt. der Ausgabe von netstat, ist nicht dein PI (mit der IP-Adresse 10.0.0.82) das default gateway, sondern die IP-Adresse 10.0.0.1 (dein Router?, als "border device") via eth0-Interface, das default gateway.

    Ich möchte noch mit PiVPN ergänzen, damit ich mit meinem Smartphone von Remote die bestehende PiHole / NordVPN Konfiguration nutzen kann. Welches Protokoll (WireGuard und/oder OpenVPN) soll ich bei der Installation von PiVPN wählen und wie mus das Routing danach aufgesetzt werden, damit der Verkehr meines Smartphones über PiHole gefiltert und NordVPN geroutet wird?

    Ich schwimme nicht mit dem Strom - Ich fahre damit

  • Ich möchte noch mit PiVPN ergänzen, damit ich mit meinem Smartphone von Remote die bestehende PiHole / NordVPN Konfiguration nutzen kann.

    Das verstehe ich jetzt nicht. Du hast doch schon einen funktionierenden VPN-Tunnel mit OpenVPN zu NordVPN. Was willst Du mit PiVPN, noch ergänzen?

    Was meinst Du mit "Smartphone von Remote"?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Das verstehe ich jetzt nicht. Du hast doch schon einen funktionierenden VPN-Tunnel mit OpenVPN zu NordVPN. Was willst Du mit PiVPN, noch ergänzen?

    Was meinst Du mit "Smartphone von Remote"?

    Ich habe einen Pi mit PiHole und einer OpenVPN Verbindung (NordVPN) am Laufen. Diesen verwende ich aktuell für meinen iMac bzw. dessen Internetverkehr zu filtern. Nun möchte ich gerne diesselbe Installation auch für mein iPhone nutzen, wenn ich auswärts am surfen bin. Dazu bietet sich PiVPN an, um mit Remote-Clients auf den Pi zuzugreifen. Der Pi müsste dann also zwei VPN routen (einmal meinen Mac am LAN, einmal mein iPhone von Remote). Ist dies verständlich?

    Ich schwimme nicht mit dem Strom - Ich fahre damit

  • ..., einmal mein iPhone von Remote). Ist dies verständlich?

    iPhone von Remote heißt wenn dein iPhone nicht in deinem WLAN ist, sondern irgendwo im Internet?


    Du könntest es mit einer VPN-Verbindung (OpenVPN oder besser mit Wireguard) zwischen deinem PI und deinem iPhone versuchen, wenn dein Internetanschluss kein CGN-Anschluss ist. Bei DS-lite müsste dein iPhone-Provider DS zur Verfügung stellen. Wenn Du nur natives IPv4 als Internetanschluss hast, sollte das kein Problem sein.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • iPhone von Remote heißt wenn dein iPhone nicht in deinem WLAN ist, sondern irgendwo im Internet?


    Du könntest es mit einer VPN-Verbindung (OpenVPN oder besser mit Wireguard) zwischen deinem PI und deinem iPhone versuchen, wenn dein Internetanschluss kein CGN-Anschluss ist. Bei DS-lite müsste dein iPhone-Provider DS zur Verfügung stellen. Wenn Du nur natives IPv4 als Internetanschluss hast, sollte das kein Problem sein.

    Remote = nicht mein WLAN , Internet von Mobilfunk-Provider oder fremdes WLAN

    Ich hatte PiVPN mit WireGuard schon mal installiert und das hat auch funktioniert. Sobald ich aber zusätzlich die OpenVPN/NordVPN Verbindung installiert und aktiviert habe, wurde kein Bit mehr vom iPhone ins Internet geschickt. Deshalb meine eingehende Frage:

    wie muss das Routing danach aufgesetzt werden, damit der Verkehr meines Smartphones über PiHole gefiltert und NordVPN geroutet wird?

    Ich schwimme nicht mit dem Strom - Ich fahre damit

  • Ich hatte PiVPN mit WireGuard schon mal installiert und das hat auch funktioniert. Sobald ich aber zusätzlich die OpenVPN/NordVPN Verbindung installiert und aktiviert habe, wurde kein Bit mehr vom iPhone ins Internet geschickt.

    Du musst im Iphone die IP-Adresse des PI für den Tunnel zu NordVPN als gateway für die default route setzen, und zusätzlich im iPhone eine definierte Route via WireGuard-VPN, um diese IP-Adresse zu erreichen.

    Oder Du benutzt im iPhone das WireGuard-Interface für die default route des iPhone und machst im PI destination-NAT. Das musst Du probieren bzw. testen, was wie funktioniert.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Du musst im Iphone die IP-Adresse des PI für den Tunnel zu NordVPN als gateway für die default route setzen, und zusätzlich im iPhone eine definierte Route via WireGuard-VPN, um diese IP-Adresse zu erreichen.

    Oder Du benutzt im iPhone das WireGuard-Interface für die default route des iPhone und machst im PI destination-NAT. Das musst Du probieren bzw. testen, was wie funktioniert.

    Ich habe die WireGuard-App installiert und die verbindet selbstständig. Was und WIE muss im Pi bezüglich Destination-NAT eingerichtet werden? Hier sind wir beim Punkt angelangt, wo meine diesbezüglichen Fähigkeiten überschritten werden; ich bin auf Hilfe angewiesen

    Ich schwimme nicht mit dem Strom - Ich fahre damit

  • ...; ich bin auf Hilfe angewiesen

    Ja, aber ich habe so eine Konstellation (... VPN_Provider-PiHole-iPhone) nicht und kann das deshalb auch nicht testen, damit ich dir hier weiter helfen kann.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden