iptables 代理本地服务到外部接口

iptables 代理本地服务到外部接口

我正在运行一个仅绑定到的本地服务。我可以编写一个 iptables 规则来接受(我的公共接口)端口上localhost:1234的连接并将其代理到(我的环回)。我无法更改正在运行的服务以绑定到其他接口。1234eth0lo

该服务可能不是一直可用。这是一个问题吗?

答案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 的外部流量。此规则是为了安全起见,因为此类流量大多是不受欢迎的。

相关内容