У меня есть программное обеспечение-симулятор, работающее на Linux (linux_host) в котором еще один линукс (linux_sim) это работает. Симулятор использует libpcap для доступа к Ethernet, чтобы обеспечить имитацию сети на linux_sim. Сеть запущена linux_host и linux_sim ХОРОШО. Я могу связаться с любым хостом в локальной сети из linux_sim (он использует DHCP, например, для настройки IP).
Проблема в том, что пакеты, отправленные из linux_sim не доходить linux_host, однако они движутся в обратном направлении, нормально. Последнее я могу доказать с помощью wirehark, работающего на linux_host: если я пингую linux_sim на linux_host - Я вижу запросы и ответы ICMP (от linux_sim) которые не достигают linux_host, если пингую наоборот - вижу только ICMP запросы (от linux_sim).
Следующее изображает примерно мою архитектуру:
LAN
|
linux_host-----[eth0]
|
libpcap
|
simulator
|
linux_sim
PS
linux_host и linux_sim имеют разные MAC-адреса, IP-адреса и из локальной сети выглядят как независимые хосты Linux.
Я пробовал на трех разных Linux-машинах с одинаковым результатом (с Debian, CentOS и Gentoo).
Итак, что вы можете порекомендовать для проверки / настройки / настройки в этой ситуации? Поскольку я полагаю, что требуется необычная конфигурация маршрутизации / фильтрации для linux_host в таком случае.
ОБНОВИТЬ
Широковещательный трафик идет из linux_sim к linux_host поскольку я вижу, что IP-адрес разрешен с помощью ARP (на широковещательные запросы отправляются ответы), ОК, когда начинается пинг.
Я думаю, что отличным тестом было бы разместить linux_host и linux_sim в разных подсетях. Поместите маршрутизатор (возможно, другой Linux-бокс) в эту VLAN и дайте ему там два субинтерфейса с IP-адресами в обеих подсетях, чтобы он мог маршрутизировать между блоками. Я думаю, вы столкнулись с какой-то проблемой с обнаружением обратного пути. Вы это уже отключили?
У вас мало информации о том, как настроена ваша сеть. Если ваш симулятор получает доступ к внешнему миру через интерфейс моста, вы должны учитывать, что делает оборудование NIC (и его драйвер). Например, на большинстве новых сетевых адаптеров Intel вам необходимо отключить GRO, чтобы TCP работал с виртуальными машинами, подключенными к мосту. Также часто возникают проблемы с разгрузкой оборудования NIC и IO-SRV. Просмотрите документацию к драйверам, чтобы узнать о мостах.