使用 iptables 转发流量而不暴露真实 IP/端口

使用 iptables 转发流量而不暴露真实 IP/端口

我想使用 iptables 转发流量,而不显示与发送主机不同的 ip/端口。

我的应用程序使用 TCP 监听主机 xx15.42 和端口 23555。客户端将连接到 xx15.42:5555。我希望将连接转发到端口 23555,但不将该端口暴露给客户端。

我已经尝试使用DNAT:

iptables -t nat -A PREROUTING -p tcp --dport 5555 -j DNAT --to-destination x.x.15.42:23555

但对于客户端来说,它将显示他们正在连接到端口 23555。

我也尝试使用 REDIRECT,但不知为何根本不起作用。客户端无法连接。

iptables -t nat -A PREROUTING -p tcp --dport 5555 -d x.x.15.42 -j REDIRECT --to-port 23555

我如何转发此流量,同时使其看起来像应用程序正在监听端口 5555?

答案1

因此我使用的第一个防火墙规则有效:

iptables -t nat -A PREROUTING -p tcp --dport 5555 -j DNAT --to-destination x.x.15.42:23555

唯一的问题确实是服务器告诉客户端连接到端口 23555,而不是我想要的端口 5555。在服务器部分更改这一点可以解决问题。

答案2

我只是对 iptables 略知一二,所以你可以尝试一下这个:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 5555 -j DNAT --to x.x.15.42:23555
iptables -A FORWARD -p tcp -d x.x.15.42 --dport 23555 -j ACCEPT

两条线都是需要的(我认为是缺少 FORWARD 选项导致的),但不确定接口选项是否-i eth0必要

来源参考

相关内容