首页主机资讯Linux dropped怎么记录

Linux dropped怎么记录

时间2025-11-18 10:05:05发布访客分类主机资讯浏览533
导读:Linux 丢包记录与定位实用指南 一 按场景选择记录方式 防火墙丢弃(iptables/nftables):用内核日志精确记录被策略丢弃的数据包,适合定位“被规则丢弃”的原因。 内核路径丢弃(协议栈/驱动):用跟踪工具抓取 kfree_...

Linux 丢包记录与定位实用指南

一 按场景选择记录方式

  • 防火墙丢弃(iptables/nftables):用内核日志精确记录被策略丢弃的数据包,适合定位“被规则丢弃”的原因。
  • 内核路径丢弃(协议栈/驱动):用跟踪工具抓取 kfree_skb 事件,定位具体的内核函数与调用栈。
  • 队列/整形丢包(qdisc/tc):记录和分析 tc 队列统计,定位由 netem 等整形规则造成的丢包。
  • 连接跟踪丢包(nf_conntrack):监控 conntrack 表满等导致的丢包,适合高并发/NAT 场景。

二 防火墙丢弃记录 iptables LOG

  • 记录入站丢弃
    sudo iptables -N LOGGING
    sudo iptables -A INPUT   -j LOGGING
    sudo iptables -A LOGGING -m limit --limit 2/min -j LOG  --log-prefix "IPTables-Dropped: " --log-level 4
    sudo iptables -A LOGGING -j DROP
    
  • 记录出站丢弃
    sudo iptables -N LOGGING
    sudo iptables -A OUTPUT  -j LOGGING
    sudo iptables -A LOGGING -m limit --limit 2/min -j LOG  --log-prefix "IPTables-Dropped: " --log-level 4
    sudo iptables -A LOGGING -j DROP
    
  • 同时记录入站与出站
    sudo iptables -N LOGGING
    sudo iptables -A INPUT   -j LOGGING
    sudo iptables -A OUTPUT  -j LOGGING
    sudo iptables -A LOGGING -m limit --limit 2/min -j LOG  --log-prefix "IPTables-Dropped: " --log-level 4
    sudo iptables -A LOGGING -j DROP
    
  • 日志查看与要点
    • 日志默认进入 /var/log/messages/var/log/syslog,可用 tail -f 实时查看;示例日志前缀为 IPTables-Dropped:,便于 grep 过滤。
    • 建议始终使用 -m limit 限流,避免日志风暴(如每分钟 2 条)。
    • 若需单独文件,可在 rsyslog 配置中将包含前缀的消息单独写入(如 /var/log/iptables.log),并配合 logrotate 做按日/按大小切割。

三 内核路径丢弃记录

  • dropwatch 实时观察内核丢包位置
    sudo dropwatch -lkas
    
    输出示例:1 drops at icmp_rcv+11c (0xffffffff8193bb1c) [software],可直接看到函数与偏移。
  • perf 抓取 kfree_skb 事件(含调用栈)
    sudo perf record -g -a -e skb:kfree_skb
    sudo perf script
    
  • eBPF/BCC 工具
    sudo bpftrace -e 'tracepoint:skb:kfree_skb {
         @[kstack] = count();
     }
        '
    # 或
    sudo /usr/share/bcc/tools/tcpdrop    # 关注 TCP 层丢包
    
  • SystemTap 脚本
    sudo stap -v /usr/share/doc/systemtap-*/examples/network/dropwatch.stp
    
    以上方法可帮助定位“内核在何处丢弃”,配合火焰图/调用栈进一步分析根因。

四 队列与整形丢包记录 tc

  • 查看队列与丢包统计
    tc -s qdisc ls dev eth0
    
  • 若使用 netem 整形并出现丢包,可直接删除规则验证
    tc qdisc del dev eth0 root netem loss 30%
    
    删除后复测,丢包消失即可确认是整形规则所致。

五 连接跟踪丢包记录 nf_conntrack

  • 监控 conntrack 表使用与满表丢包迹象
    cat /proc/sys/net/netfilter/nf_conntrack_count
    cat /proc/sys/net/netfilter/nf_conntrack_max
    dmesg | tail -n 50 | grep conntrack
    
  • 典型现象与处理
    • 日志出现 “ip_conntrack: table full, dropping packet” 表示表满导致丢包。
    • 可临时调大并优化超时(示例值,需结合内存与业务评估):
      echo 102400 >
           /proc/sys/net/netfilter/nf_conntrack_max
      echo 21600  >
           /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
      
    • 永久生效写入 /etc/sysctl.conf 并执行 sysctl -p

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux dropped怎么记录
本文地址: https://pptw.com/jishu/749862.html
Linux dropped有什么危害 ubuntu日志如何利用

游客 回复需填写必要信息