我有以下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:55555iptables -P INPUT ACCEPT此外,我还有一个简单的代理,它侦听localhost地址: 127.0.0.1:55555
在IPv4,它运行得很好。
当我试图在IPv6中做同样的事情时:
iptables -t nat -A PREROUTING -d "server ipv6 " -p tcp -m tcp --dport 80 -i eth0 -j DNAT --to-destination [::1]:55555ip6tables -P INPUT ACCEPT我不能让它起作用!
我能让它发挥作用:
--to-destination ["link-local IPv6"]:55555--to-destination ["Server IPv6"]:55555当我打开转发并在过滤表中添加一些日志行时,前向链.
echo 1 > /proc/sys/net/ipv6/conf/all/forwardingip6tables -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 PROTO=TCP SPT=42082 DPT=55555 WINDOW=28800 RES=0x00 SYN URGP=0
我可以看到,OUT接口是"eth0“而不是"lo",内核认为包不是用于此服务器的。
我有centOS 7,我也在Ubuntu 16中尝试过这个。
发布于 2020-06-14 22:07:47
我建议在您所做的工作中添加一个fwmark,并添加一个ip规则来使用特殊的路由表。在那个表中,您只需说:到dev lo的路由。dnat将负责重写,fwmark将负责到lo的路径,因此您的代理可以回答。
https://unix.stackexchange.com/questions/414085
复制相似问题