UDP 数据包在接口级别看到但未传送到 RedHat 上的应用程序

woj*_*h_k 6 linux udp linux-networking

我在 RHEL6 服务器上接收 UDP 流量时遇到问题。使用 tcpdump 捕获流量时,数据包是可见的(校验和正确,目标 IP 和 MAC 与机器的匹配)。然而,侦听特定端口的应用程序无法看到任何数据,即使套接字已成功打开并显示在 netstat -panu 输出中。我尝试了一个简单的 perl UDP 服务器脚本 ( 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  
Run Code Online (Sandbox Code Playgroud)

netstat -s -u没有显示系统所接收的任何UDP数据包:

Udp:
    0 packets received
    0 packets to unknown port received.
    0 packet receive errors
    0 packets sent
Run Code Online (Sandbox Code Playgroud)

这是一些安全的客户环境,我无法登录到网络中的另一台机器来尝试手动发送测试 UDP 数据包。

谁能指出我进一步排除故障的方向?

小智 2

检查这是否有帮助。 Linux 内核不传递多播 UDP 数据包 基本上,如果 net.ipv4.all.rp_filter = 1,则内核执行严格反向路径验证。更多文档可以在https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt找到