我有一个运行 DD-WRT 固件和四个外部 IP 的 Broadcom BCM5352 路由器。在我家里的网络配置中,我首先有一个路由器,然后是一个连接到路由器的交换机(以避免多根电缆穿过整个公寓。
服务器连接到交换机,如果可能,我想给该服务器一个不同的外部 ip(即告诉路由器将所有流量路由到指定的外部 ip 到服务器,反之亦然)。我没有静态 IP,我的 ISP 只提供 DHCP。
那么有没有办法配置这个?固件支持 iptables,所以如果可以用 iptables 完成,那就是一个解决方案。可以使用 pf,该功能称为双向 nat 映射(1:1 映射)。
首先,正如另一个人在上面提到的 - 我从未听说过 ISP 使用 DHCP 提供多个 IP。你可能想检查一下。
这些都不是 DD-WRT 特定的:
...如果他们真的把它全部交给 DHCP,那么您将需要在一个接口卡上使用多个 MAC,或者您需要将 4 个 NIC 全部插入一个交换机,然后再将其插入您的 ISP 路由器。这就是 b/c DHCP 服务器将继续为您提供相同的 IP,不管它是否都在同一个 MAC 上。我不认为 Linux 无论如何都要在同一个 NIC 上做多个 MAC。
在此之后,它很容易:
- 为每个你想要的 IP 使用 'ip addr XXXX dev eth0 (或你在那边使用的任何 NIC)。
您需要像往常一样在 iptables 中设置 NAT
然后,您需要配置 DNAT(端口转发)以将传入流量定向到服务器。您将设置这些规则以转发到服务器的内部 IP...
如果您希望该服务器始终来自该 IP,那么您还需要使用 SNAT 来执行此操作,并且您需要在 mangle 表中标记数据包,然后为此设置一个“ip rule”命令。
我们在这里的路由器上完成所有这些......
这是 iproute2 规则的样子:
请注意我们如何将 TCP 25 标记为始终走出特定路线。如果您没有将邮件发送到许多接收 SMTP 服务器上的 MX 记录所述的 IP,那么您的邮件将被退回。
是的,可以使用 iptables,但是您需要从您的 ISP 分配两个 IP。我 99% 确定唯一的方法是使用静态 IP,我从未听说过 ISP 通过 DHCP 提供两个 IP。
我认为您可以使用 iptables 来做到这一点,但这会有点困难,我不记得了,但我很久以前就研究过这个问题,有人向我展示了一些带有动态 IP 的示例。然后我切换到了几个虚拟服务器防火墙实例,所以每个外部动态 (dhcp) ip 都有一个 - 全部通过单个外部主机 NIC(是的,它们现在运行 Microsoft ISA,但这并不重要)。这似乎更容易,出于某种原因,我喜欢在通用服务器操作系统上运行我的防火墙和 NAT 路由器;)
瑞典的许多 ISP 通过 DHCP 分发多个公共动态 IP - 5 是一个非常常见的默认值,尽管并非所有人都这样做。这样一来,您就不需要对 NAT 的恐怖进行猛烈抨击来支持家中的多个主机......尽管我猜消费者级边缘防火墙通常无法处理......
你搜索过 DD-WRT 论坛吗?在这里
,我在路由器上运行 DD-WRT,并有一个分配 5 个 DHCP IP 的 ISP。但是,我采取了一条不同且更简单的路线。我让我的互联网连接直接进入一个交换机,然后插入我的服务器和我的 DD-WRT 路由器。每个设备都有自己的 DHCP IP,就好像它在自己的网络连接上一样。但是,我仍然可以以 100Mbps(我的交换机的速度)与我的互联网连接速度的速度与我的服务器交谈。
另一种选择是将您的服务器连接到您的路由器并使其成为 DMZ 服务器,这将产生类似的效果,但您的路由器和服务器将共享一个 IP。
第四种也是更复杂的方法是在您的服务器中使用 2 个 NIC,并让您的服务器在其传出连接上添加一个虚拟接口,并将该虚拟接口桥接到您的路由器。然后两个设备都有自己的IP。(在这种情况下,服务器将执行您所说的您希望路由器执行的操作)