首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Linux响应属于不同网络接口的IP的ARP请求?

问为什么Linux响应属于不同网络接口的IP的ARP请求?
EN

Network Engineering用户
提问于 2023-05-02 02:31:41
回答 1查看 44关注 0票数 0

我的机器有一个物理网络接口(eno1)和一堆虚拟网络接口(例如tap0)。每个接口都有自己的IP,它们的子网不重叠。

我注意到,如果我从另一台连接到eno1 1‘S网络的机器执行ARP请求,请求一个属于虚拟网络接口(例如tap0)的IP,Linux将响应ARP请求,并且它将响应eno1的MAC地址(也就是说,它用接收ARP请求的接口的MAC地址响应,而不管哪个接口有IP地址)。

只有当IP属于其配置的网络接口之一时,Linux才会响应ARP请求,否则它将忽略它。

我想知道是什么原因造成了这种情况?我认为它会简单地忽略这类ARP请求,因为它们正在获取it,这些it不仅由不同的接口所持有,而且在子网范围之外。

谢谢!

@编辑:根据请求,这是我观察到的真实示例:

机器1具有与IP 192.168.0.2、子网192.168.0.0/24、MAC地址82:a2:17:43:15:ef的接口eno1。

它还具有与IP 172.17.0.1、子网172.17.0.0/16、MAC地址02:42:6f:31:bb:58的接口docker0 (虚拟)。

机器2连接到eno1的同一子网,IP为192.168.0.55。机器2向网络执行ARP请求,请求IP 172.17.0.1的所有者。

机器1用MAC地址82:a2:17:43:15:ef (eno1 MAC地址)回答ARP请求。

补充说明:

  • 只有当IP属于其网络接口之一时,机器1才会响应ARP请求。
  • 机器1将始终响应eno1的MAC地址,不管目标IP是否属于docker0、tap0等。
EN

回答 1

Network Engineering用户

回答已采纳

发布于 2023-05-02 03:54:11

0-(默认)内核可以用来自其他接口的地址来响应arp请求。这似乎是错误的,但它通常是有意义的,因为它增加了成功沟通的机会。IP地址由Linux上的完整主机拥有,而不是由特定的接口拥有。只有在负载平衡这样更复杂的设置中,这种行为才会引发问题。

https://sysctl-explorer.net/net/ipv4/arp_过滤器/

这是一个不好的默认,但linux首先是主机,并且路由器在列表中的某个位置。虽然它的本意是“让事情正常工作”,但它可能会造成混乱,但如果arp到达错误的界面,您的网络已经一团糟(S)。

(将其设置为"1“以停止这种proxy_arp行为)

票数 3
EN
页面原文内容由Network Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://networkengineering.stackexchange.com/questions/83071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档