CentOS 6.9下的iptables在本机用DNAT转发指定IP到内网IP无效的问题解决(127.0.0.1)
比如:
iptables -t nat -A OUTPUT -p tcp -d 192.168.1.0/24 --dport 2222 -j DNAT --to-destination 127.0.0.1:2222
或者iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 4242 -j DNAT --to-destination 11.22.33.44:5353
解决方法:
1、在/etc/sysctl.conf增加转发
net.ipv4.conf.eth0.route_localnet=1
然后刷新一下sysctl -p,如果不想永久可以直接用当次生效的模式:sysctl -w net.ipv4.conf.eth0.route_localnet=1
完整的示例:
iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 4242 -j DNAT --to-destination 11.22.33.44:5353 sysctl -w net.ipv4.conf.eth0.route_localnet=1 #这一步可以在/etc/sysctl.conf增加使其变成永久的,增加后用sysctl -p进行生效 iptables -t nat -A POSTROUTING -p tcp -s 127.0.0.1 -d 11.22.33.44 --dport 5353 -j SNAT --to-source $your-eth0-ip
参考:
https://unix.stackexchange.com/questions/111433/iptables-redirect-outside-requests-to-127-0-0-1
https://serverfault.com/questions/551487/dnat-from-localhost-127-0-0-1