[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: