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

网络丢包定位记录(三)

网络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.mrgr.cn/news/33112.html

相关文章:

  • python文件命名,不注意容易出错
  • 重学 Android 自定义 View 系列(六):环形进度条
  • 在arm64架构下, Ubuntu 18.04.5 LTS 用命令安装和卸载qt4、qt5
  • MySQL与Oracle对比及区别
  • AGI自学分享,简单有用的理论与实践
  • 面试编程题目(一)细菌总数计算
  • XXL-JOB环境搭建
  • github加速下载@powershell命令行内加速下载github资源@获取镜像加速后的链接
  • 【成品论文】2024年华为杯研赛E题25页高质量成品论文(后续会更新
  • 代码编辑器 —— Notepad++ 实用技巧
  • 51单片机——独立按键
  • 一个安卓鸿蒙化工具
  • 银河麒麟桌面操作系统V10(SP1)离线升级SSH(OpenSSH)服务
  • CompletableFuture的allOf一定不要乱用!血泪史复盘
  • 01-ZYNQ linux开发环境安装,基于Petalinux2023.2和Vitis2023.2
  • go 安装依赖超时
  • msvcp140.dll0丢失的解决方法,总结6种靠谱的解决方法
  • Spring Boot实战:使用策略模式优化商品推荐系统
  • 数据结构:内部排序
  • Spring Boot实战:使用@Import进行业务模块自动化装配
  • Jboss Administration Console弱⼝令
  • 2024年华为杯-研赛F题论文问题一二讲解+代码分享
  • 计算机毕业设计 基于Python的校园个人闲置物品换购平台 闲置物品交易平台 Python+Django+Vue 前后端分离 附源码 讲解 文档
  • Vision Transformer (ViT)、Swin Transformer 和 Focal Transformer
  • 9、等保测评介绍
  • (项目管理系列课程)项目启动阶段:项目整合管理-制定项目章程