Как я могу увидеть многоадресный трафик с того же хоста?

В Fedora 30 я пытаюсь увидеть многоадресные пакеты в другом процессе на том же хосте. Используя netstat, iperf и tcpdump, я убедился, что группа присоединена и пакеты отправляются на многоадресный адрес, но iperf в серверном режиме ничего не получает.

Когда я пробую это на другой машине (CentOS 7) в другой сети (которую я не настраивал) я вижу, что пакеты уходят, но я не вижу, чтобы пакеты возвращались, но сервер iperf распечатывает полученные пакеты. Я предполагаю, что это связано с ядром, но как мне это включить?

Вот часть сеанса терминала:

 jnordwick@jnkde ~ iperf -s -u -B 226.94.1.1 -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address 226.94.1.1
Joining multicast group  226.94.1.1
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------

и другой терминал

 jnordwick@jnkde ~ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eno1            1      226.94.1.1

теперь отправляют пакеты

 jnordwick@jnkde ~ iperf -c 226.94.1.1 -u -T 32 -t 3 -i 1
------------------------------------------------------------
Client connecting to 226.94.1.1, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
Setting multicast TTL to 32
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 192.168.2.155 port 47755 connected with 226.94.1.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec   131 KBytes  1.07 Mbits/sec
[  3]  1.0- 2.0 sec   128 KBytes  1.05 Mbits/sec
[  3]  0.0- 3.0 sec   385 KBytes  1.05 Mbits/sec
[  3] Sent 268 datagrams

На стороне сервера ничего не отображается perf, но если я запускаю ту же команду в другой сети, я вижу:

[jnordwick@network2 ~]$ iperf -s -u -B 226.94.1.1 -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address 226.94.1.1
Joining multicast group  226.94.1.1
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 226.94.1.1 port 5001 connected with 204.2.57.7 port 58971
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0- 1.0 sec   129 KBytes  1.06 Mbits/sec   0.000 ms    0/   90 (0%)
[  3]  1.0- 2.0 sec   128 KBytes  1.05 Mbits/sec   0.001 ms    0/   89 (0%)
[  3]  2.0- 3.0 sec   128 KBytes  1.05 Mbits/sec   0.001 ms    0/   89 (0%)
[  3]  0.0- 3.0 sec   385 KBytes  1.05 Mbits/sec   0.001 ms    0/  268 (0%)

tcpdump подтверждает присоединение igmp и отправку пакетов. Я сбросил все возможные интерфейсы (включая связанный и его подчиненные), и я вижу один интерфейс, из которого уходят многоадресные пакеты, но ни на одном из них ничего не возвращается. Я предполагаю, что это связано с ядром, поскольку я не думаю, что коммутаторы обычно отправляют многоадресный / широковещательный трафик обратно на отправляющий хост.

0
задан 4 November 2019 в 23:37
1 ответ

Похоже, это проблема с firewalld, и все ipchains, которые я пробовал, не работали, но это сработало.

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 \
             -m pkttype --pkt-type multicast -j ACCEPT

также работает простое отключение firewalld:

systemctl stop firewalld

Взято из : https://www.centos.org/forums/viewtopic.php?t=60395

1
ответ дан 4 December 2019 в 15:35

Теги

Похожие вопросы