我在 RHEL6 服务器上接收 UDP 流量时遇到问题。使用 tcpdump 捕获流量时,数据包可见(校验和正确,目标 IP 和 MAC 与机器的 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
也netstat -s -u
没有显示系统收到的任何 UDP 数据包:
Udp:
0 packets received
0 packets to unknown port received.
0 packet receive errors
0 packets sent
这是一些安全的客户环境,我无法登录到网络中的另一台机器来尝试手动发送测试 UDP 数据包。
有人能指出我进一步排除故障的方向吗?
答案1
检查这是否有帮助。 Linux 内核不传递多播 UDP 数据包 基本上,如果 net.ipv4.all.rp_filter = 1,则内核将执行严格反向路径验证。更多文档可在此处找到https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt