我有几台 Debian 主机,它们通过 5 个不同 VLAN 上的 trunk 端口连接。但该主机响应所有不同 IP 的 arp“who-has”请求。我希望了解原因...
这里是网络/接口文件(eth0.1 句柄 172.16.1.145/16)
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet manual
auto eth0.1
iface eth0.1 inet dhcp
auto eth0.10
iface eth0.10 inet static
address 192.168.10.254
netmask 255.255.255.0
auto eth0.6
iface eth0.6 inet static
address 192.168.6.254
netmask 255.255.255.0
auto eth0.7
iface eth0.7 inet static
address 192.168.7.254
netmask 255.255.255.0
auto eth0.2
iface eth0.2 inet static
address 0.0.0.0
netmask 0.0.0.0
这是 ldc (172.16.1.50/16) 在 vlan1 广播域上发出的不同 arp who-has 请求的输出
ldc:~# arping 172.16.1.145
ARPING 172.16.1.145
60 bytes from ab:cd:ef:01:23:45 (172.16.1.145): index=0 time=193.119 usec
^C
--- 172.16.1.145 statistics ---
1 packets transmitted, 1 packets received, 0% unanswered (0 extra)
ldc:~# arping 192.168.10.254
ARPING 192.168.10.254
60 bytes from ab:cd:ef:01:23:45 (192.168.10.254): index=0 time=221.014 usec
^C
--- 192.168.10.254 statistics ---
1 packets transmitted, 1 packets received, 0% unanswered (0 extra)
ldc:~# arping 192.168.6.254
ARPING 192.168.6.254
60 bytes from ab:cd:ef:01:23:45 (192.168.6.254): index=0 time=256.062 usec
^C
--- 192.168.6.254 statistics ---
1 packets transmitted, 1 packets received, 0% unanswered (0 extra)
ldc:~# arping 192.168.7.254
ARPING 192.168.7.254
60 bytes from ab:cd:ef:01:23:45 (192.168.7.254): index=0 time=211.954 usec
^C
--- 192.168.7.254 statistics ---
1 packets transmitted, 1 packets received, 0% unanswered (0 extra)
当然,l3 没有被中继,但无论如何我都想解决这个问题...有人可以帮助我吗?
答案1
默认情况下,Linux 安装会实现一个叫做“弱端宿主”模型,在任何接口上接受发往其所有地址的数据包。如果只是 ARP 困扰您,您应该使用
net.ipv4.conf.<interface>.arp_filter
可调。对于其他类型的 IP 流量,请考虑设置适当的 netfilter 规则以进行入口过滤和/或启用net.ipv4.conf.<interface>.rp_filter
(不知道 Debian 是否默认这样做)
进一步阅读:http://linux-ip.net/html/ether-arp.html#ether-arp-flux-arpfilter
答案2
没关系,我找到了解决方法:
这是 arp_ignore 的问题:(
echo 1 > /proc/sys/net/ipv4/conf/eth0.1/arp_ignore
因为我收到了来自 vlan1 的 who-has 请求)
恕我直言,这应该是默认行为......
再次感谢。
答案3
您应该vlan-raw-device eth0
在每个 vlan 接口条目中写入内容。请参阅man vlan-interfaces
。如果您将接口命名为 eth0.1、eth0.2、... - 它只会向同一物理接口添加其他地址。请使用其他名称,例如 eth0_vlan1、...
试试这个:
auto eth0
iface eth0 inet manual
auto vlan6
iface vlan6 inet static
address 192.168.6.254
netmask 255.255.255.0
...
并写下是否有效