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安装的。

相关推荐
追逐时光者2 分钟前
面试第一步,先准备一份简洁、优雅的简历模板!
后端·面试
慕木兮人可11 分钟前
Docker部署MySQL镜像
spring boot·后端·mysql·docker·ecs服务器
发粪的屎壳郎19 分钟前
ASP.NET Core 8 轻松配置Serilog日志
后端·asp.net·serilog
倔强青铜三1 小时前
苦练Python第4天:Python变量与数据类型入门
前端·后端·python
倔强青铜三1 小时前
苦练Python第3天:Hello, World! + input()
前端·后端·python
倔强青铜三2 小时前
苦练Python第2天:安装 Python 与设置环境
前端·后端·python
Kookoos2 小时前
ABP VNext + .NET Minimal API:极简微服务快速开发
后端·微服务·架构·.net·abp vnext
倔强青铜三2 小时前
苦练Python第1天:为何要在2025年学习Python
前端·后端·python
LjQ20403 小时前
Java的一课一得
java·开发语言·后端·web
求知摆渡4 小时前
共享代码不是共享风险——公共库解耦的三种进化路径
java·后端·架构