Назад | Перейти на главную страницу

UDP-пакеты видны на уровне интерфейса, но не доставляются в приложение RedHat

У меня проблема с получением 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