我们有AT&T的U-Verse互联网服务,它有一个极其头脑的DSL网关。
我们有5个IP(networking掩码248),但是除了单个IP地址 – 单个MAC地址映射之外,网关是不能做任何事情的。
我们有一台防火墙机器,我们将不同的IP /端口组合redirect到DMZ内的不同地方。
我们的解决scheme到目前为止是在防火墙上有一个VMWare虚拟机,其中有4个额外的NIC,以获得其他4个IP地址…但是,我们有一个问题。
网关基本上是做一个ARP ping来查看IP是否在预期的MAC上响应。 在同一个局域网上有4个网卡,linux正在使用一个接口响应所有IP的ARP请求。 这不是门户网站所期望的,而是搞乱了其他3个网卡。 网关拒绝路由传入stream量的IP地址的ARP平果结果不是预期的MAC。
我们如何得到eth0的IP去掉eth0,eth1的IP去掉eth1等?
编辑
克里斯托弗·卡斯尔的回应在这种情况下是行不通的。 我有很大的希望阅读,但是…不。
编辑2
解决了! 看到我的答案在下面。
你所select的解决scheme是有效的,但是有一些不涉及arptables的select。 (克里斯托弗·卡斯尔本来是走在了正确的轨道上,但是他却一发不可收拾。)
总之,你要设置这些参数:
net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=2
在运行现代的2.6系列Linux内核时,这些应该是可用的。 检查并确保你的系统上存在'/ proc / sys / net / ipv4 / conf / / arp_announce'和/ proc / sys / net / ipv4 / conf / / arp_ignore'。
只有当您的各个IP地址共享一个LAN段,但使用不同的IP子网时,“arp_filter”参数才起作用。 如果他们也共享IP子网,则需要使用'arp_ignore'和'arp_announce',如上所述。
(我相信你也可能需要设置'arp_filter'回到'0')。
好的,这是解决scheme。 首先回顾一下:
这是我的基本networking计划:
eth0 10.10.10.2 netmask 255.255.255.248 eth1 10.10.10.3 netmask 255.255.255.248 eth2 10.10.10.4 netmask 255.255.255.248 eth3 10.10.10.5 netmask 255.255.255.248
所有的接口重叠。 这在技术上是错误的,也是我所有困境的根源……但是我必须这样做,因为这个呆板的住宅门户。
首先,广播ARP请求去所有这些。 由于所有4个IP都是有效的本地地址,所有4个接口都将尝试响应。
1)安装arptables 。 在启动时添加这个地方( /etc/rc.local这里):
arptables -F INPUT arptables -A INPUT -i eth0 --destination-ip ! 10.10.10.2 -j DROP arptables -A INPUT -i eth1 --destination-ip ! 10.10.10.3 -j DROP arptables -A INPUT -i eth2 --destination-ip ! 10.10.10.4 -j DROP arptables -A INPUT -i eth3 --destination-ip ! 10.10.10.5 -j DROP
这将防止广播进入错误的界面。 所以,正确的界面现在将是唯一的响应者。
这本身是不够的。 下一个位是一个ARP表问题。 请求的PC可能已经有一个ARP表项,所以Linux将使用与之相关的接口。 在该ARP表项到期之前,将尝试使用该条目的接口发送ARP响应,而不是与ARP请求关联的接口。
sysctl选项rp_filter似乎在拒绝输出的ARP响应数据包,如果他们在错误的接口。 所以…
2)禁用rp_filter 。
在Debian / Ubuntu上,这意味着注释掉/etc/sysctl.d/10-network-security.conf中的两行rp_filter行。
这个选项是有原因的……也就是帮助防止跨界面欺骗攻击。 我读它validation数据包是合法的接口它进来或外出(通过交换MAC和IP,看看它是否仍然路由通过相同的接口)。 所以,通常把它关掉是一个坏主意。 在我的情况下,所有的接口都在同一个networking上…所以检查根本不重要。
如果我添加另一个接口并需要欺骗保护,也许可以制作一些arptables / iptables条目来做同样的事情。
这与Linux处理IP和NIC的方式有关。 基本上,它将IP地址视为属于该盒子,而不仅仅是特定的NIC。 其结果是,您可以从不希望的接口上获得来自IP地址的ARP响应。
该解决scheme是一个sysctl选项。 我记得,你要找的是:
net.ipv4.conf.default.arp_filter=1 net.ipv4.conf.all.arp_filter=1
这将解决你的问题。 只需将它们添加到/etc/sysctl.conf并运行“ sysctl -p ”(或者将每行作为参数运行到“ sysctl -w ”)。
这将导致Linux只响应IP地址实际分配给接口的ARP请求。
接受的答案是: http : //www.linuxquestions.org/questions/linux-networking-3/multiple-interfaces-all-traffic-flows-through-just-one-538701/
静态路由通过特定的接口与所需的IP进行通信,为我所遇到的类似问题创build了一个强大且简单的解决scheme。
你能连接网关,让防火墙处理IP地址吗?