Интересное поведение сети

0 views
Skip to first unread message

Артём Н.

unread,
Feb 10, 2022, 7:40:03 AM2/10/22
to
Здравствуйте.


Есть 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.

Запрос принимает, ответ успевает отправить, но ответ не доходит.
Почему?

Stanislav Maslovski

unread,
Mar 3, 2022, 9:30:03 AM3/3/22
to
Доброго времени суток,
Это не особенность поведения сети, а скорее особенность работы 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 all
Reply to author
Forward
0 new messages