INPUTレベルでのポート転送

INPUTレベルでのポート転送

INPUT レベルで IPv6 パケットの宛先ポートを変更したい。

そこで、入力レベルでnatを使用してip6tablesを使用しようとしました

しかし、このコマンドは機能しないようです

# ip6tables -t nat -I INPUT ! -i br0 -p TCP --dport 8080 -j REDIRECT --to-ports 80
ip6tables v1.2.7a: Unknown arg `--to-ports'
Try `ip6tables -h' or 'ip6tables --help' for more information.

iptable によって返されるエラーの他に、nat が INPUT レベルで動作していないのではないかと思います。

では、INPUT レベルで IPv6 パケットの宛先ポートを変更する解決策はあるのでしょうか?

転送される IPv6 パケットを変更したくないので、PREROUTING レベルで変更したくありません (ローカルプロセス用ではありません)

答え1

NATはINPUTチェーンでは機能しません。http://www.karlrupp.net/en/computer/nat_tutorial:

REDIRECT - パケットをローカルマシンにリダイレクトする

DNAT の特殊なケースは REDIRECT です。パケットはルーターのローカル ポートにリダイレクトされ、たとえば透過プロキシが可能になります。DNAT の場合、REDIRECT はそれぞれ PREROUTING チェーンと OUTPUT チェーン内で動作します。

パケットを自分のサーバーにのみリダイレクトする場合は、ルールに宛先 IP 制限を追加します (1.2.3.4 はローカル IP です)。

ip6tables -t nat -I PREROUTING ! -i br0 -p TCP -d 1.2.3.4 --dport 8080 -j REDIRECT --to-ports 80

関連情報