【转载】tcpdump rpm方式安装细节

前言
挺久没更新了,先当成个博客来写吧,我是佛系更新,大家佛系随便看看就行,后续应该不会力求一定要高质量文章才发出来,就记录记录一个普普通通、平平凡凡的码农的生活。

问题背景
有些东西,说起来很简单,实操的时候,会发现存在各种细节。

前一阵排查一个线上问题,链路较长,排查这种问题基本就是靠日志,日志不足时,靠网络抓包,在linux上基本就是使用tcpdump。

但是,因为我们这边开发是没有线上机器权限的,所有线上操作都是要运维同事来执行,运维同事很忙,经常座位上围着一堆人,所以每次排查问题的时间很紧迫。

因为知道机器上没有tcpdump,我就自己在网上下载了一个tcpdump的rpm包,发给运维同事,然后在约好的时间,几个开发同事一起去他那边排查。运维同事登上跳板机,再登上主机,把rpm包传上去,一执行,结果报错了,tcpdump还依赖libpcap这个rpm。第一次安装就这么失败了,但也不能浪费这次定位的时间,只能先不抓包了,看看日志吧。

第一天靠日志也没分析出结果,第二天,这次做了准备工作,提前准备好了全部的包,这次怎么获取的呢?

在开发环境的centos 7.x机器上执行:

yum install --downloadonly --downloaddir=/root/download tcpdump
复制
执行完成后,就在/root/download拿到了tcpdump的依赖包:

[root@strategy-stg-app-2 download]# ll
total 564
-rw-r–r-- 1 root root 141376 Jun 21 15:45 libpcap-1.5.3-11.el7.x86_64.rpm
-rw-r–r-- 1 root root 431300 Jun 21 15:45 tcpdump-4.9.2-3.el7.x86_64.rpm
复制
这次发过去后,在某台机器上安装了,没问题,可以抓包,挺好。

然后,问题来了,前两天,又遇到一个问题,需要抓包,这次是另一台机器,于是按照老习惯,又把上面这两个包发过去了,结果这次马失前蹄,安装libpcap就报错了:

file /usr/lib64/libpcap.so.1.5.3 from install of libpcap-14:1.5.3-11.el7.x86_64 conflicts with file from package libpcap-14:1.5.3-8.el7.x86_64
复制
我也懵了,还不知道怎么处理这类冲突问题,然后最后就是没能抓包,打乱了之前的问题排查思路。

我归结了下问题,其实就是,不管线上是什么机器,最好是对方给我们一个操作系统的版本号,我们就能对症下药,知道应该安装什么版本的tcpdump。

centos版本/查询对应版本的rpm
[root@xxx download]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
复制
假设运维同事给了线上机器的版本后,我们如何决定安装什么版本的tcpdump呢?

我们要在开发环境也去搭建一个对应版本的机器来验证吗,理论上来说,是应该这样,但是,这也太重了。

我的方式是这样,我先查了下,centos目前有这么些版本:

https://en.wikipedia.org/wiki/CentOS#cite_note-123

有兴趣的同学观察下,标红的两列有对应关系的。

知道了机器的centos版本后,如何知道对应的tcpdump是什么版本呢?

这边有个rpm查询网站,http://rpm.pbone.net/

看下图,会发现centos 7.5和centos 7.6,搭载的tcpdump版本就是不一样的,一个是4.9.2-3,一个是4.9.2-4,

4.9.2表示version,而-3表示第三个Release,-4表示第4个Release,应该是有些小差别。

通过上面的方式,我们知道了应该使用什么版本的rpm,接下来,去通过什么方式获取呢,前面使用的如下方式,很可能只能获取到非对应版本的rpm:

yum install --downloadonly --downloaddir=/root/download tcpdump
复制
如何才能拿到想要的版本的rpm呢?

目前,对于tcpdump这个来说,我觉得直接手动下载rpm也是一个可以接受的方式。

在手动下载之前,需要知道tcpdump有哪些依赖的rpm?

这个可以通过前面的这种方式:

yum install --downloadonly --downloaddir=/root/download tcpdump
复制
或者下图这样,也能看个大概:

我们这里从上图看到的就是,如果要安装tcpdump的14:4.9.2-3版本,依赖的libpcap需要满足:

libpcap >= 14:1.5.3-10
复制
此时,去找对应版本的rpm来下载就行了。

冲突问题怎么解决
前言里提到的冲突问题,又如何解决?

file /usr/lib64/libpcap.so.1.5.3 from install of libpcap-14:1.5.3-11.el7.x86_64 conflicts with file from package libpcap-14:1.5.3-8.el7.x86_64
复制
上面说了,centos 7.x会有对应的版本的tcpdump,tcpdump依赖libpcap,但是很可能,线上机器在安装别的什么软件的时候,就安装了一个低版本的libpcap(如上面报错中提到的14:1.5.3-8版本)。

14:1.5.3-8版本的rpm包中,包含的文件,也有/usr/lib64/libpcap.so.1.5.3;此时,我们再去安装高版本的libpcap,如14:1.5.3-11时,14:1.5.3-11里也包含了一个libpcap.so.1.5.3要解压到/usr/lib64目录,此时就可能覆盖旧版本的,此时就会报错。

如果我们不想覆盖旧版本,就只能去找个低版本的tcpdump来安装,也就是一个依赖的libpcap为14:1.5.3-8版本的tcpdump。

怎么找呢,就是去http://rpm.pbone.net/查看各个tcpdump,依赖的libpcap的版本。

资源网站
http://mirror.centos.org/centos/7/os/x86_64/Packages/

https://rpmfind.net/

https://pkgs.org/

http://rpm.pbone.net/

https://www.cnblogs.com/guigujun/p/7868748.html加粗样式

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: TCPdump是一个流行的网络诊断工具,能够捕获和分析网络流量,它可以用于分析网络问题的原因或网络攻击的来源。在Linux系统中,TCPdump通常作为命令行工具使用,需要通过命令行输入参数来执行操作。为了方便安装和使用,用户可以从官方网站下载TCPdumpRPM文件,进行安装RPM(Redhat Package Manager)是一种在Linux操作系统中常见的软件包管理工具,它可以自动处理软件包的安装、更新和卸载,用户只需要运行相应的命令即可完成操作。TCPdumpRPM包是针对Redhat系列的Linux发行版(如CentOS、Fedora、Red Hat Enterprise Linux)而设计的,对于其他的Linux发行版可能需要进行一些自定义的配置。 安装TCPdumpRPM包非常简单,只需要下载对应版本的RPM文件,然后使用rpm命令进行安装即可。例如,如果要在CentOS系统上安装TCPdump,可以在终端中输入以下命令: ``` sudo yum install tcpdump ``` 其中,yum是CentOS系统的软件包管理工具,通过执行该命令可以自动下载并安装TCPdumpRPM包。安装完成后,即可在终端中直接使用tcpdump命令进行网络流量的抓取和分析。 需要注意的是,在使用TCPdump时,需要具备一定的网络技术和安全知识,否则可能会产生一些安全问题。建议用户在使用TCPdump时,先阅读相关文档和指南,了解其操作规则和注意事项,以避免不必要的风险。 ### 回答2: TCPdump是一款在类Unix系统上运行的命令行网络分析工具,它能够捕获网络数据包并将其以详细的形式展现出来,以帮助网络管理员或开发人员排查网络问题。在许多情况下,安装TCPdump工具可以大大简化网络分析的过程。在RPM-based Linux系统中,TCPdump可通过安装TCPdump rpm包进行安装安装TCPdump rpm包十分容易。首先,需要通过访问RPM收藏库(如EPEL)或从TCPdump官网下载RPM包。然后,可以通过命令行安装程序(如yum或dnf)或图形用户界面(如GNOME或KDE)进行安装安装完成后,即可使用命令行运行TCPdump程序。 一般情况下,网络管理员使用TCPdump进行网络调试的过程是这样的:首先,管理员输入TCPdump命令并设置所需的过滤器和选项,例如捕获特定协议的数据包或限制捕获数据包的数量。然后,TCPdump开始捕获数据包,并将其以人类可读的形式输出到屏幕上。管理员现在可以分析捕获到的数据包,查找问题并找到解决方案。 总的来说,TCPdump是一款强大的网络分析工具,它可以帮助网络管理员轻松地控制和监视网络流量,并有效地排除网络问题。由于其易于使用和安装的特点,TCPdump对Linux系统管理员来说是一款非常有用的网络调试工具。 ### 回答3: TCPDump是一种可以在Linux和Unix系统上使用的网络封包分析工具,用于监控网络流量和诊断通信问题。而TCPDump RPM包是一种通过RPM(Redhat Package Manager)进行安装的二进制文件,可以简化安装和管理过程。 在安装TCPDump RPM包之前,需要确定系统是否已经安装RPM,如果没有,需要先安装RPM。然后下载对应的TCPDump RPM包并使用RPM命令进行安装,具体步骤如下: 1. 下载适当版本的TCPDump RPM包 2. 打开终端并切换到拥有root权限的用户 3. 使用RPM命令安装TCPDump RPM包:rpm -ivh tcpdump-version.rpm 4. 安装完成后,可以通过输入tcpdump命令来确认TCPDump是否已经成功安装 除了便于安装和管理,TCPDump RPM包还提供了一些额外的功能,例如内置的过滤器和抓包选项等,使得使用和分析网络数据包更为方便。但需要注意的是,TCPDump的使用需要具备一定的网络知识和技能,例如了解常见的协议和端口,熟悉抓包选项和过滤器的使用等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值