
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