В 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 и отправку пакетов. Я сбросил все возможные интерфейсы (включая связанный и его подчиненные), и я вижу один интерфейс, из которого уходят многоадресные пакеты, но ни на одном из них ничего не возвращается. Я предполагаю, что это связано с ядром, поскольку я не думаю, что коммутаторы обычно отправляют многоадресный / широковещательный трафик обратно на отправляющий хост.
Похоже, это проблема с 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