Ubuntu的Linux – 两个接口,相同的子网,不同的VLAN – MAC / ARP问题

我试图设置一个服务器,需要有相同的IP子网上的接口,但不同的VLAN:

eth1.102 Link encap:Ethernet HWaddr 00:50:56:b1:00:0f inet addr:10.1.1.6 Bcast:10.1.1.255 Mask:255.255.255.0 eth1.103 Link encap:Ethernet HWaddr 00:50:56:b1:00:0f inet addr:10.1.1.12 Bcast:10.1.1.255 Mask:255.255.255.0 

我看到的问题是,当某个子网上的设备发出ARP请求时,服务器只响应一个接口上的ARP,并且似乎忽略另一个接口上的任何ARP:

第一个界面:

 # ping -I eth1.102 10.1.1.1 PING 10.1.1.1 (10.1.1.1) from 10.1.1.6 eth1.102: 56(84) bytes of data. ^C --- 10.1.1.1 ping statistics --- 8 packets transmitted, 0 received, 100% packet loss, time 7008ms 

第二界面:

 # ping -I eth1.103 10.1.1.1 PING 10.1.1.1 (10.1.1.1) from 10.1.1.12 eth1.103: 56(84) bytes of data. 64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=0.400 ms 64 bytes from 10.1.1.1: icmp_seq=2 ttl=64 time=0.332 ms ^C 

(作为logging,两个VLAN中的两个子网都存在10.1.1.1)

 # arp -an ? (10.1.1.1) at 02:00:1a:f2:00:02 [ether] on eth1.103 ? (10.1.1.1) at 02:00:72:a3:00:08 [ether] on eth1.102 

即使我从客户端设备ping到服务器接口的特定IP,它仍然被忽略,并在另一个响应。

Ubuntu有一些默认的ARP /欺骗filter,所以我closures了我能find的东西,即

 net.ipv4.conf.default.rp_filter=0 net.ipv4.conf.all.rp_filter=0 

我已经看到了几个相似的问题,但是通常是ARP通信,因为它的同一个段(不是由VLAN隔开)和ARP请求正在被两个回复,在这里并不是这样。 如果我tcpdump这两个接口,进来的ARP没有得到答复是看不到任何其他接口上的任何地方(思考沿不同的接口响应),似乎只是默默地忽略了请求。

任何人都遇到过这个?

编辑:

好吧觉得自己有点白痴,但可能会帮助别人…

我是通过禁用rp_filter在正确的领域,但大概是因为默认情况下,Ubuntu已经将它应用到所有接口,所以虽然我为上面列出的两个条目设置了rp_filter = 0,但是每个接口的设置是还是1,这样..

 # sysctl -w net.ipv4.conf.eth1/102.rp_filter=0 # sysctl -w net.ipv4.conf.eth1/103.rp_filter=0 

…做的伎俩。

您需要为每个单独的接口禁用反向pathfilter(rp_filter)

 # sysctl -w net.ipv4.conf.eth1/102.rp_filter=0 # sysctl -w net.ipv4.conf.eth1/103.rp_filter=0