Я обнаружил, что не могу понять свой тест. Установите два компьютера с Linux, скажем, луну и солнце. У Луны два сетевых интерфейса, eth0 = 192.168.0.20, eth1 = 192.168.1.20. Sun имеет единый сетевой интерфейс eth0 = 192.168.0.10. Установите маршрут на солнце, позволяющий достичь 192.168.1.20 на луне. Пинг-тест пройден.
Теперь запустите 'nc -l -p 1234 -u' на Луне, а затем на солнце, запустите 'nc 192.168.1.20 1234 -u'. Всегда первое сообщение, отправленное от солнца, может появиться на луне. Но следующее сообщение, отправленное от sun в том же сеансе nc, не удастся. Tcpdump показывает, что второе сообщение пришло на луну, но луна сгенерировала ошибку «ICMP недоступен» обратно к солнцу, что привело к закрытию сокета солнцем. В том же тесте с socat я нашел тот же результат.
Для меня это довольно странно. Я проверил с помощью tcpdump, что два сообщения, отправленные от sun, имеют одинаковые номера портов source / dest и source / dst. Почему второе сообщение от солнца не может быть распознано нк или сокатом луны?
Кто-нибудь может мне подсказать? Спасибо.
-вуди