我当前有一个节点,其接口连接到互联网(通过 VLAN)。我将它们称为eth0
和eth0.100
,后者是机器中的 VLAN 接口。
我预先在主机上设置路由,例如:
10.250.100.92 dev <internal interface> proto static scope host table 99
请注意,范围设置为host
此处,并且这不在main
路由表中,而是在 table 中99
。我ip rule
已经设置使用另一个表。
我还设置了以下sysctl
选项:
net.ipv4.conf.eth0.arp_ignore=3
net.ipv4.conf.eth0/100.arp_ignore=3
从该选项的文档中,我看到以下内容:
arp_ignore - INTEGER
Define different modes for sending replies in response to
received ARP requests that resolve local target IP addresses:
0 - (default): reply for any local target IP address, configured
on any interface
<<<<< SKIPPED OTHER OPTIONS FOR BREVITY >>>>>
3 - do not reply for local addresses configured with scope host,
only resolutions for global and link addresses are replied
看起来我的机器不应该回复该地址的 ARP 请求,因为路由有scope host
.然而,当 ARP 请求通过eth0
/传入时eth0.100
,机器仍然会发出 ARP 回复。我是否缺少单独的配置步骤?根据上面的文档 ( do not reply for local addresses configured with scope host
),计算机不应发送此地址的 ARP 回复。
编辑:看来这ip route
就是问题所在。我有一个代理 ARP 条目,它应该是是否应发送 ARP 回复的事实来源。是否可以让 ARP 回复“忽略” ip route
?