我正在运行一个仅绑定到的本地服务。我可以编写一个 iptables 规则来接受(我的公共接口)端口上localhost:1234
的连接并将其代理到(我的环回)。我无法更改正在运行的服务以绑定到其他接口。1234
eth0
lo
该服务可能不是一直可用。这是一个问题吗?
答案1
这样的规则应该有效:
iptables -t nat -I PREROUTING -p tcp -d <your destination network> --dport 1234 -j DNAT --to-destination 127.0.0.1:1234
但在此之前你还需要做一项额外的更改:
sysctl -w net.ipv4.conf.ethN.route_localnet=1
...将 ethN 替换为您的 IP 网络所在的 nic。
默认情况下,此值为 0,指示内核不路由发往 127.0.0.0/8 的外部流量。此规则是为了安全起见,因为此类流量大多是不受欢迎的。