![如何判断两个以太网接口是否在同一个局域网中?](https://linux22.com/image/39250/%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E4%B8%A4%E4%B8%AA%E4%BB%A5%E5%A4%AA%E7%BD%91%E6%8E%A5%E5%8F%A3%E6%98%AF%E5%90%A6%E5%9C%A8%E5%90%8C%E4%B8%80%E4%B8%AA%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%AD%EF%BC%9F.png)
我必须通过设置绑定接口来保护 Linux 服务器上的接口。布线信息不准确。
有没有简单的方法可以知道两个接口是否连接到同一个 LAN?
有些接口没有 IP,如果可能的话我宁愿不设置虚拟 IP。
我终于使用它完成了arping
,它已经安装在服务器上:
ifconfig eth2 up
ifconfig ethO up
tcpdump -i eth2 -c 3 arp net 10.10.10.10
在另一个终端中:
arping -D -I eth0 10.10.10.10
tcpdump
应该显示这样的行:
16:15:43.032103 arp who-has 10.10.10.10 (Broadcast) tell 0.0.0.0
16:15:44.032277 arp who-has 10.10.10.10 (Broadcast) tell 0.0.0.0
16:15:45.032441 arp who-has 10.10.10.10 (Broadcast) tell 0.0.0.0
*-D
是可选的,但它给出了一个很好的 0.0.0.0 源地址。
答案1
一些想法,假设接口是 eth0 和 eth1:
同时在两个接口上嗅探非单播流量。您应该会看到所有数据包两次
( tcpdump -nni eth0 -c 10 broadcast or multicast & tcpdump -nni eth1 -c 10 broadcast or multicast & ) | sort
使用无 IP 协议进行探测。
例如使用此工具生成 DHCP 请求: http://www.latinsud.com/pub/dhd/dhd.c
( sleep 1; ./dhd eth1 > /dev/null ) & tcpdump -nni eth0 udp and port 68
你应该看到这样的东西:
14:46:16.449738 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:50:56:99:76:cb, length 300 14:46:16.650330 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:50:56:99:76:cb, length 300