![iptables 将外部 ip 和端口转发到内部 ip 和端口](https://linux22.com/image/706951/iptables%20%E5%B0%86%E5%A4%96%E9%83%A8%20ip%20%E5%92%8C%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%E5%88%B0%E5%86%85%E9%83%A8%20ip%20%E5%92%8C%E7%AB%AF%E5%8F%A3.png)
我急需直接示例的帮助,而不是文字。自从使用 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 更改为您的接口名称。