当前位置: 首页 > Linux

容器抓包方法

时间:2023-04-06 18:42:52 Linux

微信公众号:LinuGo,欢迎关注。在生产中,容器是轻量级的,ip、ping等一些基本的命令并没有封装在里面。这时候就可以进入容器的网络命名空间了。执行命令。当然,也可以通过这种方式捕获容器。命令介绍nsenternsenter命令用于进入指定进程的命名空间,包括最常用的挂载命名空间和网络命名空间。适用于容器的特殊工艺。#常用用法:#进入网络命名空间$nsenter-t-n#进入挂载命名空间,类似dockerexec进入容器$nsenter-t-mtcpdumptcpdump是Linux原生的抓包工具,常用usedinlinux系统上抓包的几种常见用法如下。#常用用法:#抓取某个网卡的所有数据包$tcpdump-i<网卡名>#抓取包含某个IP的网络包$tcpdump-i<网卡名>-vnnhost#抓取某个网卡源IP网络包$tcpdump-i<网卡名称>-vnnsrchost<源IP>#抓取目标IP的网络包$tcpdump-i<网卡名称>-vnndsthost<目标IP>#抓取目标IPnetworkpackage并放入File$tcpdump-i<网卡名>-w<文件名>接下来介绍如何使用上述命令抓取容器的数据包。1、查找容器Pid方法1使用dockertop命令$dockertop对于一般的容器来说,只有一个进程,Pid如图所示。有些容器中运行着多个进程,一般取第一行的Pid。对于多行,后面可以用CMD查看启动容器的过程,在前面取对应的Pid。方法二使用dockerinspect查看$dockerinspect|grepPid这个命令可以拦截容器进程的Pid。2.进入容器的命名空间接下来,通过nsenter命令进入容器进程的网络命名空间。$sudonsenter-t<进程标识符Pid>-n此时使用ifconfig命令查看容器的网卡信息。3、使用tcpdump抓包$tcpdump-i<网卡名称>在eth0网卡上使用tcpdump命令抓包。如果是在kubernetes环境下,需要定位到容器的位置,去对应的节点抓包;$kubectlgetpod-n-owide查看pod的容器名称$kubectlgetpod-n-oyaml|grepcontainerID按照上面的方法继续抓包容器包,最后抓包放到wireshark上进行分析。