Lassen Sie Socat sowohl auf IPv4- als auch auf IPv6-Stacks hören

1874
LDericher

Switched Provider neulich, sie vergeben nur DSlite-Verbindungen. Mir geht es gut, dachte ich. Die Sache ist - ich möchte auf einige meiner Sachen von außerhalb meines Netzwerks zugreifen, was jetzt viel weniger lästig sein sollte, da ich natives IPv6 bekam.

Mein neues Hauptproblem bestand darin, dass ich nicht davon ausgehen kann, dass ich überall unterwegs bin. Daher versuche ich meistens, von einem IPv4-Einstiegspunkt aus zuzugreifen. Gefunden $ socatwurde mein Freund, da ich auf eine Box mit einer echten Dualstack-Verbindung zugreifen kann. Der Zugriff auf mein IPv6 über eine reine IPv4-Verbindung ist so einfach wie das Ausführen $ socat UDP4-LISTEN:sourceport,fork,su=nobody UDP6:my-ipv6-hostname-behind.cgn:targetportauf dem Dualstack-Computer und die anschließende Verbindung my-dualstack-hostna.me:sourceportvon außen.

Nun, $ netstat -tulpen | grep sourceportauf der dualstacked Maschine zeigt nur einen udp4-Hörer - so mein aktuelles Problem ist:

  • Für den Zugriff über eine reine IPv6-Verbindung muss eine Verbindung hergestellt werden my-ipv6-hostname-behind.cgn:targetport
  • Für den Zugriff über eine reine IPv4-Verbindung muss eine Verbindung hergestellt werden my-dualstack-hostna.me:sourceport
  • Der Zugriff über eine DS-Verbindung ermöglicht es mir, beide zu verwenden, vorzugsweise jedoch die direkte IPv6-Route

Daher wäre es großartig, sowohl my-dualstack-hostna.me:sourceportfür IPv4- als auch für IPv6-Verbindungen verwenden zu können und die Konfiguration nicht bei jedem Umzug meines Laptops oder Telefons durch ein Root-Update zu aktualisieren! Wie kann socatman beides hören? Es muss einen Weg geben! $ netstat -tulpen | grep ":22"auf der DS-Maschine zeigt diese:

tcp 0 0 0.0.0.0:22 […] tcp6 0 0 :::22 […] 
1
Ihre netstat-Ausgabe zeigt etwas an, das sowohl TCPv4 als auch TCPv6 überwacht. Also ist mir nicht klar, was nicht funktioniert? Zoredache vor 9 Jahren 0
22 ist nicht mein Quellport. Die letzte Ausgabe ist nur ein Beweis dafür, dass es möglich ist, etwas sowohl auf IPv6 als auch auf IPv6 zu hören. Es zeigt nur einen SSH-Server, nicht die von socat erstellte Weiterleitung. Wie bereits erwähnt, "" $ netstat -tulpen | grep sourceport "auf dem Dualstack-Computer enthüllt nur einen UDP4-Listener", wie "udp 0 0 0.0.0.0:sourceport […]" LDericher vor 9 Jahren 0

1 Antwort auf die Frage

3
nosyjoe

Ich hatte das gleiche Problem - Sie können das Problem lösen, indem Sie zwei Instanzen von socat ausführen, eine, die auf ipv4 hört, und eine, die auf demselben ipv6-Port hört, indem Sie jede an ihre jeweilige Adresse binden, wie folgt :

socat UDP4-LISTEN:sourceport,bind=<ipv4-addr>,fork,su=nobody UDP6:my-ipv6-hostname-behind.cgn:targetport  socat UDP6-LISTEN:sourceport,bind=<ipv6-addr>,fork,su=nobody UDP6:my-ipv6-hostname-behind.cgn:targetport