Ich versuche, den IPv6-Verkehr durch einen VPN-Tunnel zu leiten. Auf diese Weise sollte ich IPv6 in einem Netzwerk verwenden können, das IPv6 nicht unterstützt.
Ich habe einen VPS, dem ein IPv6-Block zugewiesen ist. Einen Teil dieses Blocks möchte ich für OpenVPN-Clients verwenden. Der Bereich, den ich im Sinn hatte, war 2001:db8::111:800:0/112
(Präfix ist anonymisiert), weil openvpn nur / 64 und / 112 als Subnetze unterstützt.
IPv6 durch den Tunnel funktioniert bereits, vom Client kann ich den Server anpingen ( 2001:db8::111:800:1
) und auch Schnittstellen auf dem Server ( 2001:db8::111:100:100
und 2001:db8:216:3dfa:f1d4:81c0
).
Wenn ich versuche, google.com vom Client aus zu pingen, erhalte ich keine Antwort (Ping-Timeout). Um dieses Problem zu beheben, habe ich tcpdump verwendet, um den Datenverkehr auf dem Server zu erfassen, und ich kann sehen, dass die Ping-Pakete ausgehen, aber keine Antworten zurückkommen. Das Hinzufügen von Protokollregeln zu ip6tables zeigt dasselbe: Pakete gehen aus, aber nichts kommt herein.
Ich habe ein Online-Traceroute-Tool verwendet, das eine Zeitüberschreitung von meinem Server abruft. Ich habe auch versucht, die IP-Adresse direkt auf der Benutzeroberfläche festzulegen, was dazu führt, dass die IP-Adresse ( 2001:db8::111:800:1001
) erreichbar ist. Ich denke also, dass dies ein Routing-Problem ist.
Ich habe die Weiterleitung für IPv6 durch aktiviert /proc/sys/net/ipv6/conf/all/forwarding
. ip6tables lässt Richtlinien für alle Ketten zu.
Meine Frage ist, was genau benötigt Linux, um dieses Paket für eine IP zu akzeptieren, die keiner Schnittstelle zugewiesen ist, und es weiterzuleiten? Nur eine existierende Route scheint nicht genug zu sein.
Hier ist das Setup für meinen Client und Server. Bitte lassen Sie es wissen, wenn weitere Informationen benötigt werden.
Klient
# ip -6 addresses
10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100
inet6 2001:db8::111:800:1001/112 scope global
valid_lft forever preferred_lft forever
# ip -6 routes
2001:db8::111:800:0/112 dev tun0 proto kernel metric 256
2000::/3 dev tun0 metric 1024
Server
# ip -6 address
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:db8:216:3dfa:f1d4:81c0/64 scope global dynamic
valid_lft 86254sec preferred_lft 14254sec
inet6 2001:db8::111:100:100/128 scope global
valid_lft forever preferred_lft forever
12: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100
inet6 2001:db8::111:800:1/112 scope global
valid_lft forever preferred_lft forever
# ip -6 route
2001:db8::111:100:100 dev eth0 proto kernel metric 256
2001:db8::111:800:0/112 dev tun0 proto kernel metric 256
2001:db8::/64 dev eth0 proto kernel metric 256 expires 86194sec
default via fe80::230:48ff:fe94:d6c5 dev eth0 proto ra metric 1024 expires 1594sec
TRACE
(hier möglicherweise weniger) ip neighbour
, und ip route get
. Geben Sie außerdem an, wer pingt google.ca
.
POSTROUTING ... MASQUERADE
in dernat
Tabelle. Aber ich bin mir nicht sicher, ob ich das vollständig verstehe. Versuchen Sie, den IPv6-Verkehr zu tunneln? Wenn ja, haben Sie die entsprechenden Einrichtungen eingerichtet? Sind-p ipv6
Pakete in den IPv4 (!) Regeln erlaubt?