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 

原文地址:https://www.cnblogs.com/EasonJim/p/8966925.html