DOCKER - 容器抓包

 

 

https://help.aliyun.com/knowledge_detail/40564.html?spm=a2c4e.11153940.blogcont272172.10.b09e28a6AOdITp#Linux

 

http://man7.org/linux/man-pages/man1/nsenter.1.html?spm=a2c4e.11153940.blogcont272172.9.b09e28a6AOdITp

 

[转]待整理

nsenter

nsenter 包含在绝大部分 Linux 发行版预置的 util-linux 工具包中。它可以进入指定进程的关联命名空间。
利用nsenter,我们可以在不依赖 docker 内置 exec 指令的情况下,直接进入容器,进行文件读取、修改、抓包等各种操作。

抓包

使用 nsenter 工具来对任意容器进行抓包(无论容器内是否含有抓包工具):

  1. 获取容器 PID:
    在宿主机上,使用如下指令获取容器的 root pid。即容器内 top 显示 pid 为 1 的进程。容器内其它运行的进程均为其子进程或子子进程:
# container id/name 表示要操作的容器名称或 ID:
docker inspect --format "{{.State.Pid}}" <container id/name>
  1. 使用 nsenter 切换网络命名空间:
    在宿主机上,使用如下指令,将网络命名空间切换为容器的网络命名空间:
# -n 表示切换网络命名空间,-t 指定的 pid 为步骤 1 获取的容器的 root pid: 
nsenter -n -t <container root id>
  1. 查看容器的网卡配置:
    虽然也可以借由 docker exec 查看容器的相关网络配置。比如:

    [root@node3 ~]# docker exec -it <container id/name> ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 245: eth0@if246: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:1f:fe:04 brd ff:ff:ff:ff:ff:ff inet 172.31.254.4/24 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::42:acff:fe1f:fe04/64 scope link valid_lft forever preferred_lft forever
但在通过 nsenter 进入了容器的网络命名空间后,可以直接使用宿主机上的的 ifconfig 等工具,来直接查询容器的网络配置并进行抓包。比如:
[root@node3 ~]# nsenter -n -t 3003
[root@node3 ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 02:42:ac:1f:fe:04 inet addr:172.31.254.4 Bcast:0.0.0.0 Mask:255.255.255.0 inet6 addr: fe80::42:acff:fe1f:fe04/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:132 errors:0 dropped:0 overruns:0 frame:0 TX packets:94 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:14162 (14.1 KB) TX bytes:10902 (10.9 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 
  1. 抓包:
    如上所述,切换到容器的网络命名空间,并获取容器的网卡配置信息后,就可以直接使用宿主机上的 tcpdump 等工具来进行常规抓包分析了:
tcpdump -i eth0 tcp and port 80 -vvv

注意:
如果是指定端口抓包,这里要使用容器的内部端口。比如,容器通过 -p 8180:80 做了端口 bind,那么这里要抓 80 端口,而非 8180 端口。

转载于:https://www.cnblogs.com/wangqiwen-jer/p/10986699.html

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

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

相关文章

高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框

上一篇高仿QQ即时聊天软件开发系列之二登录窗口界面写了一个大概的布局和原理 这一篇详细说下拉框的实现原理 先上最终效果图 一开始其实只是想给下拉框加一个placeholder效果&#xff0c;让下拉框在未选择未输入时显示一个提示字符串。由于Background对ComboBox无效&#xff0…

Nokia7610彩信设置

1. 进入功能表—工具—设置—连接设置 2. 进入接入点&#xff0c;按“选项”—“新增接入点”—“使用默认设置”。 3. 自定义连接名称&#xff0c;可为&#xff1a;中国移动彩信&#xff0c;数据承载方式&#xff1a;GPRS 接入点名称&#xff1a;cmwap 4. 用户名、提示输入…

matlab guidata两个,Matlab

%在控件本身函数中用hObject调用%在别的函数中&#xff0c;需要使用handles调用function varargout TestGUI(varargin)% TESTGUI MATLAB code for TestGUI.fig% TESTGUI, by itself, creates a new TESTGUI or raises the existing% singleton*.%% H TESTGUI …

spring boot jar包替换报错之Unable to open nested entry 'BOOT-INF/lib/cache-api-0.4.jar'.

spring boot用layout ZIP打出来的包能够支持外部classpath&#xff0c;但是当用rar/7zip替换其中的jar后&#xff0c;报下列错误&#xff1a; Unable to open nested entry BOOT-INF/lib/cache-api-0.4.jar. It has been compressed and nested jar files must be stored witho…

hadoop博客 oschina

http://my.oschina.net/Xiao629/blog?catalog449279

php用json交换二维数组,PHP和Javascript的JSON交互(处理一个二维数组)

我不得不承认&#xff1a;我是一个彻彻底底的JS白痴。但根据项目需要&#xff0c;不得不使用JSON&#xff0c;不管怎么说&#xff0c;经过一个晚上的学习&#xff0c;已经略有所成&#xff0c;记录下来。PHP的JSON类库我使用的是Services_JSON&#xff0c;没什么特别的优点&…

RoRoWoBlog 开源博客系统介绍

萝萝窝个人博客开源项目 以Asp.net MVC 2.0 ADO.Net Entity Framework 4.0 Unity 2.0 MvcPager JQuery 等技术框架&#xff0c;开发的个人博客系统。 支持MetaWeblog接口 通过MetaWeblog接口&#xff0c;可以将您个人博客系统中的博文&#xff0c;直接同步到您其它网站的博…

Python基础:模块化来搭项目

简单模块化 import 最好在最顶端sys.path.append("..")表示把当前程序所在位置向上提了一级在python3规范中&#xff0c;__init__.py并不是必须的。文件结构&#xff1a; . ├── utils │ ├── util.py │ └── class_util.py ├── src │ └── sub_…

(原)离开,只为更好的活着

序&#xff09;经过长时间的失眠&#xff0c;辗转反侧&#xff0c;开始默默的写下一篇文章&#xff0c;我不知道以后是怎样的方向&#xff0c;不过明天依旧会天亮。 入职&#xff09;那最初的梦想 有位朋友说&#xff0c;找工作一定不要找初创公司&#xff0c;那样你会疯狂的加…

Flask入门到放弃(四)—— 数据库

转载请在文章开头附上原文链接地址&#xff1a;https://www.cnblogs.com/Sunzz/p/10979970.html 数据库操作 ORM ORM 全拼Object-Relation Mapping&#xff0c;中文意为 对象-关系映射。主要实现模型对象到关系数据库数据的映射 优点 : 只需要面向对象编程, 不需要面向数据库编…

virtualbox安装centos6.5碰到的问题

今天无聊用virtualbox安装centos6.5 , 自己笔记本vm撑不住, 用公司的试试virtualbox先 安装快完成时 没有足够的内存配置kdump”&#xff08;在英文界面下提示的是“insufficient memory to configure kdump”&#xff09; 出现这个提示, 解决办法, 按这篇博客可以解决, 简单点…

matlab som聚类算法,使用SOM对数据进行聚类

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼6.7 2.5 5.8 1.8 37.2 3.6 6.1 2.5 36.5 3.2 5.1 2 36.4 2.7 5.3 1.9 36.8 3 5.5 2.1 35.7 2.5 5 2 35.8 2.8 5.1 …

程序从技术到管理:思维转变是关键

IT公司研发部门的管理人员大多是从公司内部的技术人员中提拔的。在快速发展的公司里&#xff0c;这样的机会更多。然而这种“半路出家”的转型也给我们带来了很多挑战&#xff0c;其中最关键的部分在于思维方式的转变。 从个人成就到团队成就。 无论是做管理还是做技术&#xf…

javascript技巧

1、作用域安全的构造函数 function Person(name,age){ if(this instanceof Person){ this.namename; this.ageage; this.getInfofunction (){}; }else{ new Person(name,age); } } 2、函数柯里化//使用闭包返回一个函数&#xff0c;函数的参数是外部函数传递内部自身函数的参数…

VLC 学习计划---文档阅读

一 videolan-howto-en-html 该文档完全描述了VideoLAN "流"的解决方法. VideoLAN 项目包括两个软件. 1) VLC:以前是视频流接收的客户端,但是现在也可以作为服务端工作.2) VLS:视频服务端,能发送 MPEG-1, MPEG-2 and MPEG-4 files, DVDs, digital satellite channels,…

php 重定向到https,php - 如何从HTTPS重定向到HTTP? - SO中文参考 - www.soinside.com

如果我了解您&#xff0c;以下代码将解决此问题&#xff1a;RewriteEngine OnRewriteCond %{HTTPS} offRewriteCond %{SCRIPT_FILENAME} !\/index\.php [NC]#the above line will exclude https://www.hellomysite.com/index.php# from the following rulesRewriteCond %{SCRIP…

JAVA 面试知识点

主要包括以下几个部分&#xff1a; Java 基础知识点Java 常见集合高并发编程&#xff08;JUC 包&#xff09;JVM 内存管理Java 8 知识点网络协议相关数据库相关MVC 框架相关大数据相关Linux 命令相关面试&#xff0c;是大家从学校走向社会的第一步。 互联网公司的校园招聘&…

rails中weill_paginate的paginate方法中不能使用额外参数的解决办法

我们知道高版本中的rails中的分页功能已经放在will_paginate这个gem中&#xff0c;我们在控制器方法中往往需要调用其paginate方法来实现分页数据集控制&#xff0c;举个例子&#xff1a;正常的情况我们想要每页显示10条记录可以这么写&#xff1a; Item.paginate(page:params[…

企业管理软件开发不能割裂各系统的功能

现今企业管理软件分类比较多&#xff0c;但在一个企业中可能随着自己的发展以及管理的需要&#xff0c;在不同时期会购买不同阶段的管理软件&#xff0c;出于各种考虑可能会买入不同厂商的软件系统&#xff0c;这样就带来各软件间的无缝接口问题&#xff0c;这个问题如不能及时…

sqlserver 导出mysql,sqlserver数据(表)导出到mysql

这里说明我的工具&#xff1a; Navicat Premium1 首先 navicat 连接到 sqlserver 数据库&#xff0c;也就是我要从这里导出那个 170 万条数据的表&#xff0c;然后选中表右键单击&#xff0c;选择导出向导2 然后选择文本文件&#xff0c;下一步3 核对下我们要导出的表&#xff…