为多个外部IPconfigurationDD-WRT?

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

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

那么无论如何要configuration这个? 固件支持iptables,所以如果可以用iptables来完成,那么这是一个解决scheme。 可以用pf来做,其中的特征称为双向nat映射(1:1映射)。

首先,正如上面提到的另一个 – 我从来没有听说过一个ISP给出多个IP与DHCP。 你可能想检查一下。

这些都不是DD-WRT特定的:

…如果他们真的把所有的东西都交给DHCP,那么你将需要在一个接口卡上使用多个MAC,否则你需要将4个NIC都插入交换机,然后再将其插入ISP路由器。 这是B / C的DHCP服务器将继续处理相同的IPs,不pipe如果它在同一个MAC上。 我不认为Linux无论如何要在同一个网卡上执行多个MAC。

在此之后,它很容易:
– 使用ip addr XXXX dev eth0(或者你在这边使用的任何网卡)为每一个你想要的IP。

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

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

如果你想要这个服务器总是来自这个IP,那么你也需要使用SNAT来做到这一点,你需要在mangle表中标记数据包,然后为此设置一个'ip rule'命令。

我们在我们的路由器上这样做…

2 80 DNAT tcp -- eth2 * 0.0.0.0/0 xxx74 tcp dpt:53 to:10.10.x.5:53 0 0 DNAT udp -- eth2 * 0.0.0.0/0 xxx74 udp dpt:53 to:10.10.x.5:53 1197 60064 DNAT all -- eth2 * 0.0.0.0/0 xxx73 to:10.10.x.9 
链POSTROUTING(策略ACCEPT 2686包,403K字节)
  pkts字节目标人选退出源目的地         
 14613 903K SNAT all  -  * eth0 0.0.0.0/0 0.0.0.0/0 to:xx.xx75 
     0 0 SNAT all  -  * eth2 10.10.x.98 0.0.0.0/0 to:xxx.xxxx.69 
   178 11500 SNAT all  -  * eth2 10.10.x.8 0.0.0.0/0 to:xx.xx.219.xx 
     0 0 SNAT all  -  * eth2 10.10.x.9 0.0.0.0/0 to:xxx.xxx.xx.xx
     1 60 SNAT all  -  * eth2 10.10.x.18 0.0.0.0/0 to:xx.xx70 
     0 0 SNAT all  -  * eth2 10.10.x.5 0.0.0.0/0 to:xxx74 
 14327 871K SNAT all  -  * eth2 0.0.0.0/0 0.0.0.0/0 to: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 set 0x4 
     0 0 MARK tcp  -  eth1 * 10.10.x.9 0.0.0.0/0 tcp spts:60100:60200 MARK set 0x4 
     0 0 MARK udp  -  eth1 * 10.10.x.9 0.0.0.0/0 udp spts:60100:60200 MARK set 0x4 

注意我们如何标记TCP 25总是出去一定的路线。 这是你的邮件将被反弹,如果你没有出去的MXlogging在许多接收SMTP服务器的IP地址。

是的,可以使用iptables,但是您需要从ISP分配给您两个IP。 我99%确定唯一的方法是使用静态IP,我从来没有听说过一个ISP通过DHCP提供两个IP。

我认为你可以用iptables来做,但是这会有点难,我不记得,但是我在这个年代之前正在寻找,有人向我展示了几个带有dynamicIP的示例。 然后,我切换到几个虚拟服务器防火墙实例,所以我有一个每个外部dynamic(dhcp)IP – 所有通过一个单一的外部主机网卡(是的,他们现在运行微软ISA,但这并不重要)。 这似乎更容易,我喜欢在一般的服务器操作系统上运行我的防火墙和NAT路由器出于某种原因;)

瑞典的许多互联网服务提供商通过DHCP发布了多个公共dynamicIP – 5是一个非常常见的默认数量,虽然不是全部。 这样的话,你并不需要为了支持NAT中的多个主机而对抗NAT的恐慌,尽pipe消费级边缘防火墙通常无法处理,我猜…

你有没有searchDD-WRT论坛? 这里
我在路由器上运行DD-WRT,并有一个ISP分配5个DHCP IP。 不过,我采取了一个不同的,更简单的路线。 我有我的互联网连接直接进入一个交换机,然后插入我的服务器,并进入我的DD-WRT路由器。 每个设备都拥有自己的DHCP IP,就像它在自己的networking连接上一样。 但是,我仍然可以以100Mbps(我的交换机的速度)和我的互联网连接的速度与我的服务器通话。

另一个select是将您的服务器挂接到您的路由器,并将其设为DMZ服务器,这将有类似的效果,但您的路由器和服务器将共享一个IP。

第四种更复杂的方法是在服务器中使用2个NIC,并让服务器在其出口连接上添加虚拟接口,并将该虚拟接口连接到路由器。 那么这两个设备将拥有自己的IP。 (在这种情况下,服务器会做你说你想让路由器做的事情)