Wireguard VPN Server (Dual Stack) von außerhalb (DSLite) erreichen
Hallo,
ich habe mich mal hier registriert, da ich seit längerem bei einem Problem nicht weiterkomme und hoffe, dass ihr mir helfen könnt. Vorab: Ich habe wirklich sehr lange recherchiert und versucht die Grundlagen zu verstehen und unzählige Tests durchgeführt. Irgendwo hapert es aber und ich kann den Fehler einfach nicht finden.
Ich habe einen Wireguard Server auf meinem Raspberry Pi laufen. Dieser funktioniert auch über IPv4 einwandfrei. Wenn ich jedoch aus dem WLAN bei meinem Bruder (DSLite) auf mein Heimnetz zugreifen möchte, gelingt zwar der Handshake und ich kann im internen Netz IPv6 Adressen anpingen, allerdings erreiche meine Geräte nicht über deren lokale IPv4 Adressen und ins Internet komme ich auch nicht. Um es weiter zu testen wollte ich die Config mit IPv6-only laufen lassen. Ich habe zuhause natives Dualstack, verwende meinen eigenen Kabelrouter (FritzBox 6591) und auch über meinen Mobilfunkanbieter habe ich Dualstack. Ich teste die Verbindung aktuell immer über LTE.
Änderungen in /etc/dhcpcd.conf auf dem Raspi:
Änderungen in /etc/sysctl.conf:
Hier die Wireguard configs:
Server wg0:
und hier die client config:
iphone-v6-only (funktioniert nicht):
iphone-v4 (funktioniert):
Ausgabe von ifconfig:
Hier sind noch Fotos von Einstellungen in der Fritzbox. Routing habe ich bisher nicht gemacht, da ich irgendwo gelesen habe, dass das bei korrekter Konfiguration automatisch geschehen soll und ich ansonsten auch nicht wüsste, was wohin gerouted werden müsste.
Ich hoffe jemand hat eine Idee woran es liegen könnte. Wenn noch Infos fehlen bitte einfach nachfragen.
Danke für eure Antworten!
ich habe mich mal hier registriert, da ich seit längerem bei einem Problem nicht weiterkomme und hoffe, dass ihr mir helfen könnt. Vorab: Ich habe wirklich sehr lange recherchiert und versucht die Grundlagen zu verstehen und unzählige Tests durchgeführt. Irgendwo hapert es aber und ich kann den Fehler einfach nicht finden.
Ich habe einen Wireguard Server auf meinem Raspberry Pi laufen. Dieser funktioniert auch über IPv4 einwandfrei. Wenn ich jedoch aus dem WLAN bei meinem Bruder (DSLite) auf mein Heimnetz zugreifen möchte, gelingt zwar der Handshake und ich kann im internen Netz IPv6 Adressen anpingen, allerdings erreiche meine Geräte nicht über deren lokale IPv4 Adressen und ins Internet komme ich auch nicht. Um es weiter zu testen wollte ich die Config mit IPv6-only laufen lassen. Ich habe zuhause natives Dualstack, verwende meinen eigenen Kabelrouter (FritzBox 6591) und auch über meinen Mobilfunkanbieter habe ich Dualstack. Ich teste die Verbindung aktuell immer über LTE.
Änderungen in /etc/dhcpcd.conf auf dem Raspi:
slaac hwaddr
interface eth0
static ip_address=192.168.178.66/24
static ip6_address=fd00::abcd:32ff:fghi:2211/64 # Diese IP wird in meiner Fritzbox für den Raspi angezeigt (geändert)
static routers=192.168.178.1
static domain_name_servers=192.168.178.66 fde5:b88d:95c4::1 # Pihole
Änderungen in /etc/sysctl.conf:
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.accept_ra = 2
Hier die Wireguard configs:
Server wg0:
Address = 192.168.179.1/24, fd08:dead:beef:affe::1/64 # Hier habe ich mich an den Vorschlag von aqui gehalten.
ListenPort = 1195
PrivateKey = 4D5q9x.x.x.x.x.x.x.x.x.x.nhXw=
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -A FORWARD -o %i -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i %i -j ACCEPT; ip6tables -D FORWARD -o %i -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# iphone v6 only
[Peer]
PublicKey = kP.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.Vo=
AllowedIPs = fd08:dead:beef:affe::2/128
und hier die client config:
iphone-v6-only (funktioniert nicht):
[Interface]
PrivateKey = iN.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x4jk8=
Address = fd08:dead:beef:affe::2/64
ListenPort = 1195
DNS = fde5:b88d:95c4::1,192.168.178.66 # Adressen meines Raspis auf dem Pihole läuft
[Peer]
PublicKey = +P.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.4z=
Endpoint = meine.dynv6.adresse.net # kann ich übers Netz anpingen. Sowohl IPv4 als auch IPv6. Die IPv6 Adresse ist die globale Adresse des Raspis
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
iphone-v4 (funktioniert):
[Interface]
PrivateKey = M.x.x.x.x.x=
Address = 192.168.179.3/24, fd08:dead:beef:affe::3/64
ListenPort = 1195
DNS = 192.168.178.66,fde5:b88d:95c4::1
[Peer]
PublicKey = +P.x.x.x.x.xx.zQ=
Endpoint = meine.dynv6.adresse.net:1195
AllowedIPs = 0.0.0.0/0,::/0
PersistentKeepalive = 25
Ausgabe von ifconfig:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.178.66 netmask 255.255.255.0 broadcast 192.168.178.255
inet6 2ax:x:x:x:x:x:0 prefixlen 64 scopeid 0x0<global>
inet6 fd00::abcd:32ff:fghi:2211 prefixlen 64 scopeid 0x0<global>
inet6 fe80::abcd:32ff:fghi:2211 prefixlen 64 scopeid 0x20<link>
ether dc:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
RX packets 111044 bytes 55124810 (52.5 MiB)
RX errors 0 dropped 3196 overruns 0 frame 0
TX packets 106337 bytes 55316878 (52.7 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 (Lokale Schleife)
RX packets 338 bytes 29037 (28.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 338 bytes 29037 (28.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1420
inet 192.168.179.1 netmask 255.255.255.0 destination 192.168.179.1
inet6 fd08:dead:beef:affe::1 prefixlen 64 scopeid 0x0<global>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 38 bytes 4468 (4.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 57 bytes 9068 (8.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Hier sind noch Fotos von Einstellungen in der Fritzbox. Routing habe ich bisher nicht gemacht, da ich irgendwo gelesen habe, dass das bei korrekter Konfiguration automatisch geschehen soll und ich ansonsten auch nicht wüsste, was wohin gerouted werden müsste.
Ich hoffe jemand hat eine Idee woran es liegen könnte. Wenn noch Infos fehlen bitte einfach nachfragen.
Danke für eure Antworten!
Please also mark the comments that contributed to the solution of the article
Content-Key: 605409
Url: https://administrator.de/contentid/605409
Printed on: May 4, 2024 at 13:05 o'clock
13 Comments
Latest comment
Kann es sein das du und dein Bruder als 2 FritzBox Knechte im lokalen LAN die gleiche v4 IP Adresse nutzt oder einer der IP Netz der des internen Wireguard VPN Netzes entspricht ??
Das es dann nicht klappt liegt auf der Hand. Siehe hier:
VPNs einrichten mit PPTP
Andere Option wäre die interne RFC 1918 IP Adresse des DS-Lite Providers das die ggf. mit einer eurer privaten Adressen sich überschneidet.
In der Regel nutzen CGN Provider aber RFC 6598 IP Adressen (100.64.0.0 /10) so das es eigentlich nicht zu einer RFC 1918 Kollision kommen kann. Aber nicht jeder DS-Lite Provider nutzt auch eine intelligente IP Adressierung.
Das solltest du also checken.
Was auch mehr als komisch ist, ist die Tatsache das der RasPi scheinbar mit LAN und WLAN in unterschiedlichen lokalen IP Netzen ist. Was ist der Sinn und Zweck davon ??
Das .179er Netz der FB ist doch in aller Regel das FB Gastnetz oder ?
Da wäre es ja mehr als fatal wenn ein RasPi Interface als Client im Gastnetz ist. Mehr oder minder dann ein schwere IP Design Fehler und fatal für die Sicherheit des VPN ?! Da wäre eine Erklärung zum Warum hilfreich.
Ansonsten hast du alles richtig gemacht und es wäre unverständlich warum es aus dem lokalen LAN des Bruders nicht klappen sollte.
Auch wenn er DS-Lite Opfer ist, ist es ja dein Client, also der VPN Initiator, der die Tunnelverbindung aufbaut und das geht auch immer über DS-Lite mit CGN.
Grundlegende IP Infos findest du auch im hiesigen OpenVPN Tutorial. Diese sind vollkommen identisch zum Wireguard Setup.
Merkzettel: VPN Installation mit OpenVPN
Das es dann nicht klappt liegt auf der Hand. Siehe hier:
VPNs einrichten mit PPTP
Andere Option wäre die interne RFC 1918 IP Adresse des DS-Lite Providers das die ggf. mit einer eurer privaten Adressen sich überschneidet.
In der Regel nutzen CGN Provider aber RFC 6598 IP Adressen (100.64.0.0 /10) so das es eigentlich nicht zu einer RFC 1918 Kollision kommen kann. Aber nicht jeder DS-Lite Provider nutzt auch eine intelligente IP Adressierung.
Das solltest du also checken.
Routing habe ich bisher nicht gemacht, da ich irgendwo gelesen habe, dass das bei korrekter Konfiguration automatisch geschehen soll
Was diese etwas wirre und kryptische Anmerkung bedeutet weiss wohl nur der Wind. Oder...du erklärst es uns nochmal.Was auch mehr als komisch ist, ist die Tatsache das der RasPi scheinbar mit LAN und WLAN in unterschiedlichen lokalen IP Netzen ist. Was ist der Sinn und Zweck davon ??
Das .179er Netz der FB ist doch in aller Regel das FB Gastnetz oder ?
Da wäre es ja mehr als fatal wenn ein RasPi Interface als Client im Gastnetz ist. Mehr oder minder dann ein schwere IP Design Fehler und fatal für die Sicherheit des VPN ?! Da wäre eine Erklärung zum Warum hilfreich.
Ansonsten hast du alles richtig gemacht und es wäre unverständlich warum es aus dem lokalen LAN des Bruders nicht klappen sollte.
Auch wenn er DS-Lite Opfer ist, ist es ja dein Client, also der VPN Initiator, der die Tunnelverbindung aufbaut und das geht auch immer über DS-Lite mit CGN.
Grundlegende IP Infos findest du auch im hiesigen OpenVPN Tutorial. Diese sind vollkommen identisch zum Wireguard Setup.
Merkzettel: VPN Installation mit OpenVPN
iphone-v6-only (funktioniert nicht):
Address = fd08:dead:beef:affe::2/64
Ist ja auch logisch das das nicht läuft.IPv6 kennt kein NAT und du willst mit einer privaten IPv6 ULA Adresse ins Internet?? Dat kann ja nich .Address = fd08:dead:beef:affe::2/64
Wenn du mit IPv6 ONLY mit allem Traffic durch den WG-Tunnel willst und über den Raspi auch via IPv6 ins Internet dann musst du dem WIreguard-Client auch eine öffentliche IPv6 Adresse aus deinem dir vom Provider zugeteilten IPv6 Subnetz zuweisen, denn eine ULA wird logischerweise nicht ins INet geroutet. Ohne festes IPv6 Subnetz am Server-Standort ist das mit Wireguard schlecht machbar denn du müsstest erstens die Wireguard-Peers am Server regelmäßig updaten und die Client-Config natürlich auch damit sie das aktuelle Prefix wiederspiegeln. Für so einen Fall ist dann eine Config die zusätzlich IPv4 im Tunnel beinhaltet Pflicht damit du noch ins Internet kommst, oder du nimmst ein anderes VPN-Protokoll wie OpenVPN mit sich Adressen besser automatisiert verteilen lassen.
Das Wireguard Netz ist 192.168.179.0/24
Sorry, du hast recht... "wg0" ist bei mir glatt als WLAN Adapter durchgegangen. Wie peinlich... Sorry für die Verwirrung...So oder so ist .179.0 aber keine besonders gute Wahl denn das ist das FritzBox Gastnetz. Intern ist es besser etwas "exotischere" IP Netze zu verwenden. Den Grund kannst du hier nachlesen.
Das ist aber letztlich nicht die Ursache hier wenn die .179.0 nirgendwo in Benutzung ist.
komischerweise wird mein Kommentar immer unter die andere Antwort gesetzt. Sorry dafür.
Das machst du selber falsch...Antworten kannst du auch sinnvoll zusammenfassen in einem Thread mit einem "@" vor dem Usernamen...
Somit müsste ich dem Raspi ja davon ein /64 Subnetz "geben" können.
Das macht deine FritzBox an einem Dual Stack Anschluss automatisch wenn das aktiviert ist !Auf dem RasPi musst du die statische Vergabe löschen und in der /etc/dhcpcd.conf folgendes eintragen:
# Generate Stable Private IPv6 Addresses instead of hardware based ones
# slaac private
slaac hwaddr
# Example static IP configuration:
interface eth0
static ip_address=212.128.162.9/28
# static ip6_address=2a00:fa4:2204:0073:dead:beef:affe:222/64
static routers=212.128.162.1
static domain_name_servers=212.128.53.1 212.128.53.2 2a00:fa4:220:5::53
Damit schaltet man die Verwürfelung mit Private v6 ab und der RasPi bekommt von der FB automatisch eine IPv6 EUI-64 format Adresse auf Basis seiner Mac.
Alternativ kannst du ihm auch eine statische geben aber das ist dann immer abhängig was die FB am LAN Port für ein /64er v6 Netz ausgibt und müsstest du immer nachtragen. Per SLAAC lernt der RasPi das alles automatisch und du musst nur hie und da immer mal nachsehen wenn du via PD ein anderes lokales v6 LAN bekommen hast.
Zitat von @juma2312:
Somit müsste ich dem Raspi ja davon ein /64 Subnetz "geben" können. Allerdings weiß ich nicht genau wie ich das anstelle...
Du musst erst mal dem Raspi sagen das er ein Prefix Request absetzen soll damit du vom vorgelagerten Router ein IPv6 Subnetz zugeteilt bekommstSomit müsste ich dem Raspi ja davon ein /64 Subnetz "geben" können. Allerdings weiß ich nicht genau wie ich das anstelle...
https://wiki.debian.org/IPv6PrefixDelegation
Aus diesem Netz kannst du du dem Wireguard-Interface Server-Interface und den WG Clients Adressen vergeben.
Mein Präfix ändert sich nicht allzu häufig und es wäre für mich ein vertretbarer Aufwand diesen in den Configs zu ändern, wenn er sich ändert.
Schlecht wenn dein Zugang genau dann ausfällt wenn du unterwegs bist . Sowas umgeht man leicht mit einem kleinen vServer z.B. bei Netcup und festem IPv6 Präfix wenn man daheim keins hat oder bekommt.Zitat von @145916:
iphone-v6-only (funktioniert nicht):
Address = fd08:dead:beef:affe::2/64
Ist ja auch logisch das das nicht läuft.IPv6 kennt kein NAT und du willst mit einer privaten IPv6 ULA Adresse ins Internet??Address = fd08:dead:beef:affe::2/64
Sicher kann man auch NAT mit IPv6 machen. In manchen Umgebungen leider nicht vermeidbar
Sicher kann man auch NAT mit IPv6 machen.
Ist Blödsinn und das Gros der Router lässt das auch gar nicht zu !In manchen Umgebungen leider nicht vermeidbar
Sorry, aber das ist Unsinn. In welchen ominösen "Umgebungen" sollte das denn nicht vermeidbar sein ?!NAT ist einzig und allein nur aus dem Mangel an IPv4 Adressen geboren. Ein Umstand den es bei IPv6 nicht mehr gibt. Folglich kann es auch solche "Umgebungen" nicht mehr geben bei v6.
hat der Raspi nur eine globale IPv6 Adresse bekommen mit dem gleichen Präfix wie die anderen Geräte in meinem LAN.
Das war ja auch der Sinn der Sache ! Works as designed.Klar wenn du ein anderes Router Interface auch mit einem /64er Netz beglücken willst dann brauchst du ja auch ein PD und das erledigt dann dein obiges Kommando.
Was aber dennoch an der ganzen Geschichte höchst unklar ist ist das es nicht mit IPv4 funktioniert.
Auch das müsste normalerweise fehlerfrei so laufen auch völlig ohne IPv6.
Aber egal...wenns nun klappt ist ja alles gut !
Case closed !
Zitat von @aqui:
NAT ist einzig und allein nur aus dem Mangel an IPv4 Adressen geboren. Ein Umstand den es bei IPv6 nicht mehr gibt. Folglich kann es auch solche "Umgebungen" nicht mehr geben bei v6.
Sicher kann man auch NAT mit IPv6 machen.
Ist Blödsinn und das Gros der Router lässt das auch gar nicht zu !In manchen Umgebungen leider nicht vermeidbar
Sorry, aber das ist Unsinn. In welchen ominösen "Umgebungen" sollte das denn nicht vermeidbar sein ?!NAT ist einzig und allein nur aus dem Mangel an IPv4 Adressen geboren. Ein Umstand den es bei IPv6 nicht mehr gibt. Folglich kann es auch solche "Umgebungen" nicht mehr geben bei v6.
Wie gesagt, alles schon gesehen. In einem Fall ging es um die Nutzung eines PI Address Space.