我有一个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继续使用断开连接的接口?它不应该自动检测和停止使用它们吗?
我想用不同的ip创建1000个macvlan。并使用ip rule路由不同的公共ip到多个接口的互联网。
首先创建1000 macvlan:
ip link add link eth0 address %02x:%02x:%02x:%02x:%02x:%02x eth0_%d type macvlan
%02x是mac地址,%d是0-999.
然后使用ifconfig设置每个macvlan不同的公共ip。最后,使用ip规则:
ip route add default via ${router} dev ${interface} src ${ip} table ${interfaceidx}
i
如果Linux机器中的两个NIC使用外部电缆直接连接,那么是否有可能通过该电缆在这两个NIC之间启动IP连接?
我用IP地址eth2和eth3分别配置了10.10.123.2/24和10.10.123.3/24两个NIC。然后,我从local表中删除了与这两个接口关联的所有规则:
# ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
# ip route show table local | grep -E "eth2|eth3
我有一个带有一个实数的Linux盒(与虚拟的,即.a相反)。我可以使用的以太网接口(eth0用于其他用途--不能使用它,也不能添加更多的NIC)。说是eth1
我需要通过SNMP来控制一些对象/实体,所以我为每个对象设置了一个虚拟以太网接口,并设置了其适当的MAC地址。我是这样做的(例如vif1):
ip -family inet link add link eth1 name vif1 address <the MAC addr> type macvlan
ip link set vif1 up multicast on
ip route del default dev vif1
因此,如果我想通过SSH连接到网络上的所有设备,使用ARP表确切地知道在哪里连接,我能做什么?
代码应该是这样的:
#!/bin/bash
for a in $([ARP Table here?])
do
ssh user@$a true
echo "Connected to $a"
done
我不知道如何在变量中存储dinamic。另外,我也不确定我是否可以在之后使用这个变量通过ssh进行连接,因为IP不会是int,但更可能是字符串。
编辑:安德鲁让我注意到,我的网络上并不是每个设备都在我的ARP表中,我想知道:
从0开始到当前网络掩码的最大值还是在ARP表
我需要得到一个设备的IP是在蓝牙绑定热点。
在Android 9和更低版本中,我可以通过以下操作获得ARP表:
var fileReader = new FileReader("/proc/net/arp");
var bufferedReader = new BufferedReader(fileReader);
但是,由于Android 10的更新,上面的内容会引发异常。
Java.IO.FileNotFoundException: /proc/net/arp: open failed: EACCES (Permission denied)
我相信这是由于新
在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缓存,尝试一个客户以前从未