对于工作中的一个项目,我需要能够通过将各种以太网网卡连接到“环回适配器插头”来测试它们,例如这个在从生产装配线上下来的各种嵌入式 Linux 机箱上。我希望能够在一个以太网接口上设置两个不同的 IP 地址(地址 A 和地址 B),然后从地址 A 运行到地址 B 的 ping。
Ex: ping -I AddressA AddressB
这可能吗?
另外,是否有可用的测试,可以使用环回插头在 L2/MAC 地址级别上单独测试以太网接口?如果我没记错的话,RealTek 有一个针对其 8139 以太网适配器的诊断工具,可以执行某种仅 L2 的环回测试,我想知道是否有一个 Linux 工具可以执行相同的操作。
更新: 在上面的评论中添加了关于我为什么要测试这些盒子的评论。这个周末我必须尝试一下这些想法,看看会发生什么。也许我会用一个 keystone 插孔 + 一些从五金店买来的电线制作我自己的“环回适配器插头”,并尝试看看我是否可以使用示波器或逻辑分析仪查看信号,以确保信号确实到达了电线。由于这似乎比预期的要难,我们工作团队决定通过拿起一个小型家用 NAT 路由器,然后 ping 路由器,并将其放入硬件测试装置中,来测试 Linux boxen 以太网端口。不过,我对这方面的技术方面很感兴趣,想自己试验一下这个主题。
答案1
一定 :)
# ip address list dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:1e:4f:9b:4a:ab brd ff:ff:ff:ff:ff:ff
inet 10.10.141.83/24 brd 10.10.141.255 scope global eth0
inet6 fe80::21e:4fff:fe9b:4aab/64 scope link
valid_lft forever preferred_lft forever
# ip address add 10.10.141.253/24 dev eth0
# ip address list dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:1e:4f:9b:4a:ab brd ff:ff:ff:ff:ff:ff
inet 10.10.141.83/24 brd 10.10.141.255 scope global eth0
inet 10.10.141.253/24 scope global eth0
inet6 fe80::21e:4fff:fe9b:4aab/64 scope link
valid_lft forever preferred_lft forever
# ping -I 10.10.141.83 10.10.141.253
PING 10.10.141.253 (10.10.141.253) from 10.10.141.83 : 56(84) bytes of data.
64 bytes from 10.10.141.253: icmp_seq=1 ttl=64 time=0.050 ms
64 bytes from 10.10.141.253: icmp_seq=2 ttl=64 time=0.034 ms
64 bytes from 10.10.141.253: icmp_seq=3 ttl=64 time=0.038 ms
^C
--- 10.10.141.253 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.034/0.040/0.050/0.010 ms
# ip address delete 10.10.141.253/24 dev eth0
# ping -I 10.10.141.83 10.10.141.253
PING 10.10.141.253 (10.10.141.253) from 10.10.141.83 : 56(84) bytes of data.
From 10.10.141.83 icmp_seq=1 Destination Host Unreachable
From 10.10.141.83 icmp_seq=2 Destination Host Unreachable
From 10.10.141.83 icmp_seq=3 Destination Host Unreachable
^C
--- 10.10.141.253 ping statistics ---
4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3016ms
其实非常简单。:)(只是开玩笑,如果你已经知道了,它总是很简单)
我不确定 L2 是否真的有效,但ip neigh
你也可以修改 arp 缓存(非常简单)
答案2
你可能会发现阿尔平更有可能遇到网络问题,因为它使用了 arp,因此完全避免了 IP 堆栈。
答案3
在这种情况下,信号是否真的“到达线路”值得怀疑。由于设备将看到它已将两个 IP 地址分配给一个接口,因此所有 MAC 查找/路由(如果两个接口位于不同的子网中)都将在系统本身中进行,并且永远不会到达物理接口。
环回连接器可用于欺骗盒子将接口视为“启动”,以便您可以进行此测试,但只需使用普通电缆和备用交换机端口就可以完成同样的事情。
相反,如果您的意思是将在同一个盒子中将 eth0 连接到 eth1,那么您只需使用交叉电缆即可,但可能会发生与上述相同的事情。
以太网环回插头: http://www.tikkiweb.net/loopback
答案4
我做了一些研究,发现了这个关于将以太网信号转换为光并在环回配置中测试的页面: http://ronja.twibright.com/testing/ploss_tetrapolis_ping.php。
不幸的是,这不是真正的 ping,因为您在 Wireshark/tcpdump 中只会看到两次相同的 ICMP 数据包。但它确实保证信号到达线路。