Wie kann ein Port transparent von IPv4 zu einem Remote-IPv6-Gerät getunnelt werden?

11

Zu Hause bin ich mit einer IPv6-Adresse verbunden. Außerdem bietet mein Provider ein NAT-ähnliches Setup an, über das ich eine öffentliche IPv4-Adresse erhalte, die ich mit anderen Kunden teile (der Grund dafür ist offensichtlich, dass uns die IPv4-Adressen ausgehen).

Infolgedessen kann ich meine Geräte zu Hause (z. B. mein VPN-Gateway) nicht erreichen, wenn ich mich in einem IPv4-Netzwerk befinde. Ich habe jedoch einen Server, der sowohl eine IPv4- als auch eine IPv6-Adresse hat. Daher sollte es möglich sein, meine Heimgeräte zu erreichen, wenn ich über meinen Server gehe.

Folgendes habe ich bisher im Sinn: Da unter IPv6 jedes Gerät seine eigene IP erhält, erhält mein Server zu Hause eine statische IPv6-IP. Mein Remote-Server verfügt bereits über statisches IPv4 und IPv6.

Wenn ich jetzt meinen OpenVPN-Server zu Hause erreichen möchte, habe ich zuvor Port 1194 in meinem Router geöffnet und NAT hat dort Verbindungen an den Server weitergeleitet. In meinem neuen Szenario möchte ich eine Verbindung über Port 1194 (oder einen anderen, egal) auf meinem Remote-Server herstellen. Diese Verbindung sollte auf meinen Heimserver übertragen werden (da beide über IPv6 verfügen).

Grafisch würde dies bedeuten:

Mobiles Gerät (IPv4) -> Remote-Server (IPv4 + IPv6) -> Heimserver (IPv6)

Dies sollte jedoch nur an ausgewählten Ports geschehen (oder gibt es sogar eine cleverere Möglichkeit als die Auswahl nach Port?).

Meine Frage ist, wie erreiche ich dieses Setup?

Auf welcher Ebene sollte dies funktionieren? Wenn ich es nach Port machen möchte, muss ich das Paket natürlich auf der TCP / UDP-Ebene weiterleiten. Meine erste Idee wäre iptables, aber können iptables ein Paket an eine Remote-IP weiterleiten? Oder gibt es eine andere Software, die das kann? Oder sollte ich einen Tunnel zwischen den beiden Servern erstellen und diesen dann lokal weiterleiten? Wie würde ich das machen?

Javex
quelle
1
Haben Sie darüber nachgedacht, einen IPv6-Tunnelbroker für Ihren Laptop zu verwenden?
Michael Hampton
@MichaelHampton danke für den Vorschlag, aber ich hätte lieber einen Weg, der keine Änderungen am Gerät erfordert, da ich auch beabsichtige, eine Verbindung von meinem Telefon (Android) und wahrscheinlich anderen Geräten herzustellen. Die Einrichtung sollte aus Sicht der Geräte so einfach wie zuvor sein.
Javex

Antworten:

13

Ich habe endlich eine Lösung gefunden, bei der IPv4-Ports an reine IPv6-Hosts weitergeleitet werden, die im Wesentlichen socat verwendet:

socat TCP4-LISTEN:22,fork,su=nobody TCP6:[2a01:198:79d:1::8]:22

Meine Lösung ist im Grunde dieselbe, außer dass ich einen Hostnamen verwende, mit Ausnahme einer statischen IP. Achten Sie darauf, keine eckigen Klammern mit einem Hostnamen zu verwenden, da dieser dann als IP interpretiert wird.

Javex
quelle