Re: Интересное поведение сети
Доброго времени суток,
On Thu, Feb 10, 2022 at 03:30:11PM +0300, Артём Н. wrote:
> Есть UDP echo-сервер (не важно какой, пусть будет на основе Netcat):
> ncat -4 --exec /bin/cat -u --listen 2000
> Запускаю клиент на той же машине:
> ncat -4 -s 192.168.2.13 -u 127.0.0.1 2000
> Адрес 192.168.2.13 от реально существующего адаптера, т.е. адрес машины в
> ЛВС.
>
> Пишу что-то на клиенте - сервер выходит с кодом 0.
>
> Запрос принимает, ответ успевает отправить, но ответ не доходит.
> Почему?
Это не особенность поведения сети, а скорее особенность работы netcat
с UDP сокетами. Пакет не доходит до клиента так как у пакетов, идущих
от сервера, src IP отличен от 127.0.0.1:
13:55:20.051152 lo In IP 192.168.2.13.34469 > 127.0.0.1.2000: UDP, length 5
13:55:20.054295 lo In IP 192.168.2.13 > 192.168.2.13: ICMP 192.168.2.13 udp port 34469 unreachable, length 41
Если запустить клиента под strace, то видно, что после создания
сокета с помощью socket() and bind() его на IP = 192.168.2.13, он зовет
connect() на 127.0.0.1. После чего этот сокет будет принимать только
пакеты с src IP = 127.0.0.1. Поэтому и "ICMP 192.168.2.13 udp port 34469
unreachable".
--
Stanislav Maslovski
Reply to: