期望的场景:Linux 机器的小型子网,所有这些都可以通过另一台 Linux 机器(充当 IP 路由器)访问。这些计算机将预先配置专用网络上的地址(192.168.xx 或 10.xxx)。然而,每一个都可以通过具有公共IP地址的路由机来访问,每个IP地址一个,在路由机上配置。
这类似于 NAT 或 IP 伪装,但具有单独的公共 IP 地址。 (可以假设公共网络有一个网关地址:外部路由器。)
看起来这应该可以通过地址转换来实现,但我不知道如何配置它。我无法找到任何搜索内容。
可以配置吗?如果可以,如何配置?
答案1
假设IP_EXT1
和IP_EXT2
分别是机器 #1 和 #2 的外部 IP 地址, 和IP_INT1
是IP_INT2
它们各自的内部 IP 地址。
IP_EXT1
和IP_EXT2
实际上是路由机的地址,可以是同一网络接口的别名,也可以是两个不同接口的别名。
然后,路由机器上的 iptables 配置应该像这样简单(未经测试):
iptables -t nat -A POSTROUTING --destination $IP_EXT1 -j DNAT --to-destination $IP_INT1
iptables -t nat -A POSTROUTING --source $IP_INT1 -j SNAT --to-source $IP_EXT1
iptables -t nat -A POSTROUTING --destination $IP_EXT2 -j DNAT --to-destination $IP_INT2
iptables -t nat -A POSTROUTING --source $IP_INT2 -j SNAT --to-source $IP_EXT2