Для работающего проекта мне нужно иметь возможность тестировать различные сетевые адаптеры Ethernet, подключая их к «заглушке адаптера обратной связи», например вот этот на различных встроенных Linux-модулях, которые сходят с конвейера. Я хотел бы иметь возможность настроить два разных IP-адреса (AddressA и AddressB) на одном интерфейсе Ethernet, а затем запустить эхо-запрос с AddressA на AddressB.
Ex: ping -I AddressA AddressB
Это вообще возможно?
Кроме того, существует ли тест, который тестировал бы интерфейс Ethernet исключительно на уровне адреса L2 / MAC с использованием заглушки обратной связи? Если я помню, у RealTek был инструмент диагностики для их адаптеров Ethernet 8139, который выполнял своего рода тест с обратной связью только для L2, и мне было интересно, есть ли инструмент Linux, который делал бы то же самое.
ОБНОВИТЬ: Добавлены комментарии о том, почему я тестирую коробки в приведенных выше комментариях. Мне придется опробовать некоторые из этих идей в эти выходные, чтобы посмотреть, что из этого получится. Возможно, я сделаю свой собственный «заглушку адаптера обратной петли», используя гнездо для трапецеидального искажения + несколько проводов из хозяйственного магазина, и попробую посмотреть, смогу ли я посмотреть на сигналы с помощью осциллографа или логического анализатора, чтобы убедиться, что сигналы действительно попадают на провод. Поскольку это кажется более сложным, чем ожидалось, наша команда приняла решение протестировать Ethernet-порты Linux boxen, взяв небольшой домашний NAT-маршрутизатор, а затем выполнив ping-запрос маршрутизатора и поместив его в приспособления для тестирования оборудования. Тем не менее, меня заинтриговали технические аспекты этого, и я хочу поэкспериментировать с этим предметом самостоятельно.
Для уверенности :)
# 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 (так много для мертвого простого)
Вы можете найти это арпинг с большей вероятностью попадет в провод, так как он использует arp и, следовательно, полностью избегает IP-стека.
Я провел небольшое исследование и нашел эту страницу о преобразовании сигналов Ethernet в свет и тестировании этого в конфигурации с обратной связью: http://ronja.twibright.com/testing/ploss_tetrapolis_ping.php.
К сожалению, это не настоящий пинг, поскольку вы просто дважды видите один и тот же пакет ICMP в Wireshark / tcpdump. Однако это гарантирует, что сигнал попадет в провод.
В этом сценарии сомнительно, что сигнал когда-либо действительно «попадет в провод». Поскольку устройство увидит, что оба IP-адреса назначены одному интерфейсу, весь поиск / маршрутизация MAC (если два интерфейса находятся в разных подсетях) будут происходить в самой системе и никогда не попадут в физический интерфейс.
Разъем обратной связи можно использовать для того, чтобы обмануть коробку, чтобы она увидела интерфейс как «активный», чтобы вы могли провести это тестирование, но просто использование обычного кабеля и запасного порта коммутатора будет делать то же самое.
Если вместо этого вы имеете в виду, что будете подключать eth0 к eth1 в той же коробке, тогда вы можете просто использовать перекрестный кабель, но может произойти то же самое, что и выше.
Заглушка обратной связи Ethernet: http://www.tikkiweb.net/loopback