记Linux报文到达主机但Socket收不到的异常

前言

这段经常遇到网络报文已经到达Linux主机,通过`tcpdump -i netif -nnN -vv`已可以看到报文已经到达某网卡,但是,socket却静悄悄、收不到的情况。

通过尝试发送其他同网段通信的报文,socket恢复活力,最后了解到,这是因为linux主机特殊的`rp_filter`网络参数,进行安全限制的效果:如果收到的报文,不是最优从此网卡上能够发出去的报文,则此报文会被丢弃掉,俗称**反向路径检查**

解决办法

  • 最优,保证同网段通信

  • 次,增加针对此主机全掩码的特殊路由,允许从此网卡进行收发,规避到rp_filter的影响

  • 再次,修改ip_forward或rp_filter网络协议栈参数让报文收发通畅,影响面比较大,所以,最低推荐顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值