web-dev-qa-db-ja.com

localhostポートへのipv6アドレスポート転送のiptables

ポート443の2a00:1450:400c:c01 :: 71をlocalhostポート12345にリダイレクトしたいとします。

Iptablesでそれを行うには?

更新

OK、それは、ポート> = 1000でSSLリレーを実行するWeechatです。このポートでIPv4およびIPv6と接続できます。したがって、定義済みのIPv6:Port [2a00:1450:400c:c01 :: 71]:443をIPv6 localhostポート[:: 1]:12345にバインドしたい

5
Markus

IPv6ではNATを想定していないため問題が発生する可能性がありますが、Linuxカーネル3.8以降では次のことが可能です。

ip6tables -t nat -A PREROUTING -p tcp -m tcp \
          -d 2a00:1450:400c:c01::71 --dport 443 -j REDIRECT --to-ports 12345
9
Sander Steffann

この回答は、質問が編集される前の元のバージョンに適用されます。更新された質問には、@ SanderSteffannの回答が適用されます。

iptablesはIPv6ではなくIPv4のみを処理するため、iptablesを使用してそれを行うことはできません。 ip6tablesはIPv4ではなくIPv6のみを処理するため、ip6tablesを使用してそれを行うこともできません。

IPv4とIPv6の間で変換できるプロトコルコンバータは存在します。ただし、IPv4とIPv6は同じ数のIPアドレスを持たないため、これらは変換できるIPに制限を課す可能性があります。

プロトコルトランスレータを組み合わせてIPアドレスを変更し、iptablesを使用してポート番号を変更することもできます。ただし、このような組み合わせを使用することはお勧めしません。特に、特定のニーズに関する詳細を知らない限りはそうはいきません。

どちらの方法でも、サーバーから見えるクライアントIPv4アドレス内にIPv6アドレス全体を埋め込む方法がないため、サーバーはクライアントIPv6アドレスに関する情報にすぐにはアクセスできません。

提供された限られた量の情報に基づいて、@ MichaelHamptonが行ったのと同じアドバイスを提供します。最初に適切なポートでサービスを実行するだけです。それが選択肢でない場合は、より良い質問をしてください。実行しようとしたサービス、正しいポートでリッスンするように試みた方法、および失敗した方法を説明します。

3
kasperd

これは、@ Sander Steffannに似ていますが、ハードコードされたIPアドレスではなく、インターフェイスのみで機能しました

ip6tables -t nat -I PREROUTING -i eth0 -p tcp -m tcp --dport 22 -j REDIRECT --to-ports 2222
0
Radu Toader