- 前言
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第 1 篇 高性能网站构建
- 第 1 章 深入理解 DNS 原理与部署 BIND
- 第 2 章 全面解析 CDN 技术与实战
- 第 3 章 负载均衡和高可用技术
- 第 4 章 配置及调优 LVS
- 第 5 章 使用 HAProxy 实现 4 层和 7 层代理
- 第 6 章 实践 Nginx 的反向代理和负载均衡
- 第 7 章 部署商业负载均衡设备 NetScaler
- 第 8 章 配置高性能网站
- 第 9 章 优化 MySQL 数据库
- 第 2 篇 服务器安全和监控
- 第 10 章 构建企业级虚拟专用网络
- 第 11 章 实施 Linux 系统安全策略与入侵检测
- 第 12 章 实践 Zabbix 自定义模板技术
- 第 13 章 服务器硬件监控
- 第 3 篇 网络分析技术
- 第 14 章 使用 tcpdump 与 Wireshark 解决疑难问题
- 第 15 章 分析与解决运营商劫持问题
- 第 16 章 深度实践 iptables
- 第 4 篇 运维自动化和游戏运维
- 第 17 章 使用 Kickstart 完成批量系统安装
- 第 18 章 利用 Perl 编程实施高效运维
- 第 19 章 精通 Ansible 实现运维自动化
- 第 20 章 掌握端游运维的技术要点
- 第 21 章 精通手游运维的架构体系
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
最佳实践 78:使用 libpcap 进行自动化分析
在以上的章节中,使用 Wireshark 可以有效地分析了 tcpdump 的抓包内容,进而定位问题。但是如果抓包文件巨大,再使用 Wireshark 就不适用了。首先打开文件本身会非常慢,消耗大量内存,同时,如果进行过滤和分析,就更加费时费力了。在此,提出了使用程序自动化分析的技术。
在进行编程之前,需要安装相关的依赖项和库,使用如下命令:
yum -y install libpcap perl-Net-Pcap perl-NetPacket
作为演示,使用如下脚本来解析 Gameclient.pcap 中的 HTTP 响应,并打印出来:
#!/usr/bin/perl use strict; use warnings; use Net::Pcap qw(:functions); use NetPacket::Ethernet qw(:types); use NetPacket::IP qw(:protos); use NetPacket::TCP; use NetPacket::TCP; my $pcapfile = "Gameclient.pcap"; #指定需要解析的文件 my $err; my $pcap = Net::Pcap::open_offline( $pcapfile, \$err ) or die "Can't read '$pcapfile': $err\n";#使用 Pcap 打开文件 Net::Pcap::loop( $pcap, -1, \&process_packet, '' ); #循环,直到文件尾部 Net::Pcap::close($pcap); #关闭抓包文件 #函数 process_packet 实际处理每个包,匹配、打印 sub process_packet { my ( $user_data, $header, $packet ) = @_; # NetPacket::Ethernet::strip($packet) 把以太网首部去除,返回 IP 包 my $ip = NetPacket::IP->decode( NetPacket::Ethernet::strip($packet) );#对 IP 包进行解析 if ( $ip->{proto} == IP_PROTO_TCP ) {#先过滤 TCP 协议 my $TCP = NetPacket::TCP->decode( $ip->{data} ); #以 TCP 协议解析数据 if ( $TCP->{src_port} == 80 ) {#匹配服务器端的 HTTP 响应 print $TCP ->{data}, "\n"; #打印响应内容 } } }
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论