来自本地主机的DNAT(127.0.0.1)

我想build立一个TCP DNAT从127.0.0.1,端口4242到11.22.33.44,在Linux 3.x端口5353(目前3.2.52,但我可以升级,如果需要)。

它看起来像简单的DNAT规则设置不起作用, telnet 127.0.0.1 4242Trying 127.0.0.1...挂起一分钟,然后超时。 也许是因为内核丢弃了返回的数据包(比如SYN + ACK),因为它认为是火星。 我不需要解释为什么简单的解决scheme不起作用,我需要一个解决scheme,即使它很复杂(例如它涉及创build可能的规则)。

我可以从127.0.0.0/8networking之外的另一个本地IP地址build立一个通常的DNAT,但现在我需要127.0.0.1作为目的地址。 我知道我可以设置一个用户级的端口转发过程,但是现在我需要一个可以使用iptables设置的解决scheme,而不需要帮助程序。

我一个小时在Google上search。 有人问了很多次,但我找不到任何有效的解决办法。

还有关于DNAT到127.0.0.1的许多问题,但我不需要,我需要相反的。

请注意,单个iptables -j REDIRECT规则将不起作用,因为我需要将传出数据包的IP地址从127.0.0.1更改为11.22.33.44, -j REDIRECT无法更改IP地址。

  • 无法回送到本地PHP网关导致nginx超时,而用ufw设置防火墙
  • 在浏览器中忽略子域的HSTS
  • 编辑apache虚拟主机和ubuntu主机文件?
  • Sendmail到本地域忽略MXlogging(第2部分)
  • 无法使用内部IP访问Mamp服务器
  • 在监听端口上使用netstat在“本地地址”字段中localhost:6666和:6666之间的区别是什么
  • 2 Solutions collect form web for “来自本地主机的DNAT(127.0.0.1)”

    这是你需要的东西吗? iptables端口redirect不适用于本地主机

     iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 443 -j REDIRECT --to-ports 8080 

    阿德里安

    这适用于我,将stream量从localhost:8081路由到172.17.0.1:80 ,其中172.17.0.1是一个名为docker0的网桥接口。

     sysctl -w net.ipv4.conf.docker0.route_localnet=1 iptables -t nat -A OUTPUT -o lo -p tcp -m tcp --dport 8081 -j DNAT --to-destination 172.17.0.1:80 iptables -t nat -A POSTROUTING -o docker0 -m addrtype --src-type LOCAL --dst-type UNICAST -j MASQUERADE 

    难题的一个关键部分是MASQUERADE规则。

    更多的启发:

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.