CentOS下常见Sniffer工具安装指南
若需在Kubernetes集群中抓取Pod的网络流量,可通过krew插件管理器安装sniff插件,步骤如下:
安装krew
krew是Kubernetes的插件管理工具,需先安装。执行以下命令(需提前安装git):
$(set -x; cd "$(mktemp -d)" && curl -fsSLO "https://storage.googleapis.com/krew/v0.2.1/krew.{tar.gz,yaml}" && tar zxvf krew.tar.gz && ./krew-"$(uname | tr '[:upper:]' '[:lower:]')_amd64" install --manifest=krew.yaml --archive=krew.tar.gz)
安装完成后,将krew路径(~/.krew/bin)添加到PATH环境变量(如echo 'export PATH=$PATH:$HOME/.krew/bin' >> ~/.bashrc并执行source ~/.bashrc)。
安装sniff插件
更新krew插件索引并安装sniff:
kubectl krew update
kubectl krew install sniff
插件安装后,可通过kubectl sniff <pod-name> -n <namespace>命令抓取指定Pod的流量(如kubectl sniff echo-go-bdf4bd7ff-v6hml -n devops)。
netsniff是一款高性能网络嗅探工具,适用于CentOS系统的本地抓包,步骤如下:
安装依赖库
编译前需安装开发工具和依赖库:
sudo yum groupinstall "Development Tools" -y
sudo yum install ncurses-devel zlib-devel awk flex quilt git-lfs openssl-devel xz -y
下载并编译源码
从GitHub克隆netsniff仓库,进入目录后编译安装:
git clone https://github.com/netsniff/netsniff.git
cd netsniff
mkdir build && cd build
cmake .. && make
sudo make install
配置与启动
默认配置文件位于/etc/netsniff/netsniff.conf,可修改以下参数:
CAPTURE_ENABLED=1(启用捕获)INTERFACE=eth0(指定监听接口)FILTER="tcp and src host 192.168.1.100"(设置过滤规则,如仅捕获来自192.168.1.100的TCP流量)。sudo /usr/local/bin/sniff(如需开机自启,需编写systemd服务文件)。Go-Sniffer是一款基于Go语言的应用层协议嗅探工具,支持Redis、MySQL等协议,安装步骤如下:
安装Go环境
下载并安装Go(以1.10.3版本为例):
wget https://golang.org/dl/go1.10.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
安装Go-Sniffer
使用go get命令下载并安装:
sudo yum install -y libpcap libpcap-devel # 安装libpcap依赖
go get -v -u github.com/40t/go-sniffer
sudo cp -rf $(go env GOPATH)/bin/go-sniffer /usr/local/bin
使用示例
抓取Redis流量:go-sniffer eth0 redis -p 6379 out.log
抓取MySQL流量:go-sniffer eth0 mysql -p 3306(eth0为网卡名称,out.log为输出日志文件)。
若仅需简单抓包,可直接安装tcpdump(CentOS默认仓库提供):
sudo yum install tcpdump -y
使用示例:
sudo tcpdump -i eth0 -w output.pcapsudo tcpdump -i eth0 port 80sudo tcpdump -i eth0。注意事项: