目录

tcpdump 可以收到包,udp server 无法收包,最终发现是 uRPF 的锅 DRAFT

文章简介:tcpdump 可以收到包,udp server 无法收包,简单的排查过程

现象

我们的某机器从 0.0.0.0:514/udp 接受数据, ip 为 10.1.1.11/24 和 10.1.2.10/24.另一台机器 10.1.1.10/24 向 10.1.1.11/24 发送 udp 包。

1
2
3
4
5
6
machine1:
1. 10.1.1.10/24

machine2:
1. 10.1.2.10/24
2. 10.1.1.11/24

我们使用 tcpdump 查看收到了数据,命令如下:

1
tcpdump -i any host 10.1.1.10 and udp port 514 or icmp -X

而 machine1 514/udp 服务没有收到数据。

如何快速恢复的

给 machine2 服务添加路由后,

1
ip route add 10.1.1.10/32 via 10.1.1.1

原因

TODO: 找到了大致方向,尝试复现验证下

重新梳理 linux 的实现机制,在 这里 找到了类似的现象,无路由 udp 无法收包。

解决办法:

1
2
sysctl net.ipv4.conf.all.rp_filter=0
sysctl net.ipv4.conf.eth0.rp_filter=0