我希望服务在我系统的每个外部端口上运行。由于启动该服务的 65535 个单个实例是行不通的(我猜...)我想为此使用 iptables。
该服务(只是一个 10 行 Python 脚本)正在侦听 localhost:10000。iptables 现在应该将外部端口上的每个 TCP 请求转发到这个本地端口,这样每个端口似乎都是打开的。我对 iptables 只有很少的经验,也没有时间阅读更多关于这个主题的内容,所以我无法让它发挥作用。
我试过:
iptables -A PREROUTING -t nat -i eth0 -p tcp -j DNAT --to-destination 127.0.0.1:10000
Run Code Online (Sandbox Code Playgroud)
但是当从本地网络内部扫描时,所有端口都显示为已过滤,而不是打开。当前没有其他规则处于活动状态,所有策略都设置为 ACC
我怎样才能做到这一点?
提前致谢!
由于您的政策是 ACCEPT,您可以使用 iptables 行进行 2 处更改:
例如,如果您的 eth0 IP 是 192.168.1.10,则此行有效:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 1:65535 -j DNAT --to-destination 192.168.1.10:10000
Run Code Online (Sandbox Code Playgroud)
所有到 192.168.1.10(到任何端口)的连接都将重定向到端口 10000。
编辑:您也可以使用 REDIRECT 目标:
iptables -t nat -A PREROUTING -p tcp --dport 1:65535 -j REDIRECT --to-ports 10000
Run Code Online (Sandbox Code Playgroud)
如果您只听 localhost,这仍然无济于事。