加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 物理接口MAC而不是macvlan MAC作为ARP响应发送

发布时间:2020-12-14 03:05:37 所属栏目:Linux 来源:网络整理
导读:在Arch Linux ARM(Raspberry Pi)内核4.4.37上,我创建了一个macvlan,例如 ip link add link eth0 mac0 type macvlan 然后,macvlan虚拟NIC出现在列表中,因此我为其分配了一个IP地址,并将链路状态设置为up. (顺便说一句,我尝试过模式桥,vepa和私人.) 然后,我可
在Arch Linux ARM(Raspberry Pi)内核4.4.37上,我创建了一个macvlan,例如
ip link add link eth0 mac0 type macvlan

然后,macvlan虚拟NIC出现在列表中,因此我为其分配了一个IP地址,并将链路状态设置为up. (顺便说一句,我尝试过模式桥,vepa和私人.)

然后,我可以从Windows客户端ping IP,但是当我在Windows中检查ARP缓存(arp -a)时,它们显示的是与主(物理)网络适配器相同的MAC地址,而不是新创建的macvlan MAC地址.

我确保清除ARP缓存尝试客户端之前没有见过的IP地址等,但它总是显示错误的MAC.

当我为Windows客户端创建一个静态ARP条目以获取macvlan MAC地址并ping相关IP地址时,tcpdump显示macvlan接口上的echo请求,并且它在主(物理)接口上没有显示任何内容,我在我的Windows客户端上获得ping响应(一旦我记得设置iptables规则以允许流量!)

一旦我清除客户端上的ARP缓存并再次ping,我仍然会收到ping响应,但这次ARP条目已恢复为Linux机箱上主物理网络适配器的响应.

只是想知道我可能做错了什么?

解决方法

为了对我有用,我必须在接受的答案中添加一步并设置以下附加变量:
net.ipv4.conf.all.rp_filter=2

我不需要将arp_ignore设置为2,1似乎有效.我也不需要为我的网络将arp_filter设置为1.

所以对我来说完整的解决方案是:

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.all.rp_filter=2

找到我的问题here的解决方案

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读