TCP / IPv6 durch SSH-Tunnel

10

Ich frage mich, wie man TCP / IPv6-Verkehr über den SSH / IPv4-Tunnel (PTP-Verbindung) tunnelt. Ist es möglich? Wie kann ich das erreichen?


quelle
Versuchen Sie, NUR IPV6-Verkehr über den Tunnel zu tunneln? Da Sie in Ihrem SSH-Tunnel problemlos IPV5 oder V6 verwenden können, wird davon ausgegangen, dass das Netzwerk an beiden Enden dies unterstützt.
Sam Cogan
2
TCP über TCP ist normalerweise keine gute Idee: sites.inka.de/sites/bigred/devel/tcp-tcp.html TCP über TCP über TCP: Es klingt nicht besser
Reece45

Antworten:

15

Ja, es ist möglich und nicht zu schwierig, aber die Lösung ist sehr suboptimal, da SSH über TCP läuft und einen vernünftigen Overhead hat.

Der Server muss in seiner Konfigurationsdatei Folgendes enthalten sshd_config:

PermitTunnel point-to-point

Dann müssen Sie auf beiden Computern root sein . Sie stellen eine Verbindung zum Server her, indem Sie:

ssh -w any root@server

Verwenden Sie nach dem Verbinden den Befehl ip linkin beiden Systemen, um festzustellen , welches tunN- Gerät in jedem System erstellt wurde, und verwenden Sie ihn in den folgenden Befehlen. Beachten Sie, dass ich Beispiel-Site-Local-Adressen verwende, die veraltet sind, aber für diese Einführung in Ordnung sind.

Auf dem Server:

server# ip link set tun0 up
server# ip addr add fec0:1::1/112 dev tun0

Auf dem Client:

client# ip link set tun0 up
client# ip addr add fec0:1::2/112 dev tun0

Dies reicht aus, damit Sie die andere Seite durch den Tunnel pingen können, wenn keine Firewall-Regel blockiert ist. Der nächste Schritt besteht darin, Routen über den Tunnel festzulegen (net.ipv6.conf.default.forwarding = 1 nicht vergessen) und dann die Verbindungs-MTU anzupassen, um eine optimale Leistung zu erzielen.

server# sysctl net.ipv6.conf.all.forwarding=1

client# ip -6 route add default via fec0:1::1

Auf diese Weise kann Ihr Client andere Netzwerke anpingen, auf die der Server Zugriff hat, da die Ziele Routen zurück zu Ihrem Remoteclient haben.

Sie müssen auch die Verbindungs-MTU reparieren, damit der Client keine Pakete sendet, die der Server nicht weiterleiten kann. Dies hängt von der MTU der IPv6-Verbindung des Servers selbst ab. Verlassen Sie sich nicht auf die Pfad-MTU-Erkennung, da diese über den SSH-Tunnel nicht ordnungsgemäß funktioniert. Beginnen Sie im Zweifelsfall mit einem niedrigen MTU-Wert wie 1280 (für MTv6 zulässige Mindest-MTU).

Juliano
quelle
1
Die von MTv6 unterstützte Mindest-MTU beträgt 1280 (im Gegensatz zu IPv4, das eine Mindest-MTU von 576 unterstützt). Warnung: Wenn Sie Ihre MTU unter 1280 einstellen, verschwinden Ihre IPv6-Adressen und können erst nach einem Neustart von SSH erneut hinzugefügt werden!
Jeremy Visser
1
OS X hat den ipBefehl nicht, also setzen Sie die IP-Adresse mit sudo ifconfig tun0 inet6 fec0:1::2/112 up und die Route mit sudo route add -inet6 -mtu 1280 default fec0:1::1
larsr