首页 > 其他分享 >使用sniff插件在pod中抓包

使用sniff插件在pod中抓包

时间:2022-10-18 09:46:20浏览次数:44  
标签:INFO 插件 0000 sniff static nfs pod tcpdump

使用sniff插件在pod中抓包

安装

kubectl krew install sniff

#也可以手动下载安装

使用

#本机没有wireshark 所以会报错,有的话会自动打开读取
[root@node2-dev ~]# kubectl sniff nfs-provisioner-01-8657688f5d-9mvfg -n kube-system
INFO[0000] using tcpdump path at: '/root/.krew/store/sniff/v1.6.2/static-tcpdump'
INFO[0000] no container specified, taking first container we found in pod.
INFO[0000] selected container: 'nfs-client-provisioner'
INFO[0000] sniffing method: upload static tcpdump
INFO[0000] sniffing on pod: 'nfs-provisioner-01-8657688f5d-9mvfg' [namespace: 'kube-system', container: 'nfs-client-provisioner', filter: '', interface: 'any']
INFO[0000] uploading static tcpdump binary from: '/root/.krew/store/sniff/v1.6.2/static-tcpdump' to: '/tmp/static-tcpdump'
INFO[0000] uploading file: '/root/.krew/store/sniff/v1.6.2/static-tcpdump' to '/tmp/static-tcpdump' on container: 'nfs-client-provisioner'
INFO[0000] executing command: '[/bin/sh -c test -f /tmp/static-tcpdump]' on container: 'nfs-client-provisioner', pod: 'nfs-provisioner-01-8657688f5d-9mvfg', namespace: 'kube-system'
INFO[0000] command: '[/bin/sh -c test -f /tmp/static-tcpdump]' executing successfully exitCode: '1', stdErr :''
INFO[0000] file not found on: '/tmp/static-tcpdump', starting to upload
INFO[0000] verifying file uploaded successfully
INFO[0000] executing command: '[/bin/sh -c test -f /tmp/static-tcpdump]' on container: 'nfs-client-provisioner', pod: 'nfs-provisioner-01-8657688f5d-9mvfg', namespace: 'kube-system'
INFO[0000] command: '[/bin/sh -c test -f /tmp/static-tcpdump]' executing successfully exitCode: '0', stdErr :''
INFO[0000] file found: ''
INFO[0000] file uploaded successfully
INFO[0000] tcpdump uploaded successfully
INFO[0000] spawning wireshark!
INFO[0000] starting sniffer cleanup
INFO[0000] sniffer cleanup completed successfully
Error: exec: "wireshark": executable file not found in $PATH


#导出抓包日志,可以导入别的wireshark中进行查看
[root@node2-dev ~]# kubectl sniff nfs-provisioner-01-8657688f5d-9mvfg -n kube-system -o test.pcap

特权模式

ksniff 默认通过上传 tcpdump 二进制文件到目标 Pod 的一个容器里,然后执行二进制来实现抓包。但该方式依赖容器是以 root 用户启动的,如果不是就无法抓包。

这个时候我们可以加一个 -p 参数,表示会在 Pod 所在节点新起一个 privileged 的 Pod,然后该 Pod 会调用容器运行时 (dockerd 或 containerd 等),新起一个以 root 身份启动的 container,并 attach 到目标 Pod 的 netns,然后执行 container 中的 tcpdump 二进制来实现抓包。

[root@node2-dev ~]# kubectl sniff nfs-provisioner-01-8657688f5d-9mvfg -n kube-system -p

明文输出

如果数据包内容很多都是明文 (比如 HTTP),只希望大概看下明文内容,可以指定 -o - 将抓包内容直接打印到标准输出

[root@node2-dev ~]# kubectl sniff nfs-provisioner-01-8657688f5d-9mvfg -n kube-system -o -

过滤

有时数据量很大,如果在抓取时不过滤,可能会对 apiserver 造成较大压力 (数据传输经过 apiserver),这种情况我们最好在抓取时就指定 tcpdump 过滤条件,屏蔽掉不需要的数据,避免数据量过大。

-f 参数即可指定过滤条件

[root@node2-dev ~]# kubectl sniff nfs-provisioner-01-8657688f5d-9mvfg -n kube-system -f "port 9000" -o -

FAQ

wireshark 报 unknown

打开抓包文件时,报错 pcap: network type 276 unknown or unsupported:

通常是因为 wireshark 版本低导致的,升级到最新版就行。

抓包时报 No such file or directory

使用 kubectl sniff 抓包时,报错 ls: cannot access '/tmp/static-tcpdump': No such file or directory 然后退出:

img

这是笔者在 mac 上安装当时最新的 ksniff v1.6.0 版本遇到的问题。该问题明显是一个 bug,static-tcpdump 二进制没有上传成功就去执行导致的,考虑三种解决方案:

  1. 手动使用 kubectl cp 将二进制拷到目标 Pod 再执行 kubectl sniff 抓包。
  2. kubectl sniff 指定 -p 参数使用特权模式 (亲测有效)。
  3. 编译最新的 ksniff,替换当前 kubectl-sniff 二进制,这也是笔者目前的使用方式。

标签:INFO,插件,0000,sniff,static,nfs,pod,tcpdump
From: https://www.cnblogs.com/jingzhe2020/p/16801530.html

相关文章

  • 使用k8tz优雅的解决pod内的时区问题
    使用k8tz优雅的解决pod内的时区问题1.问题简介容器在主机的内核上运行,并获得时钟,但时区不是来自内核,而是来自用户空间。在大多数情况下,默认使用协调世界时(UTC)。时区......
  • Eclipse插件推荐
    介绍本文介绍一些常用的Eclipse插件。​​http://repository.grepcode.com/java/ext-eclipse/​​​......
  • Eclipse中Tomcat插件的使用说明
    打开Tomcat视图通过菜单Window->ShowView->Other然后输入过滤项Servers,选择找到的内容然后点OK即可。添加web项目如果在打开的Tomcat视图中已经有一个实例,则右键菜单Addan......
  • Eclipse插件开发资源查找
    介绍我们在开发Eclipse插件的时候,需要查找类、接口等资源的时候,怎么办呢?本文介绍如何使用Eclipse自带的查找对话框来获取类路径。例子[codesyntaxlang="java"]/***http:......
  • Eclipse插件开发CleanUp
    扩展点[codesyntaxlang="python"]<extensionpoint="org.eclipse.jdt.ui.cleanUps"><cleanUpConfigurationUIclass="org.suren.cleanup.SuRenCleanUp"name="SuRenS......
  • Eclipse插件开发Java快速修复
    介绍在Eclipse中在有报错的地方,使用快捷键Ctrl+1就会弹出几种解决问题的方案,这时候只要选择一种就可能快速地修复该问题。这些常见的问题,有些可能是通用的,例如:没有导入包。......
  • Eclipse插件开发自定义Classpath
    介绍我们在使用Eclipse做Java开发的时候,如果要用到JDK以外的库文件的话,一般的做法都是自定义一个Library或者逐个添加jar文件,或者是利用Maven。那么,Maven又是怎么做到的呢?......
  • WordPress在插件管理页面添加超链接
    •介绍如果你创建了一个插件,WordPress的插件管理页面中就可以看到,而且会有启用、停用、编辑等默认的超级链接按钮。那么,怎么才能添加一个自定义的呢?•玉照[captionid="a......
  • wangEditor导入word文档 wangEditor word导入插件
    ​ ueditor粘贴不能粘贴word中的图片是一个很头疼的问题,在我们的业务场景中客户要求必须使用ueditor并且支持word的图片粘贴,因为这个需求头疼了半个月,因为前端方面因为安......
  • VSCode 插件开发打包提示Cannot find name 'Blob'
    问题描述执行打包vscepackage提示错误原因分析未知解决方法打开错误源,将Blob改成any实现效果......