OpenVPN Server mit IPv4 und IPv6 - IPv4 keine Verbindung
Hallo zusammen,
ich versuche gerade einen OpenVPN Server mit einer public IPv4 und einer global scope IPv6, nach einer Anleitung zu installieren.
Hier der Link:
https://community.hetzner.com/tutorials/install-and-configure-openvpn-on ...
Habe mir dafür extra einen VPS Server bei Hetzner gemietet, da colinardo, in diesem Thread OpenWRT mit Wireguard IPv6 im LAN erwähnt hat, dass Hoster zum Teil die IPv6 Subnetze nicht richtig routen, sondern nur, die IPs die auch dem Server zugeordnet sind.
Ich habe also alles exakt wie in der Anleitung gemacht und dann auf der Seite https://ipv6-test.com/ geschaut, was rauskommt.
Leider geht nur IPv6.
Bei IPv6 sehe ich auch die zugeordnete IPv6 vom Server. Funktioniert, wie es soll.
Kann ich dann auch an Webseiten testen die only IPv4 sind.
Die gehen dann nicht. Auch Ping auf IPv4 geht nicht.
Ich habe wie gesagt, das Tutorial exakt befolgt.
Einträge in sysctl.conf und Firewall, wie im Tutorial.
Das ganze schon einmal wiederholt und davor den Server zurückgesetzt.
Server ist Debian 9.
Der Eintrag tun-ipv6 ist wohl veraltet aber ich hab mal nichts verändert.
Hier die Configs:
Server:
und der Client:
Hier route -6 -n
und route -n
Was mir auffällt, ist dass die public IPv4 keine route Eintrag hat.
Grüße
FISI
ich versuche gerade einen OpenVPN Server mit einer public IPv4 und einer global scope IPv6, nach einer Anleitung zu installieren.
Hier der Link:
https://community.hetzner.com/tutorials/install-and-configure-openvpn-on ...
Habe mir dafür extra einen VPS Server bei Hetzner gemietet, da colinardo, in diesem Thread OpenWRT mit Wireguard IPv6 im LAN erwähnt hat, dass Hoster zum Teil die IPv6 Subnetze nicht richtig routen, sondern nur, die IPs die auch dem Server zugeordnet sind.
Ich habe also alles exakt wie in der Anleitung gemacht und dann auf der Seite https://ipv6-test.com/ geschaut, was rauskommt.
Leider geht nur IPv6.
Bei IPv6 sehe ich auch die zugeordnete IPv6 vom Server. Funktioniert, wie es soll.
Kann ich dann auch an Webseiten testen die only IPv4 sind.
Die gehen dann nicht. Auch Ping auf IPv4 geht nicht.
Ich habe wie gesagt, das Tutorial exakt befolgt.
Einträge in sysctl.conf und Firewall, wie im Tutorial.
Das ganze schon einmal wiederholt und davor den Server zurückgesetzt.
Server ist Debian 9.
Der Eintrag tun-ipv6 ist wohl veraltet aber ich hab mal nichts verändert.
Hier die Configs:
Server:
port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
auth SHA512
tls-auth /etc/openvpn/ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
local XY.XYY.YYY.YYY
ifconfig-pool-persist /etc/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
server-ipv6 XXXX:XXX:XXXX:1ff9:80::/112
tun-ipv6
push tun-ipv6
ifconfig-ipv6 XXXX:XXX:XXXX:1ff9::1 XXXX:XXX:XXXX:1ff9::2
push "route-ipv6 XXXX:XXX:XXXX:1ff9:2::/64"
push "route-ipv6 2000::/3"
push "dhcp-option DNS 2606:4700:4700::1111"
push "dhcp-option DNS 2606:4700:4700::1001"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
client-to-client
status /etc/openvpn/openvpn-status.log
verb 3
crl-verify /etc/openvpn/crl.pem
und der Client:
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
tun-mtu 1500
mssfix 1420
remote XY.XYY.YYY.YYY 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
auth-nocache
cipher AES-256-CBC
setenv opt block-outside-dns
key-direction 1
verb 3
<ca>
-----BEGIN CERTIFICATE-----
DATEN ENTFERNT
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
DATEN ENTFERNT
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
DATEN ENTFERNT
-----END PRIVATE KEY-----
</key>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
DATEN ENTFERNT
-----END OpenVPN Static key V1-----
</tls-auth>
Hier route -6 -n
root@vpn:~# route -6 -n
Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
XXXX:XXX:XXXX:1ff9:80::/112 :: U 256 1 895 tun0
XXXX:XXX:XXXX:1ff9::/64 :: U 256 0 0 eth0
fe80::/64 :: U 256 0 0 eth0
fe80::/64 :: U 256 0 0 tun0
::/0 fe80::1 UG 1024 1 608 eth0
::/0 :: !n -1 1 1504 lo
::1/128 :: Un 0 2 5 lo
XXXX:XXX:XXXX:1ff9::/128 :: Un 0 1 0 lo
XXXX:XXX:XXXX:1ff9::1/128 :: Un 0 1 0 lo
XXXX:XXX:XXXX:1ff9:80::/128 :: Un 0 1 0 lo
XXXX:XXX:XXXX:1ff9:80::1/128 :: Un 0 2 6 lo
fe80::/128 :: Un 0 1 0 lo
fe80::/128 :: Un 0 1 0 lo
fe80::9400:ff:fec0:c3c8/128 :: Un 0 2 9 lo
fe80::c68a:504d:22ff:170f/128 :: Un 0 1 0 lo
ff00::/8 :: U 256 0 0 eth0
ff00::/8 :: U 256 1 1 tun0
::/0 :: !n -1 1 1504 lo
und route -n
root@vpn:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.31.1.1 0.0.0.0 UG 0 0 0 eth0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
172.31.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
Was mir auffällt, ist dass die public IPv4 keine route Eintrag hat.
Grüße
FISI
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 771712423
Url: https://administrator.de/contentid/771712423
Ausgedruckt am: 21.11.2024 um 16:11 Uhr
7 Kommentare
Neuester Kommentar
Den OpenVPN Merkzettel hast du Schritt für Schritt abgearbeitet ?
Merkzettel: VPN Installation mit OpenVPN
Du solltest die Protokolldefinitionen auch dediziert mit "udp4" bezeichnen bei Dual Stack.
Überflüssige Kommandos wie deine "sndbuf / rcvbuf" solltest du entfernen bzw. auf dem Default belassen. Gilt auch für den Client mit seinen tunnel mtu und mss Werten die sind eh die Default Werte und kannst du deshalb auch weglassen.
Hilfreich wie immer in solchen Fällen ist das Server und Client Log beim Aufbau der v4 Verbindung.
Hast du zudem auch beachtet das du NAT/Masquerading (IP Adress Translation) am Server machen musst denn dein internes VPN Client IP Netz ist ein RFC 1918 privates IP Netz was im Internet nicht geroutet wird. -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Zum NAT machst du leider keinerlei Angaben.
Merkzettel: VPN Installation mit OpenVPN
Du solltest die Protokolldefinitionen auch dediziert mit "udp4" bezeichnen bei Dual Stack.
Überflüssige Kommandos wie deine "sndbuf / rcvbuf" solltest du entfernen bzw. auf dem Default belassen. Gilt auch für den Client mit seinen tunnel mtu und mss Werten die sind eh die Default Werte und kannst du deshalb auch weglassen.
Hilfreich wie immer in solchen Fällen ist das Server und Client Log beim Aufbau der v4 Verbindung.
Hast du zudem auch beachtet das du NAT/Masquerading (IP Adress Translation) am Server machen musst denn dein internes VPN Client IP Netz ist ein RFC 1918 privates IP Netz was im Internet nicht geroutet wird. -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Zum NAT machst du leider keinerlei Angaben.
Deshalb vermute ich, als Laie, dass die IPv4 Route auf dem OpenVPN Server fehlt,
Das wäre ja Unsinn. Du kannst ja oben eine öffentliche IPv4 Adresse vom Server aus pingen ! Würde deine Default Route fehlen oder falsch sein dann wäre das gar ja nicht möglich. Das ist also OK bzw. ein ip route show sollte dir das auch zeigen.Anhand deiner Outputs oben kann man ja auch sehen das der VPN Tunnel fehlerfrei zustande kommt sowohl für IPv4 als auch IPv6. OpenVPN selber ist damit auch raus als Fehlerquelle.
Vermutung ist das irgend etwas mit dem Masquerading/NAT nicht klappt, sprich das der VPN Client Traffic nicht v4 geNATet wird.
Verdächtig ist die RFC 1918 IP Adresse 172.31.1.1 auf dem Ethernet 1 Interface. Das lässt befürchten das Hetzner ggf. selber intern RFC 1918 IP Adressen nutzt und diese nochmal global NATet.
Hier wäre mal ein ip address show vom Server hilfreich. Auch ein route print von deinem OpenVPN Windows 10 Client wäre hilfreich bei aktivem Tunnel.
Die 172.31er RFC 1918 Adresse ist auf alle Fälle eine Adresse die da normal NICHT hingehört bzw. irgendwie ein Indiz ist das der Provider da intern nicht mit öffentlichen IPs arbeitet. Das solltest du nochmals genauer ansehen.
Ggf. auch mit tcpdump dir mal den VPN Traffic ansehen.
so ein Konstrukt ist, wie colinardo das in dem Wireguard Post von Netcup beschrieben hat.
Zumindestens für IPv4 kann es das ja nicht sein, denn der NAT/Masquerading Prozess im Server setzt ja alles um auf die (eigentlich) öffentliche IP Adresse des VPN Servers. Aus dem Internet sieht es also so aus als ob aller Traffic der VPN Netze dahinter nur von dieser Adresse gesendet wird. Klassisches und simples Prinzip wie es an jedem Heimnetz mit xDSL NAT Router der Fall ist.Verdächtig ist hier das die Server Adresse eine RFC 1918 IP ist die im Internet NICHT geroutet wird. Das lässt wieder irgendein NAT "Konstrukt" beim Hoster befürchten weil der keine IPv4 Adressen mehr hat.
https://www.heise.de/newsticker/meldung/Das-war-s-mit-IPv4-Adressen-in-E ...
Die Hostadresse inet 9X.XXX.XXX.178/32 ist ja eine öffentliche. Irritierend ist aber die Subnetzmaske mit 32 Bit. Das ist zwar nicht falsch zeigt aber das die irgendwie mit Hostrouting o.ä. arbeiten. Da kann man jetzt nur im freien Fall spekulieren wie deren Netzwerk dahinter aussieht. Das wirst du vermutlich ohne einen Anruf der Hotline nicht klären können. Das Problem liegt aber auf alle Fälle hier.
Das zeigt auch dein Client Routing Output der nur das Servernetz als Hostroute propagiert. Eigentlich sollte er das gar nicht, da du kein Push Kommando dafür gesetzt hast.
Was noch auffällt ist das die Metrik deiner Default Route über den OVPN Tunnel schlechter ist als deine lokale über das lokale LAN. Der Windows Client wird also primär immer das lokale Default Gateway verwenden anstatt der OVPN Tunneladresse. Das must du ggf. auch noch anpassen. Ein Traceroute (tracert bei Winblows) sollte dir das anhand der Routing Hops sofort zeigen.
https://wiki.ubuntuusers.de/IPv6/Privacy_Extensions/
https://www.elektronik-kompendium.de/sites/net/1601271.htm
Dadurch verändert sie sich dynamisch um keine Rückschlüsse auf den User zuzulassen. Ist aber irgendwie komisch, denn sie ist statisch zugewiesen was das eigentlich verhindert. Ggf. solltest du die PEs mal deaktivieren im Server um zu sehen ob das dann verschwindet.
Das zeigt auch dein Client Routing Output der nur das Servernetz als Hostroute propagiert. Eigentlich sollte er das gar nicht, da du kein Push Kommando dafür gesetzt hast.
Was noch auffällt ist das die Metrik deiner Default Route über den OVPN Tunnel schlechter ist als deine lokale über das lokale LAN. Der Windows Client wird also primär immer das lokale Default Gateway verwenden anstatt der OVPN Tunneladresse. Das must du ggf. auch noch anpassen. Ein Traceroute (tracert bei Winblows) sollte dir das anhand der Routing Hops sofort zeigen.
Interessant ist, dass dort die IPv4, die mit ip addr show angezeigt wird nicht hinterlegt ist:
Das ist auch klar und du siehst sicher selber warum ! Die v4 IP des Servers kommt per DHCP dort und die v6 liegt auf einem Subinterface.Ich verstehe auch nicht warum die IPv6 (global scope) mit deprecated bezeichnet wird.
Das kommt sehr wahrscheinlich dadurch das deine v6 Adresse mit Privacy Extensions rennt:https://wiki.ubuntuusers.de/IPv6/Privacy_Extensions/
https://www.elektronik-kompendium.de/sites/net/1601271.htm
Dadurch verändert sie sich dynamisch um keine Rückschlüsse auf den User zuzulassen. Ist aber irgendwie komisch, denn sie ist statisch zugewiesen was das eigentlich verhindert. Ggf. solltest du die PEs mal deaktivieren im Server um zu sehen ob das dann verschwindet.
dann ist es für komisch hoch 64 und somit ausserhalb meiner Vorstellungskraft.
Deiner vielleicht aber nicht die eines Netzwerkers. Aber man müsste dazu das Provider Setup kennen. Hier kann man nur im freien Fall raten was wenig zielführend ist.Ruf die Hotline an und beschwere die das dein NAT auf die per DHCP zugewiesene /32 Server Adresse nicht klappt und was der Grund ist. Die Antwort dürfte spannend für alle Beteiligten sein... Es dürften aber in der Tat das Setup der VPS Server sein. Das stehen die Einschränkungen sicher im Kleingedruckten.
rufe ich im administrator.de wieder um Hilfe.
Immer gerne ! Wie kann ich einen Beitrag als gelöst markieren?