为多个外部 IP 配置 DD-WRT?

为多个外部 IP 配置 DD-WRT?

我有一台运行 DD-WRT 固件的 Broadcom BCM5352 路由器和四个外部 IP。在我家的网络配置中,我首先有一个路由器,然后是一个连接到路由器的交换机(以避免整个公寓中有多条电缆)。

服务器已连接到交换机,如果可能的话,我想为该服务器提供一个不同的外部 IP(即,告诉路由器将所有流量路由到指定的外部 IP 到服务器,反之亦然)。我没有静态 IP,我的 ISP 只提供 DHCP。

那么,有什么办法可以配置这个吗?固件支持 iptables,所以如果可以用 iptables 来实现,那么这就是一个解决方案。可以用 pf 来实现,该功能称为双向 nat 映射(1:1 映射)。

答案1

首先,正如上面提到的那样 - 我从未听说过 ISP 使用 DHCP 提供多个 IP。您可能需要检查一下。

这些都不是 DD-WRT 独有的:

... 如果他们确实通过 DHCP 分配所有 IP,那么您将需要在一个接口卡上分配多个 MAC,或者您需要将 4 个 NIC 全部插入交换机,然后将其插入您的 ISP 路由器。这是因为 DHCP 服务器将继续向您分配相同的 IP,无论它们是否都在同一个 MAC 上。我认为 Linux 没有办法在同一个 NIC 上分配多个 MAC。

在此之后,它非常简单:
- 对您想要的每个 IP 使用“ip addr XXXX dev eth0(或您在该侧使用的任何 NIC)。

你需要在 iptables 中像往常一样设置 NAT

然后,您需要配置 DNAT(端口转发)以将传入流量引导至服务器。您将设置这些规则以转发到服务器的内部 IP...

如果您希望该服务器始终来自该 IP,那么您也需要使用 SNAT 来执行此操作,并且您需要在 mangle 表中标记数据包,然后为其设置“ip rule”命令。

我们在这里的路由器上完成所有这些操作......

2    80 DNAT       tcp  --  eth2   *       0.0.0.0/0            x.x.x.74        tcp dpt:53 to:10.10.x.5:53 
0     0 DNAT       udp  --  eth2   *       0.0.0.0/0            x.x.x.74        udp dpt:53 to:10.10.x.5:53 
1197 60064 DNAT       all  --  eth2   *       0.0.0.0/0            x.x.x.73        to:10.10.x.9 
链 POSTROUTING(策略接受 2686 个数据包,403K 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标         
14613 903K SNAT 全部 -- * eth0 0.0.0.0/0 0.0.0.0/0 至:xx.xx75
    0 0 SNAT 全部 -- * eth2 10.10.x.98 0.0.0.0/0 至:xxx.xxxx.69
  178 11500 SNAT 全部 -- * eth2 10.10.x.8 0.0.0.0/0 到:xx.xx.219.xx
    0 0 SNAT 全部 -- * eth2 10.10.x.9 0.0.0.0/0 到:xxx.xxx.xx.xx
    1 60 SNAT 全部 -- * eth2 10.10.x.18 0.0.0.0/0 至:xx.xx70
    0 0 SNAT 全部 -- * eth2 10.10.x.5 0.0.0.0/0 至:xxx74
14327 871K SNAT 全部 -- * eth2 0.0.0.0/0 0.0.0.0/0 至:xxx66

iproute2 规则如下所示:

0:从所有查找本地
18:从所有 fwmark 0x4 查找 T1
19:从所有 fwmark 0x3 查找 T1
20:从所有查找主
21:来自 xxx0/20 查找电缆
22:从 xxx64/27 查找 T1
1000:来自所有查找 110
2000:来自所有查找主
32766:来自所有查找主
32767:来自所有查找默认

和 mangle 表 - 这使得某些机器首先使用那些规则,所以它们退出正确的 IP /接口:

链 PREROUTING(策略接受 1921K 数据包,1149M 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标         
   10 1304 MARK tcp -- eth1 * 10.10.x.18 0.0.0.0/0 tcp dpt:25 MARK 设置 0x3
    0 0 MARK tcp -- eth1 * 10.10.x.9 0.0.0.0/0 tcp dpts:1719:1720 MARK 设置 0x4
    0 0 MARK tcp -- eth1 * 10.10.x.9 0.0.0.0/0 tcp spts:60100:60200 MARK 设置 0x4
    0 0 MARK udp -- eth1 * 10.10.x.9 0.0.0.0/0 udp spts:60100:60200 MARK 设置 0x4

请注意我们如何标记 TCP 25 以始终通过特定路由发送。也就是说,如果您的邮件没有通过 MX 记录在许多接收 SMTP 服务器上指定的 IP 发送,您的邮件将被退回。

答案2

是的,使用 iptables 是可以的,但是你需要从你的 ISP 获得两个 IP。我 99% 确信获得该 IP 的唯一方法是使用静态 IP,我从未听说过 ISP 通过 DHCP 提供两个 IP。

答案3

我认为您可以使用 iptables 来实现这一点,但会有点困难,我不记得了,但我很久以前就研究过这个问题,有人向我展示了一些带有动态 IP 的示例。然后我切换到几个虚拟服务器防火墙实例,这样每个外部动态 (dhcp) ip 都有一个 - 全部通过单个外部主机 NIC(是的,他们现在运行 Microsoft ISA,但这并不重要)。这似乎更容易,出于某种原因,我喜欢在通用服务器操作系统上运行防火墙和 NAT 路由器 ;)

瑞典的许多 ISP 通过 DHCP 提供多个公共动态 IP - 5 是一个非常常见的默认数量,但肯定不是所有 ISP 都这样做。这样,您就不必为支持家中的多个主机而费尽心思去应对 NAT 的恐怖......虽然我猜消费者级边缘防火墙通常无法处理这个问题......

答案4

是的,您可以通过 DHCP 获取多个 IP,猜猜看,它们是静态的。这称为 mac 预留(或在某些情况下称为 IP 预留)

DCHP 并非 IP 地址的实际用途,它只是一种传输系统。目前还有 2 个 DHCP 服务器修订版。

无论哪种方式,ISP 都可以使用 DHCP 设置他们的用户群,然后为特定客户将其调制解调器的 MAC 地址接种到 DHCP 服务器的保留表中,这意味着如果有人向 DHCP 服务器请求 IP,并且 MAC 地址在该保留列表中,它将分发该动态(是的,动态)池中的特定 IP。

绝对不会发生的一件事是,当预订客户不在/离线/等时,其他人会获得该 IP。因此有“预订”一词

通常,这是以块的形式进行的,而不是一次一个 IP。如果您确实想这样做,那么您实际上会阻止 76.84.129.7~76.84.129.7

因此它是块格式,但你给出的范围是 1

希望这有助于解释静态指定的动态配置 IP 地址的奥秘

想想看……你们所有人在家里都是通过什么获取 IP 地址的?DHCP……你们的公共地址有没有改变过?他们几乎一直都在为每个人做这件事。DHCP 管理起来更容易,也更方便。然而,为了跟踪的目的,他们需要你一直使用一个 IP。

我想你们现在都明白了……

现在来回答手头的问题……

我在 GUI 中所做的工作非常简单。

假设您有 3 个位置想要远程连接到您的家中。1)89.212.33.6 - 我的工作地点 2)76.189.33.12 - 我爸爸的家 3)140.0.20.111 - 我女朋友的家

他们的 IP 都是静态的。

只需在 NAT/QoS 选项卡中单击添加 3 次即可

您现在有 3 行可以输入信息。

然后... 应用程序 协议 源 网络端口 从 IPADDR 端口启用 [WORK] TCP 89.212.33.6 22299 192.168.128.1 3389 [DAD'S] TCP 76.189.33.12 22299 192.168.128.1 3389 [MARLENE] TCP 140.0.20.111 22299 192.168.128.1 3389

192.168.128.1 是您尝试远程访问的目标系统。

端口 22299 可以是任何你想要的,并且可以对于每个连接都不同或相同。你甚至可以安全地将其设置为 3389,因为只有这 3 个 IP 可以连接。

我希望这有帮助。

如果您希望将 5 个 IP 连接到一个端口,最简单的方法是使用集线器。如果您将集线器连接到路由器的 WAN 端口,然后将调制解调器连接到集线器,它们都可以访问路由器,并且由于集线器强制全时广播,因此路由器被迫在收到所有 5 个请求时进行响应。

不过就我个人而言,最好的选择是使用一个只对主路由器进行 NAT 的临时路由器。(正如这里已经解释的那样)

相关内容