我正在设置一个 Ubuntu Linux 机器作为路由器。这是一个使用 IPTables 进行 NAT 的正常设置 - 对我来说运行良好。
我即将将其投入生产,到目前为止,为了进行测试,我已经在 /etc/network/interfaces 文件的节中放置了多个 WAN IP:
# WAN Interface
iface eth0 inet static
address 123.123.456.345
netmask 255.255....
network ...
broadcast ...
gateway ...
iface eth0:1 inet static
address 123.456.789.123
netmask ...
iface eth0:2 inet static ...
我发现的问题是,我们现在有大约 20 个 WAN IP,这个 Linux 盒子需要对其进行 NAT,这意味着我需要将所有这 20 个 IP 分配给这个盒子,然后它可以将其转换为正确的私有 IP。
问题就是这样——interfaces 文件正在稳步增长,我开始怀疑在不久的将来这是否会变得难以管理。但上面的例子几乎是我做过的唯一方法,也是迄今为止我在搜索时能找到的最常见的例子。
我发现并考虑过的唯一其他方法是:http://www.shorewall.net/Shorewall_and_Aliased_Interfaces.html
# Internet interface
auto eth0
iface eth0 inet static
address 206.124.146.176
netmask 255.255.255.0
gateway 206.124.146.254
up ip addr add 206.124.146.178/24 brd 206.124.146.255 dev eth0 label eth0:0
是否有其他人可以推荐的组织大量 IP 别名的方法?为什么您选择这种方法而不是其他方法?
编辑
正如现在两个答案所建议的那样,不要使用 NAT,只需通过防火墙桥接流量并直接在服务器上分配 IP。我应该补充一下,我们已经在生产中使用该方法,但已决定放弃它。
我们希望节省公共地址空间,许多设备或虚拟机只需要打开一个公共端口,而不需要其他公共服务。因此,我们希望能够将单个公共 IP 上的端口映射到单独的内部设备。
我们正在向 VPN 基础设施迈进,允许客户通过 VPN 进入并访问分配给他们的子网/VLAN,从而可以访问他们的服务器。
事实证明,桥接防火墙配置的 VLAN 存在问题。由于到达上游提供商的数据包仍带有标记,因此会被拒绝。
我应该明确指出,这并非完全是 1:1 NAT 设置。只是,目前,所有设备都有自己的 WAN IP - 所以这是对我们现在必须转向的最佳描述。
许多设备仍需要自己的 IP,在这种情况下,我们会进行 NAT 并单独允许端口,因此这有点像 1-1 NAT,带有防火墙。但在某些情况下,设备根本不需要 WAN IP。
谢谢!
答案1
以正确的方式执行此操作 - 将地址范围路由到您的防火墙,并将 IP 地址放在目标设备上的正确位置。
答案2
与其对那么多地址进行 NAT,为什么不使用防火墙来桥接两个网络,并将真实 IP 直接分配给相关系统呢?您仍然可以过滤流量以保护主机,并且可以减轻负载(但不会那通过不必维护所有这些 NAT,我们可以在防火墙上节省很多空间。
搜索 linux bridging、brctl 和 ebtables。