socatがIPv4スタックとIPv6スタックの両方でリッスンするようにします


3

先日、プロバイダーを切り替え、DSlite接続のみを割り当てました。大丈夫だと思った。事は-私は私のネットワークの外から私のもののいくつかにアクセスしたいです、私は今ではネイティブIPv6を手に入れたので、面倒なことはずっと少ないはずです。

私の新しい主な問題は、私がどこにいてもローミングすることを想定できないことでした。そのため、ほとんどの場合、IPv4のみのエントリポイントからアクセスしようとします。$ socat本当のデュアルスタック接続で1つのボックスにアクセスできるので、私の友人が見つかりました。したがって、IPv4のみの接続からIPv6にアクセスするのは$ socat UDP4-LISTEN:sourceport,fork,su=nobody UDP6:my-ipv6-hostname-behind.cgn:targetport、デュアルスタックマシンで実行し、その後my-dualstack-hostna.me:sourceport外部から接続するのと同じくらい簡単です。

さて、$ netstat -tulpen | grep sourceportデュアルスタックマシンではUDP4リスナーのみが表示されるため、現在の問題は次のとおりです。

  • IPv6のみの接続からアクセスするには、接続する必要があります my-ipv6-hostname-behind.cgn:targetport
  • IPv4のみの接続からアクセスするには、接続する必要があります my-dualstack-hostna.me:sourceport
  • DS(-lite)接続からのアクセスにより両方を使用できますが、できれば直接IPv6-routeを使用してください

そのためmy-dualstack-hostna.me:sourceport、ラップトップまたは電話を移動するたびに構成をルート更新するのではなく、IPv4接続とIPv6接続の両方に使用できるのは素晴らしいことです。socat両方で聞くようにする方法は?方法が必要です!$ netstat -tulpen | grep ":22"DSマシンのこれらは示します:

tcp        0      0 0.0.0.0:22 […]
tcp6       0      0 :::22      […]

netstatの出力には、TCPv4とTCPv6の両方をリッスンしているものが表示されています。それで、何が機能していないのか私には分かりませんか?
ゾレダチェ

22は私のソースポートではありません。最後の出力は、IPv6とIPv6の両方で何かをリッスンさせることが実行可能であることの証明にすぎません。socatによって作成された転送ではなく、SSHサーバーのみを表示します。前述のように、「$ netstat -tulpen | grep sourceportデュアルスタックマシンではUDP4リスナーのみが表示されます」のようになりますudp 0 0 0.0.0.0:sourceport […]
-LDericher

回答:


4

私は同じ問題を抱えていました-socatの2つのインスタンスを実行することで解決できます。1つはipv4でリッスンし、もう1つは同じipv6ポートでリッスンします

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.