在容器外通过tcpdump对容器内的网络抓包方法

步骤
  1. 查container id,docker的话差不多

    [root@master1 ~]# crictl ps |grep haproxy
    5bb56c0921182       2e29f1a5b65d9       18 hours ago        Running             haproxy                       0                   b173c3f984643       haproxy-deployment-587cf97455-7xx7b
    
  2. 根据container id 查找pid(docker可以用docker inspect --format {{.State.Pid}} containerID

    [root@master1 ~]# crictl inspect 5bb56c0921182 | python -c 'import sys, json; data = json.load(sys.stdin); print(data["info"]["pid"])'
    2469984
    
  3. 找到容器使用的网卡

    [root@master1 ~]# nsenter -n -t 2469984  ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
    32104: eth0@if32105: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 16:b2:ba:06:4d:a4 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 192.168.1.111/32 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::14b2:baff:fe06:4da4/64 scope linkvalid_lft forever preferred_lft forever
    
  4. 上面的那个 if32105 是关键信息,然后在 host 机器上找到这个 @if32105 对应的网卡:

    [root@master1 ~]# ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
    2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:50:56:b8:be:b9 brd ff:ff:ff:ff:ff:ffinet 10.148.151.130/23 brd 10.148.151.255 scope global noprefixroute ens32valid_lft forever preferred_lft foreverinet6 fe80::db71:3b9e:9958:a419/64 scope link noprefixroutevalid_lft forever preferred_lft forever
    3: cilium_net@cilium_host: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 66:ce:b7:1a:d7:3f brd ff:ff:ff:ff:ff:ffinet6 fe80::64ce:b7ff:fe1a:d73f/64 scope linkvalid_lft forever preferred_lft forever
    ...
    83: lxc9dc62fde4d9f@if82: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether ce:1c:5b:15:f0:65 brd ff:ff:ff:ff:ff:ff link-netns cni-5b3219cf-14b2-d39b-c104-8698dd1effb7inet6 fe80::cc1c:5bff:fe15:f065/64 scope linkvalid_lft forever preferred_lft forever
    32105: lxcd6f187d66d97@if32104: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 4a:8c:5d:74:dc:34 brd ff:ff:ff:ff:ff:ff link-netns cni-1f7b1b65-5fbb-5945-9b91-e10f623df249inet6 fe80::488c:5dff:fe74:dc34/64 scope linkvalid_lft forever preferred_lft forever
    18027: lxc7930a002d196@if18026: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 1e:98:95:d9:89:94 brd ff:ff:ff:ff:ff:ff link-netns cni-1a78e78c-5e35-f51b-fda3-ac09b3ca0e9finet6 fe80::1c98:95ff:fed9:8994/64 scope linkvalid_lft forever preferred_lft forever
    ...
    
  5. 这个 lxcd6f187d66d97: 就是我们要找的 @if32105 网卡信息,抓包的时候指定对应的网卡 lxcd6f187d66d97, 现在可以抓包了:

     tcpdump -i lxcd6f187d66d97 -A -w capture.pcap
    
命令

用命令表示以上过程:

[root@master2 ~]# nsenter -n -t $(crictl inspect $(crictl ps | grep haproxy | sed -n "2p"| awk '{print $1}') | python -c 'import sys, json; data = json.load(sys.stdin); print(data["info"]["pid"])'
)  ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
42: eth0@if43: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 56:54:49:a0:1b:0b brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 192.168.2.84/32 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::5454:49ff:fea0:1b0b/64 scope linkvalid_lft forever preferred_lft forever
# 找到对应的网卡lxc006abd15e53b
[root@master2 ~]# ip addr | sed -n '/^43: /,/^[0-9]*: /p'
43: lxc006abd15e53b@if42: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 5a:4b:a8:9b:ff:57 brd ff:ff:ff:ff:ff:ff link-netns cni-a79cf5f9-801f-2d7f-bb14-6be41c134817inet6 fe80::584b:a8ff:fe9b:ff57/64 scope linkvalid_lft forever preferred_lft forever
47: lxc1186459d5c30@if46: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
遗留问题
  1. HaProxy配置DNS解析时,如果server配置的域名是短域名,则kube-dns无法解析?

    # 如果配置成dbsrv1.platform,则无法解析
    listen opengaussbind *:6000option httpchkhttp-check expect status 200default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessionsserver dbsrv1 dbsrv1.platform.svc.cluster.local:5432 maxconn 100 check port 8008 resolvers kube-dnsserver dbsrv2 dbsrv2.platform.svc.cluster.local:5432 maxconn 100 check port 8008 resolvers kube-dnsserver dbsrv3 dbsrv3.platform.svc.cluster.local:5432 maxconn 100 check port 8008 resolvers kube-dns# 报文如下
    13	0.020614	38879	192.168.2.42	DNS	86	Standard query 0xe5d5 A dbsrv2.platform OPT
    14	0.020641	49559	192.168.2.42	DNS	86	Standard query 0xe5d5 A dbsrv2.platform OPT
    15	0.020737	53	192.168.2.243	DNS	161	Standard query response 0xe5d5 No such name A dbsrv2.platform SOA a.root-servers.net OPT
    16	0.020783	53	192.168.2.243	DNS	161	Standard query response 0xe5d5 No such name A dbsrv2.platform SOA a.root-servers.net OPT
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/677197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存管理 | 进程地址空间

文章目录 1.进程地址空间的理解2.将虚拟地址转换为物理地址3.进程地址空间的设计4.进程地址空间的好处 1.进程地址空间的理解 在 前文 分享的fork创建子进程的系统调用中&#xff0c;一个变量接收了两个不同的返回值&#xff01;通过推测也知道&#xff0c;那个地址绝不是真是…

设计模式(创建型模式)工厂模式

目录 一、简介1.1、接口定义1.2、调用 二、简单工厂模式2.1、解析工厂2.2、调用 三、工厂方法模式3.1、解析器接口定义3.2、解析工厂接口定义3.3、解析器工厂的工厂3.4、调用 四、抽象工厂模式4.1、内容解析器4.2、工厂类 三、优点与缺点 一、简介 工厂模式我将它分为三类&…

什么是系统工程(字幕)23

0 00:00:00,000 --> 00:00:01,617 那这里没有出现 1 00:00:01,617 --> 00:00:04,448 我们可以把它从这里再拖上来 2 00:00:04,448 --> 00:00:06,267 但是这个地方不够 3 00:00:06,267 --> 00:00:08,491 我们把这个地方放大一点 4 00:00:08,491 --> 00:00:11…

分享66个相册特效,总有一款适合您

分享66个相册特效&#xff0c;总有一款适合您 66个相册特效下载链接&#xff1a;https://pan.baidu.com/s/1jqctaho4sL_iGSNExhWB6A?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不…

【java苍穹外卖项目实战二】苍穹外卖环境搭建

文章目录 1、前端环境搭建2、后端环境搭建1、项目结构搭建2、Git版本控制3、数据库创建 开发环境搭建主要包含前端环境和后端环境两部分。 前端的页面我们只需要导入资料中的nginx&#xff0c; 前端页面的代码我们只需要能看懂即可。 1、前端环境搭建 前端运行环境的nginx&am…

中科星图GVE(AI案例)——如何利用ai技术进行船只的识别和提取分析(珠江三角洲)

简介 随着人工智能(AI)技术的快速发展,船只的识别和分析变得越来越容易。AI技术可以利用计算机视觉和深度学习算法来自动识别和提取船只的特征,从而进行进一步的分析。下面将介绍如何利用GVE云计算平台的AI技术进行船只的识别和提取分析。 1. 数据收集与准备: 首先,需要…

STM32 FSMC (Flexible static memory controller) 灵活静态内存控制器介绍

文章目录 1. 介绍FSMC2. FSMC特点3. Block示意图4. AHB接口4.1 Supported memories and transactionsGeneral transaction rulesConfiguration registers 5. 外部设备地址映射5.1 NOR/PSRAM地址映射将NOR Flash/PSRAM的支持进行封装 5.2 NAND/PC Card地址映射 1. 介绍FSMC 说到…

使用python-numpy实现一个简单神经网络

目录 前言 导入numpy并初始化数据和激活函数 初始化学习率和模型参数 迭代更新模型参数&#xff08;权重&#xff09; 小彩蛋 前言 这篇文章&#xff0c;小编带大家使用python-numpy实现一个简单的三层神经网络&#xff0c;不使用pytorch等深度学习框架&#xff0c;来理解…

TELNET 远程终端协议

远程终端协议 TELNET TELNET 是一个简单的远程终端协议&#xff0c;也是互联网的正式标准。 用户用 TELNET 就可在其所在地通过 TCP 连接注册&#xff08;即登录&#xff09;到远地的另一个主机上&#xff08;使用主机名或 IP 地址&#xff09;。 TELNET 能将用户的击键传到…

使用cocos2d-console初始化一个项目

先下载好cocos2d-x的源码包 地址 https://www.cocos.com/cocos2dx-download 这里使用的版本是 自己的电脑要先装好python27 用python安装cocos2d-console 看到项目中有个setup.py的一个文件 python setup.py 用上面的命令执行一下。 如果执行正常的话回出现上面的图 然后…

法国实习面试——计算机相关专业词汇

法语 1.Spcialit - 专业 2.Systme - 系统 3.Embarqus - 嵌入式 4.Logicielle - 软件 5.Distribus - 分布式 6.lectronique - 电子 7.nergie lectrique - 电能 8.Automatisation - 自动化 9.Une exprience de stage - 实习经验 10.Automobiles - 汽车 11.tre charg…

每日五道java面试题之java基础篇(二)

第一题. 为什么说 Java 语⾔“编译与解释并存”&#xff1f; ⾼级编程语⾔按照程序的执⾏⽅式分为编译型和解释型两种。 简单来说&#xff0c;编译型语⾔是指编译器针对特定的操作系统将源代码⼀次性翻译成可被该平台执⾏的机器码&#xff1b;解释型语⾔是指解释器对源程序逐…

前端JavaScript篇之call() 和 apply() 的区别?

目录 call() 和 apply() 的区别&#xff1f; call() 和 apply() 的区别&#xff1f; 在JavaScript中&#xff0c;call()和apply()都是用来改变函数中this指向的方法&#xff0c;它们的作用是一样的&#xff0c;只是传参的方式不同。 call()方法和apply()方法的第一个参数都是…

4核8g服务器能支持多少人访问?2024新版测评

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线&#xff1f;通用型-4核8G-180G-2000G&#xff0c;2000GB月流量&#xff0c;系统盘为180GB SSD盘&#xff0c;12M公网带宽&#xff0c;下载速度峰值为1536KB/s&#xff0c;即1.5M/秒&#xff0c;假设网站内页平均大小为60KB…

js-添加网页快捷方式

title: js-添加网页快捷方式 categories: Javascript tags: [p快捷方式] date: 2024-02-04 15:28:25 comments: false mathjax: true toc: true js-添加网页快捷方式 前篇 谷歌上包困难的情况, 只能通过投放落地页来缓解一下痛苦, web2app 那种形式有几个比较大的缺点就是需要…

MongoDB部署策略

内 容 简 介 本文介绍了MongoDB数据库的优点的数据存储模式的安装部署过程。 利用MongoDB在存储海量数据上的优势&#xff0c;部署存储空间大数据。 欢迎批评指正补充 由于编者水平有限&#xff0c;所搜集资料也很有限&#xff0c;制定的规范肯定有考虑不周全、甚至完全错误…

【Android】GridLayout实现等比布局

GridLayout是十年前的老布局了&#xff0c;因为太久没用过&#xff0c;导致细节方面已经记不太清楚了 初衷是想让GridLayout中每行每列的元素大小都相等&#xff0c;结果怎么试都没有效果 原来是要只设置比例&#xff0c;不设置宽高才行&#xff0c;特意记录下 <GridLayou…

K8S容器挂了后一直重启但不成功原因及解决

K8S容器挂了后一直重启但不成功原因及解决 背景&#xff1a; 应用迁移K8S后&#xff0c;因为POD OOM挂了后&#xff0c;会进行重启&#xff0c;但一直在重启&#xff0c;重启多次都不成功&#xff0c;且应用无报错日志。其他K8S上应用挂了后会自动重启成功。 原因&#xff1…

速过计算机二级python——第9讲 详解第 2 套真题

第9讲 详解第 2 套真题 基本编程题【15 分】简单应用题【25 分】综合应用题【20 分】**问题 1**【10 分】:**问题 2【10 分】:**基本编程题【15 分】 考生文件夹下存在一个文件 PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:【5 分】题目: import __________ b…

指针的学习3

目录 字符指针变量 数组指针变量 二维数组传参的本质 函数指针变量 函数指针变量的创建 函数指针变量的使用 两段有趣的代码 typedef关键字 函数指针数组 转移表 回调函数&#xff1a; 字符指针变量 int main() {char arr[10] "abcdef";char* p1 arr;//…