当前位置: 首页 > article >正文

网络丢包定位记录(三)

网络IP层丢包

接口ip地址配置丢包

1. 本机服务不通,检查lo接口有没有配置地址是127.0.0.1;

2 .本机接收失败, 查看local路由表:ip r show table local|grep 子机ip地址;这种丢包一般会出现在多IP场景,子机底层配置多ip失败,导致对应ip收不到包而丢包;

解决方案:

1.配置正确接口ip地址;比如ip a add 1.1.1.1 dev eth0

2.如果发现接口有地址还丢包,可能是local路由表没有对应条目,紧急情况下,可以用手工补上:

比如ip r add local 本机ip地址 dev eth0 table local ;

路由丢包

路由配置丢包

查看:

1.查看配置 路由是否设置正确(是否可达),是否配置策略路由(在弹性网卡场景会出现此配置)ip rule:

然后找到对应路由表。查看路由表:

或者直接用 ip r get x.x.x.x,让系统帮你查找是否存在可达路由,接口是否符合预期;

2.查看系统统计信息:

netstat -s|grep "dropped because of missing route"

解决方案:重新配置正确的路由;

反向路由过滤丢包

反向路由过滤机制是Linux通过反向路由查询,检查收到的数据包源IP是否可路由(Loose mode)、是否最佳路由(Strict mode),如果没有通过验证,则丢弃数据包,设计的目的是防范IP地址欺骗攻击。

查看:

rp_filter提供三种模式供配置:

0 - 不验证

1 - RFC3704定义的严格模式:对每个收到的数据包,查询反向路由,如果数据包入口和反向路由出口不一致,则不通过

2 - RFC3704定义的松散模式:对每个收到的数据包,查询反向路由,如果任何接口都不可达,则不通过

查看当前rp_filter策略配置:

$cat /proc/sys/net/ipv4/conf/eth0/rp_filter

如果这里设置为1,就需要查看主机的网络环境和路由策略是否可能会导致客户端的入包无法通过反向路由验证了。

从原理来看这个机制工作在网络层,因此,如果客户端能够Ping通服务器,就能够排除这个因素了。

解决方案:

根据实际网络环境将rp_filter设置为0或2:

$ sysctl -w net.ipv4.conf.all.rp_filter=2或
$ sysctl -w net.ipv4.conf.eth0.rp_filter=2

防火墙丢包

客户设置规则导致丢包

查看:

iptables -nvL |grep DROP ;

解决方案: 修改防火墙规则;

连接跟踪导致丢包

连接跟踪表溢出丢包

kernel 用 ip_conntrack 模块来记录 iptables 网络包的状态,并把每条记录保存到 table 里(这个 table 在内存里,可以通过/proc/net/ip_conntrack 查看当前已经记录的总数),如果网络状况繁忙,比如高连接,高并发连接等会导致逐步占用这个 table 可用空间,一般这个 table 很大不容易占满并且可以自己清理,table 的记录会一直呆在 table 里占用空间直到源 IP 发一个 RST 包,但是如果出现被攻击、错误的网络配置、有问题的路由/路由器、有问题的网卡等情况的时候,就会导致源 IP 发的这个 RST 包收不到,这样就积累在 table 里,越积累越多直到占满。无论,哪种情况导致table变满,满了以后就会丢包,出现外部无法连接服务器的情况。内核会报如下错误信息:kernel: ip_conntrack: table full, dropping packet;

查看当前连接跟踪数 :

cat /proc/sys/net/netfilter/nf_conntrack_max

解决方案:

增大跟踪的最大条数
net.netfilter.nf_conntrack_max  = 3276800
减少跟踪连接的最大有效时间
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
net.netfilter.nf_conntrack_udp_timeout_stream = 180
net.netfilter.nf_conntrack_icmp_timeout = 30

ct创建冲突失导致丢包

查看:当前连接跟踪统计:cat /proc/net/stat/nf_conntrack,可以查各种ct异常丢包统计

网络编程之网络丢包故障如何定位?如何解决?

解决方案:内核热补丁修复或者更新内核版本(合入补丁修改);

接下来,传输层UDP/TCP丢包在网络丢包定位记录(四)


http://www.kler.cn/news/314166.html

相关文章:

  • 海外大带宽服务器连接失败怎么办?
  • Antd框架中的Select组件placeholder不显示
  • [苍穹外卖]-11数据可视化接口开发
  • Qt 窗口事件机制
  • 分页查询,pageHelper, pagehelper-spring-boot-starter
  • C++ 策略技术中的算法策略
  • 握手传输 状态机序列检测(记忆科技笔试题)_2024年9月2日
  • 构建高可用和高防御力的云服务架构第一部分:深入解析DDoS高防(1/5)
  • 财富之眼用经济思维看清世界PDF高清下载
  • 【FastAPI】服务器使用SSE实现客户端之间的广播和点对点功能
  • 给新人的python笔记(一)
  • 深度学习基本概念详解
  • flink on k8s
  • 79篇vs13篇!本周中国学者发文量远超外国学者| NHANES数据库周报(8.28~9.3)
  • 执行matlab后进行RTL功能仿真check
  • 基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
  • 代理模式---静态代理和动态代理
  • JVM内存学习
  • Lodash的特点和功能
  • WGAN算法
  • 信奥初赛解析:1-3-计算机软件系统
  • YOLOv5模型部署教程
  • 小阿轩yx-通过state模块定义主机状态
  • 【计网面试真题】If-Modified-Since和Etag有什么区别
  • WebServer
  • 6、等级保护政策内容
  • Go语言的垃圾回收(GC)机制的迭代和优化历史
  • Vision Based Navigation :针对航天领域的基于视觉导航机器学习应用生成训练数据集
  • Redis的AOF持久化、重写机制、RDB持久化、混合持久化
  • Springboot常见问题(bean找不到)