iptables 将外部 ip 和端口转发到内部 ip 和端口

iptables 将外部 ip 和端口转发到内部 ip 和端口

我急需直接示例的帮助,而不是文字。自从使用 FreeBSD 4.2 版以来,我对 pf(数据包过滤器)还算满意,但现在我有一个项目,要为 Linux 中的 OpenVZ 的 Web 面板制作一个模块。

管理部分已经完成了 95%,但我遇到了问题。我意识到每个虚拟机都必须转发到不同的端口。问题是它必须转发到本地 IP。它们只有 1 个 NIC 和 1 个公共 IP,因此它们将为每个虚拟机使用一个本地 IP。

假设:

我们创建虚拟机 101,本地 IP 为 192.168.199.105,监听 SSH 端口 5050,公网 IP 为 88.252.14.32。如何设置 IPTABLES,将 88.252.14.32:5050 的 ssh 请求转发到 192.168.199.105:5050?

服务器已进行 NAT,对于 Apache 来说,使用 vhost 很容易,但对于 SSH,不知道该怎么做。我请求您提供直接示例,而不是文字。谢谢。

答案1

你可以尝试阅读本教程。描述iptables得很好。对于您的问题,您可以在nat表中使用 PREROUTING 规则。它看起来像:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5050 -j DNAT --to-destination 192.168.199.105:5050
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

您应该将 eth0 更改为您的接口名称。

相关内容