У меня проблема с получением UDP-трафика на сервере RHEL6. При захвате трафика с помощью tcpdump пакеты видны (контрольные суммы верны, IP-адрес и MAC-адрес назначения совпадают с адресами машины). Однако приложение, прослушивающее конкретный порт, не видит никаких данных, даже если сокет успешно открыт и отображается в выводе netstat -panu. Я пробовал простой скрипт сервера UDP на perl (http://www.perlmonks.org/?node_id=659588) вместо фактического приложения, но результат тот же (сокет открыт, данные не получены).
Правила брандмауэра не настроены. Вот iptables --list output
:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Также netstat -s -u
не показывает никаких UDP-пакетов, полученных системой:
Udp:
0 packets received
0 packets to unknown port received.
0 packet receive errors
0 packets sent
Это некоторая безопасная клиентская среда, и я не могу войти в систему на другом компьютере в сети, чтобы попытаться отправить тестовые UDP-пакеты вручную.
Может ли кто-нибудь указать мне направление для дальнейшего устранения неполадок?
Проверьте, помогает ли это. Ядро Linux не проходит через многоадресные UDP-пакеты Обычно, если net.ipv4.all.rp_filter = 1, тогда ядро выполняет строгую проверку обратного пути. Дополнительную документацию можно найти на https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt