项目上遇到了关于udp无法正常通信问题
问题概述:
客户端B可以ping通服务端A,但是向服务端A发送snmp请求无响应
问题环境:
1.服务端A是windows设备,该设备使用udp协议监听161的问题端口,2个实体网卡和一个虚拟网卡,三种网卡都是不同的网段简称网1,网2,虚网3,三个网卡的的ip和对应的网关都不一致
2.客户端B 是centos7 可以与虚网3通信,并且可以ping通服务端A
问题解决:
1.排除了防火墙原因,后来在服务端A去ping 客户端B,竟然无法ping通,并且客户端B上的udp请求包可以发送到服务器A上(服务器A上的任务管理器可以看到客户端B的ip)
,看了下服务端A的路由配置(route print),发现服务器A上设置有固定路由,默认路由都从网1走,所以造成A无法响应B的udp请求,然后在A上添加了一条路由规则,让B网段的ip走虚拟网卡3的网关,问题解决
总结:
1.能ping通并不代表双方可以顺利展开UDP和TCP通信,除了防火墙可能还有很多原因
2.A能ping通B并不代表B能ping通A
3.双(多)网卡 跨网段下的tcp,udp无法通信除了要排查防火墙,一定要排查下双方的路由规则
4.在windows 多网卡跨网段下,从外界来的ping(ICMP)请求,可以不依赖本地的路由表配置,从而能够ICMP响应外界,但是从本机向外部ping择需要依赖本地的路由表配置