Eu tenho as seguintes regras do IPv4:
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
iptables -P INPUT ACCEPT
Além disso, tenho um proxy simples que ouve o endereço localhost
: 127.0.0.1:55555
No IPv4, está funcionando bem.
Quando tentei fazer o mesmo no IPv6:
iptables -t nat -A PREROUTING -d "server ipv6 " -p tcp -m tcp --dport 80 -i eth0 -j DNAT --to-destination [::1]:55555
ip6tables -P INPUT ACCEPT
Eu não consigo fazer isso funcionar!
Consegui fazê-lo funcionar com:
--to-destination ["link-local IPv6"]:55555
--to-destination ["Server IPv6"]:55555
Quando ligo o encaminhamento e adiciono alguma linha de registro na tabela de filtros, na cadeia de encaminhamento.
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
ip6tables -I FORWARD -j LOG --log-prefix='[filter FORWARD] '
Eu posso ver o pacote.
[268332.372177] [filter FORWARD] 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 PROTO=TCP SPT=42082 DPT=55555 WINDOW=28800 RES=0x00 SYN URGP=0
Eu posso ver que a interface OUT é "eth0" e não "lo", e o kernel acha que o pacote não é destinado a este servidor.
Eu tenho centOS 7, e eu tentei isso no Ubuntu 16 também.