我有一个Linux系统,它有两个以太网接口,eth0和eth1,它们使用在同一个子网上。有时,我看到,即使当其中一个接口断开(电缆断开),Linux继续使用它的IP地址。
例如,如果eth0在插入eth1时断开连接,则可以看到“plugged”命令将eth0报告为默认接口。
~ $ ip ro get 192.168.1.1
192.168.1.1 dev eth0 src 192.168.1.5
因此,scp和ping等工具最终使用了断开连接的接口&失败。
我的问题是,为什么Linux继续使用断开连接的接口?它不应该自动检测和停止使用它们吗?
在Arch Linux ARM (Raspberry Pi)内核4.4.37上,我创建了一个macvlan。
ip link add link eth0 mac0 type macvlan
然后,macvlan虚拟网卡出现在列表中,因此我给它分配了一个IP地址,并将链接状态设置为up。(顺便说一下,我尝试过bridge、vepa和private模式。)
然后,我可以从我的Windows客户端平IP,但是当我在Windows中检查ARP缓存(arp -a)时,它们显示的是与主(物理)网络适配器相同的MAC地址,而不是新创建的macvlan MAC地址。
我确保清除ARP缓存,尝试一个客户以前从未
在我的网络中,我有一个linux主机作为默认网关,位于192.168.150.1。在192.168.150.4的另一个主机上,我有这个脚本来测量从发送arp请求到接收它之间的时间:
#!/usr/bin/env bash
for i in $(seq 30 $END); do
sudo ifconfig enp3s0 up
sleep 5s;
arping -I enp3s0 -c 1 192.168.150.1
echo $(date +%s.%5N) | tee -a ./ifuptimes.txt;
sle