ip6tables - ローカルホストのIPv6 DNAT

ip6tables - ローカルホストのIPv6 DNAT

次のIPv4ルールがあります。

  1. iptables -t nat -A PREROUTING -d "server ipv4" -p tcp -m tcp --dport 80 -i eth0 - j DNAT --to-destination 127.0.0.1:55555

  2. iptables -P INPUT ACCEPT

また、アドレスを受信する単純なプロキシがありますlocalhost:127.0.0.1:55555

IPv4ではうまく動作します。

IPv6で同じことをしようとすると、次のようになります。

  1. iptables -t nat -A PREROUTING -d "server ipv6 " -p tcp -m tcp --dport 80 -i eth0 -j DNAT --to-destination [::1]:55555

  2. ip6tables -P INPUT ACCEPT

私はそれを動作させることはできません!

私はそれを動作させることができます:

  1. --to-destination ["link-local IPv6"]:55555
  2. --to-destination ["Server IPv6"]:55555

転送をオンにしてフィルタテーブルにいくつかのログ行を追加すると、転送チェーンになります。

  1. echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

  2. ip6tables -I FORWARD -j LOG --log-prefix='[filter FORWARD] '

パケットが見えますね。

[268332.372177] [フィルタ転送] IN=eth0 OUT=eth0 MAC=be:69:fd:2a:9e:bd:0a:08:f1:46:19:a1:86:df SRC= DST=0000:0000: 0000:0000:0000:0000:0000:0001 LEN=80 TC=0 HOPLIMIT=63 FLOWLBL=0 プロトコル=TCP SPT=42082 DPT=55555 ウィンドウ=28800 RES=0x00 SYN URGP=0

OUTインタフェースが「lo」の代わりに「eth0」であり、カーネルはパケットがそのサーバー用ではないと思うことを見ることができます。

私はcentOS 7を持っていて、Ubuntu 16でもこれを試しました。

ベストアンサー1

実行中のタスクにfwmarkを追加し、特別なルーティングテーブルを使用するには、IPルールを追加することをお勧めします。フォームに次のように入力します。 Route to dev lo. dnatは書き換えを担当し、fwmarkはプロキシが応答できるようにloへのルーティングを担当します。

おすすめ記事