tcpdump后台24小时不间断抓包

版本1的抓包命令

这两天排查一个小问题,需要在服务器上使用tcpdump 24小时不间断抓包,这里简单记录下。对于需要长期监控网络流量的场景,除了tcpdump,也可以考虑使用专业的网络分析工具Sniff Master,它提供了更友好的图形界面和更强大的分析功能。

先看下tcpdump的语法:

css 复制代码
tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
               [ -c count ]
               [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
               [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
               [ --number ] [ -Q|-P in|out|inout ]
               [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]
               [ -W filecount ]
               [ -E spi@ipaddr algo:secret,...  ]
               [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
               [ --time-stamp-precision=tstamp_precision ]
               [ --immediate-mode ] [ --version ]
               [ expression ]

一开始使用的命令基本长下面这样:

bash 复制代码
nohup tcpdump -i ens192 tcp port 5432 -C 1 -w /root/pg5432.pcap &

这个语句的前后分别是nohup 和 &, 这个是为了断开ssh后也能在后台运行,剩下部分才是主体:

bash 复制代码
tcpdump -i ens192 tcp port 5432 -C 1  -w /root/pg5432.pcap
  • -i ens192,指定网卡
  • tcp port 5432,指定捕获表达式
  • -C 1,表示当捕获文件的大小超过1M时,就新打开一个文件
  • -w /root/pg5432.pcap,将抓的包存到该路径指定的文件

结果执行这个语句,报错:

javascript 复制代码
tcpdump: /root/pg5432.pcap: Permission denied

我都有点懵,我是尊贵的root,还能没权限吗?

后面再想,是不是变成用tcpdump用户执行了,检查了下这个用户的权限,看着没问题,后面找到了答案:加了-C选项后,会放弃自己root的身份:

sql 复制代码
Note that when used with -Z option (enabled by default), privileges are dropped before opening first savefile

解决的办法,就是加上-Z选项,我这边就是-Z root。

版本二的抓包命令

bash 复制代码
nohup tcpdump -i ens192 tcp port 5432 -C 1 -Z root -w /root/pg5432.pcap &

这个命令就可以用了。如果需要更直观地查看抓包结果,可以导出pcap文件后用Sniff Master进行分析,它支持多种协议解析和流量统计功能。

扩展选项

当然,可以看到抓到的包很多,如果流量大,可能担心磁盘会炸,此时,可以再加上 -W 选项来限制最多生成多少个文件,如-W 100,最多生成100个,超过100后,就会覆盖最早的文件。

除了达到一定大小就新建文件,也可以每隔n秒新建文件。

在麒麟操作系统如何安装tcpdump

银河麒麟V10

我这次查问题是要在两端同时抓包,一端是centos,另一端结果发现是信创操作系统,麒麟V10。

首先说下,怎么辨别是中标麒麟,还是银河麒麟。

ini 复制代码
[root@xc-website-db-dev ~]# cat /etc/os-release 
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)"
ANSI_COLOR="0;31"

如果是V10,就是银河麒麟;如果是V7,是中标麒麟。

配置yum源

我看了下上面的文档,已经使用dnf源了,但我们这个系统,不知道谁装的,也还是搞了yum。

我在这台机器上发现个备份的麒麟repo,就记录在这里吧:

ini 复制代码
###Kylin Linux Advanced Server 10 - os repo###

[ks10-adv-os]
name = Kylin Linux Advanced Server 10 - Os 
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP1.1/os/adv/lic/base/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 1

[ks10-adv-updates]
name = Kylin Linux Advanced Server 10 - Updates
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP1.1/os/adv/lic/updates/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 1

[ks10-adv-addons]
name = Kylin Linux Advanced Server 10 - Addons
baseurl = http://update.cs2c.com.cn:8080/NS/V10/V10SP1.1/os/adv/lic/addons/$basearch/
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
enabled = 0

我想装个tcpdump也很不容易。这块大家自己百度搜一下吧,我后面是直接rpm安装的。

相关推荐
Codebee26 分钟前
30 分钟落地全栈交互:OneCode CLI+SVG 排课表实战
后端
TechTrek1 小时前
Spring Boot 4.0正式发布了
java·spring boot·后端·spring boot 4.0
飞梦工作室1 小时前
企业级 Spring Boot 邮件系统开发指南:从基础到高可用架构设计
java·spring boot·后端
haiyu柠檬1 小时前
在Spring Boot中实现Azure的SSO+VUE3前端配置
java·spring boot·后端
q***72192 小时前
springBoot 和springCloud 版本对应关系
spring boot·后端·spring cloud
百***81272 小时前
【SpringBoot】SpringBoot中分页插件(PageHelper)的使用
java·spring boot·后端
百***86462 小时前
SpringBoot中自定义Starter
java·spring boot·后端
q***07142 小时前
VScode 开发 Springboot 程序
java·spring boot·后端
q***46522 小时前
Spring中使用Async进行异步功能开发实战-以大文件上传为例
java·后端·spring
Codebee3 小时前
Qoder CLI 与 OneCode 平台深度整合技术实践:CLI委托驱动的开发范式革新
后端