实例讲解看nsenter带你“上帝视角”看网络

这篇具有很好参考价值的文章主要介绍了实例讲解看nsenter带你“上帝视角”看网络。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要:本文重点关注进入目标进程的“网络ns”视角,即站在「容器中的进程视角」看待容器里面的网络世界,并在那个视角中执行命令。

本文分享自华为云社区《《跟唐老师学习云网络》 - nsenter魔法棒》,作者:tsjsdbd 。

有时候Docker容器中缺少需要的软件。比如 curl,wget,ifconfig,ip,tcpdump 等基础软件包,什么都干不了,很是让人抓狂。

[root@tsjsdbd home]# docker exec -it 8402 /bin/bash
root@8402d89fe04a:/# ifconfig
bash: ifconfig: command not found
root@8402d89fe04a:/# ip
bash: ip: command not found
root@8402d89fe04a:/# tcpdump
bash: tcpdump: command not found
root@8402d89fe04a:/# curl
bash: curl: command not found
root@8402d89fe04a:/# nslookup
bash: nslookup: command not found
root@8402d89fe04a:/# wget
wget: missing URL
Usage: wget [OPTION]... [URL]...

面对这种容器镜像,定位问题就会很困难,因为你进入容器后,想执行命令还得重新安装各种基础软件,非常麻烦。

这个时候,我们要拿起“nsenter”这个根魔法棒,在主机上上面挥舞起来。

ns-enter,顾名思义,就是「进入各种namespace」,即nsenter命令可以进入到指定目标进程的ns视角。

所以nsenter可以站在指定进程的“视角”看世界,本文重点关注进入目标进程的“网络ns”视角,即站在「容器中的进程视角」看待容器里面的网络世界,并在那个视角中执行命令。

首先,我们要找到,要进入的「目标ns」的目标进程ID。即:容器里面的根进程

[root@tsjsdbd ubuntu]# docker inspect 8402d89fe04a
[
    {
        "Id": "8402d89fe04a7e161faf8a01a86c47f8402d4c8d7207b6897d8e6d661d670df4",
        "State": {
            "Status": "running",
            "Pid": 18751,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2023-05-10T03:12:19.221460059Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },

容器里的“老大”是进程18751号。

所以我们直接在Host主机上,跟踪这个进程,并进入它的“视角”,我们就可以看到容器里面的世界了。而且由于我们这个时候,作为控制者,还是处在Host主机上的,因此可以执行Host主机上的各种命令行。

如下:

[root@tsjsdbd ubuntu]# nsenter -t 18751 -n ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02 txqueuelen 0  (Ethernet)
        RX packets 1688355  bytes 194318903 (185.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 138826  bytes 146246172 (139.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
 inet 127.0.0.1  netmask 255.0.0.0
 loop  txqueuelen 0  (Local Loopback)
        RX packets 13939  bytes 13140220 (12.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13939  bytes 13140220 (12.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

其他命令,照搬都可以执行。

比如,容器里面没有nslookup命令,但是只有Host主机上有,咱就可在容器中执行它:

[root@tsjsdbd ubuntu]# nsenter -t 18751 -n nslookup www.baidu.com
Server:       10.129.2.34
Address:   10.129.2.34#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name:  www.a.shifen.com
Address: 14.119.104.254
Name:  www.a.shifen.com
Address: 14.119.104.189

所以原本在容器里面,无法执行的调试行为,就这么可以完成调试。

更直接的,如果不带最后的执行命令参数,可以直接进到“目标视角”里面去,进行交互式执行cli:

[root@tsjsdbd ubuntu]# nsenter -t 18751 -n
#这里就进入交互模式,相当于没有填写cli时,默认执行[当前bash]
[root@tsjsdbd ubuntu]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
4261: eth0@if4262: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
[root@tsjsdbd ubuntu]# curl
curl: try 'curl --help' or 'curl --manual' for more information
[root@tsjsdbd ubuntu]# tcpdump
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
[root@tsjsdbd ubuntu]# exit
#执行exit,可退出“目标视角”

可以看到,所有的网络相关的cli命令行都可以执行。

并且,这些命令,都是站在容器内的“视角”执行的,所以效果与在容器中是一样的(虽然它们本身在Host中发起的)。

类似电影《源代码》《骇客帝国》中那样,用外面世界中的“人”,去控制“里面世界”中的行为。希望可以理解这种上帝视角的逻辑:-)

总结用法:

(1) 找到目标进程PID

docker inspect xxx

(2)直接执行特定的cli命令

nsenter -n -t 822647 ifconfig

(3)进入容器视角,进行交互式cli

nsenter -n -t 822647
exit

 

点击关注,第一时间了解华为云新鲜技术~文章来源地址https://www.toymoban.com/news/detail-525556.html

到了这里,关于实例讲解看nsenter带你“上帝视角”看网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • http协议之digest(摘要)认证,详细讲解并附Java SpringBoot源码

    目录 1.digest认证是什么? 2.digest认证过程 3.digest认证参数详解 4.基于SpringBoot实现digest认证 5.digest认证演示 6.digest认证完整项目 7.参考博客         HTTP通讯采用人类可阅读的文本格式进行数据通讯,其内容非常容易被解读。出于安全考虑,HTTP规范定义了几种认证方式以对访问

    2023年04月18日
    浏览(39)
  • 以unity技术开发视角对android权限的讲解

    目录 前言 Android权限分类 普通权限  普通权限定义 普通权限有哪些 危险权限  危险权限的定义 危险权限有哪些  动态申请权限实例 申请单个权限实例 第一步:在清单文件中声明权限  第二步:在代码中进行动态申请权限 申请多个权限实例 第一步:在清单文件中声明权限

    2024年02月02日
    浏览(34)
  • 【计算机网络】第七,八,九章摘要重点

    1.计算机网络面临的两大威胁? 恶意程序有:计算机病毒,计算机蠕虫,特洛伊木马,逻辑炸弹,后门入侵和流氓软件。 2.安全的计算机网络四个目标: 机密性,端点鉴别,信息的完整性,运行的安全性。 3.两大类密码体制? 对称密码体制与公钥密码体制。 4.鉴别和授权的

    2024年01月17日
    浏览(33)
  • tcpdump & arping & nsenter

    tcpdump 是一款常用的网络抓包工具,它可以捕获网络数据包并进行分析。tcpdump 的参数非常多,下面是一些常用的参数说明: -i:指定要监听的网络接口,如 -i eth0。 any -n:禁用地址解析,显示 IP 地址而非主机名。 -nn:不进行端口号和协议名称的解析,显示IP地址和端口号。

    2023年04月26日
    浏览(44)
  • 软件工程学术顶会——ICSE 2023 议题(网络安全方向)清单与摘要

    按语:IEEE/ACM ICSE全称International Conference on Software Engineering,是软件工程领域公认的旗舰学术会议,中国计算机学会推荐的A类国际学术会议,Core Conference Ranking A*类会议,H5指数74,Impact score 11.55。2023年完整的议题清单参考此处:https://conf.researchr.org/program/icse-2023/program-icse-20

    2024年02月16日
    浏览(60)
  • 用“价值”的视角来看安全:《构建新型网络形态下的网络空间安全体系》

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 网络空间安全体系是建立在先进技术、严密监控和综合策略之上的综合性框架,旨在保护网络免受恶意攻击、数据泄露和网络犯罪的威胁,其核心包括身份认证与访问

    2024年02月08日
    浏览(41)
  • 网工视角看基础网络,原来这么与众不同

    大家好,我是老杨。 前两天去华为生态大会刚回来,颇为感慨。 感慨万物互联的世界越来越大,网络渗透度也越来越极致化。 网络很大,非常大,但在网工眼里,网络复杂又美妙,有着外行人难以理解的魅力 想看我去这次大会到底逛了些啥的,可以看我的第二篇专门写的游

    2024年02月04日
    浏览(52)
  • 用“价值”的视角来看安全:《构建新型网络形态下的网络空间安全体系》【第十期】

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 网络空间安全体系是建立在先进技术、严密监控和综合策略之上的综合性框架,旨在保护网络免受恶意攻击、数据泄露和网络犯罪的威胁,其核心包括身份认证与访问

    2024年02月05日
    浏览(46)
  • Spring核心容器IOC案例讲解,带你理解IOC

    Universe Infinity inc. 什么是IOC容器,先把IOC给忽略到,其实就是个容器。 什么?容器又是个啥玩意?容器是用来放东西的东西啊。 各个领域都喜欢起一些专业术语,显得很高级。给你讲IOC是不是很高级,给你讲Map是不是就明白了。 bean对象最终存储在spring容器中,在spring源码底

    2024年01月24日
    浏览(37)
  • C语言之指针篇【超详细讲解,带你层层深入理解指针】

    目录 一、关于指针 二、指针类型 1、整型指针的访问权限说明: 2、字符指针的访问权限说明: 3、指针的类型决定向前或向后一步走了多大距离 三、野指针相关知识 1、野指针的成因 ①指针未初始化 ②指针的越界访问 ③指针所指向的空间释放了 2、如何规避野指针 ①指针

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包