Почему netcat не может принимать UDP-пакеты?

Почему netcat не может принимать UDP-пакеты?

У меня есть простое устройство UDP (ENC28J60), подключенное к моему компьютеру прямым кабелем. Устройство настроено на отправку пакета UDP на IP 192.168.133.1, порт 6661.

Компьютер, ОС Fedora 22, имя интерфейса enp7s0. Когда интерфейсу назначен IP-адрес, tcpdump зависает, netcat молчит. Когда интерфейсу не назначен IP-адрес, netcat молчит (нет вывода), tcpdump получает пакеты.

Пакеты действительно поступают с устройства, которое я могу увидеть с помощью tcpdump, только когда интерфейс включен, но IP-адрес не назначен.

Сначала попробуйте открыть интерфейс с IP-адресом.:

[root@d7520 ~]#  nmcli connection up toArd                                                                          
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/20)
[root@d7520 ~]# ip a s dev enp7s0                            
2: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 74:86:7a:1e:e0:85 brd ff:ff:ff:ff:ff:ff
    inet 192.168.133.1/24 brd 192.168.133.255 scope global enp7s0
       valid_lft forever preferred_lft forever
    inet6 fe80::7686:7aff:fe1e:e085/64 scope link 
       valid_lft forever preferred_lft forever

Попробуйте netcat и tcpdump. Нет ответа. tcpdump зависает.

[root@d7520 ~]# ncat -u -l 6661                                                                                                                      
^C
[root@d7520 ~]# tcpdump -vvv -i enp7s0 -X
tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes


[root@d7520 ~]# nc -v -l -u 6661                                                                                                                                                                                                              
Ncat: Version 6.47 ( http://nmap.org/ncat )
Ncat: Listening on :::6661
Ncat: Listening on 0.0.0.0:6661
^C

Теперь попробуйте удалить IP-адрес. tcpdump получил UDP-пакеты, но netcat по-прежнему молчит.:

[root@d7520 ~]# nmcli connection down toArd 
Connection 'toArd' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/21)

 [root@d7520 ~]# ip a s dev enp7s0
2: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 74:86:7a:1e:e0:85 brd ff:ff:ff:ff:ff:ff
[root@d7520 ~]# tcpdump -vvv -i enp7s0 -X                                                                                                                     
tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
13:41:39.423449 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 37)
    192.168.133.2.6660 > 192.168.133.1.6661: [udp sum ok] UDP, length 9
        0x0000:  4500 0025 0000 4000 4011 af73 c0a8 8502  E..%..@[email protected]....
        0x0010:  c0a8 8501 1a04 1a05 0011 0630 7465 7374  ...........0test
        0x0020:  2031 3233 0000 0000 0000 0000 0000       .123..........
^C
1 packet captured
1 packet received by filter
0 packets dropped by kernel

решение1

Я не уверен, что это ваша проблема, но почему вы nmcliвообще используете? nmcli- это интерфейс командной строки сетевого менеджера, которыйгораздо болеечем вы рассчитывали, пытаясь поднять свои интерфейсы.

Если бы я был вами, я бы поступил следующим образом. Так как sudo:

         service network-manager stop  # halt NM
         ip link set dev enp7s0 down   # bring the interface down, in order to...
         ip addr flush dev enp7s0      # ... get rid of its ip address

Либо ручная настройка...

         ip addr add 192.168.133.133/24 dev enp7s0 # we give it a brand new address...
         ip link set dev enp7s0 up     # now we try again...
         ip route add default via 192.168.133.1 # and a gateway

или автоматический:

         ip link set dev enp7s0 up
         dhclient -v enp7s0

(В зависимости от вашего дистрибутива вам, возможно, придется убрать этот -vфлаг).

Теперь я попробую еще раз, и оба tcpdumpварианта ncдолжны сработать.

Связанный контент