微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

在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解决方

原文地址:https://www.jb51.cc/linux/397591.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐