Linux 复现Docker NAT网络

news2024/12/23 13:36:09

Linux 复现Docker NAT网络

docker 网络的构成分为宿主机docker0网桥和为容器创建的veth 对构成。这个默认网络命名空间就是我们登陆后日常使用的命名空间
请添加图片描述
使用ifconfig命令查看到的就是默认网络命名空间,docker0就是网桥,容器会把docker0当成路由,将流量发往docker0这个虚拟网桥上,然后docker0会走本地路由表发到你路由表上下一跳地址,如果当前层已经是物理机了就是路由器,如果你用的是虚拟机则就是你虚拟机的虚拟网桥,然后就是套娃
请添加图片描述
启动一个容器,我们再来看宿主机网络设备。从下图可以看到当我们启动redis容器后,本机网络设备新增了一个虚拟以太网设备veth9733c,容器redis02 ip为172.17.0.2,这个没有在本地网络设备中显示出来(在下文会讲这个地址在哪里出现),容器redis02进程id
请添加图片描述

命名空间

然后就是耳熟能详的词了——命名空间,docker 是利用linux命名空间实现的资源隔离。而容器redis02的ip地址也是存在于命名空间,linux veth类型网络设备总是成对出现,而这里只有一个veth设备是因为另一个peer在redis02的命名空间中.进入redis02网络命名空间的方法也很简单,就是利用redis02的进程id(pid). 使用nsenter -n --target 1281进入。到这里docker 的nat网络就已经实现了,网关路由docker0, nat中的网络设备docker以bridge网络模式创建的容器
请添加图片描述

复现docker nat网络

用到的命令行工具:ip,ifconfig

  1. 创建网桥:

    ip link add dev br0 type bridge
    ifconfig br0 172.20.0.1 netmask 255.255.255.0 broadcast 172.20.255.255
    ip link set br0 up
  2. 创建网络命名空间

    初始化netns
    ip netns add one
    将系统默认命名空间绑定到ip netns以供ip 命令操作
    ln -s /proc/1/ns/net /var/run/netns/default
  3. 进入一个新的网络命名空间

    unshare -n -f /usr/bin/zsh
  4. 在新网络命名空间中创建veth设备

    创建一个veth 设备对,eth0放在当前命名空间, veth01放系统默认网络命名空间
    ip link add dev eth0 type veth peer name veth01 netns default
    将veth01连接到虚拟网桥br0,后面这个设备就会把br0当路由
    ip netns exec default ip link set veth01 master br0
    ifconfig eth0 172.20.0.2
    ip link set eth0 up
    ip netns exec default ip link set veth01 up

效果

命令空间内
请添加图片描述
命名空间外
请添加图片描述
在命名空间中使用redis-server /etc/redis/redis.conf --daemonize no跑一个redis看看效果,可以看到宿主机6379是没有被监听的,但是通过命名空间创建的虚拟以太网设备的ip地址可以进去
在这里插入图片描述

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

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

相关文章

linux nethogs网络监控程序(端口监控、流量监控、上传流量、下载流量、进程监控进程网络)

文章目录 Nethogs 网络监控程序详解1. 引言2. Nethogs 的安装与运行2.1 安装 Nethogs- **Debian/Ubuntu**- **Fedora**- **Arch Linux** 2.2 运行 Nethogs 3. Nethogs 的使用详解3.1 基本界面- **PID**:进程的 ID。- **用户**:运行该进程的用户。- **程序…

【Linux网络】数据链路层【上】{初识数据链路层/以太网/路由表/MAC地址表/ARP表/NAT表}

文章目录 1.初识数据链路层2.认识以太网2.0前导知识以太网帧和MAC帧CMSA/CD以太网的最小帧长限制是64字节IP层和MAC层 2.1以太网帧格式 3.预备知识计算机网络通信以太网和wifi路由表/MAC地址表/ARP表/NAT表/ACL表 用于同一种数据链路节点的两个设备之间进行信息传递。 1.初识数…

美团一面,你碰到过CPU 100%的情况吗?你是怎么处理的?

本文主要分为三部分 分析一下CPU 100%的常见原因 CPU 100%如何排查 回答这个问题的一个参考答案 CPU被打满的常见原因 1. 死循环 在实际工作中,可能每个开发都写过死循环的代码。 死循环有两种: 在 while、for、forEach 循环中的死循环。 无限递…

期末成绩单怎么单独发给家长,这个小工具超简单!

随着期末考试的落幕,老师们再次迎来了成绩处理的高峰期。传统的成绩单分发方式不仅耗时,还容易出错。但如今,有了易查分小程序,这一过程变得简便而高效。 易查分小程序,一个专为教师和家长设计的便捷工具,让…

[ruby on rails]部署时候产生ActiveRecord::PreparedStatementCacheExpired错误的原因及解决方法

一、问题: 有时在 Postgres 上部署 Rails 应用程序时,可能会看到 ActiveRecord::PreparedStatementCacheExpired 错误。仅当在部署中运行迁移时才会发生这种情况。发生这种情况是因为 Rails 利用 Postgres 的缓存准备语句(PreparedStatementCache)功能来…

【Apache Doris】周FAQ集锦:第 10 期

【Apache Doris】周FAQ集锦:第 10 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户…

算法力扣刷题记录 四十五【110.平衡二叉树】

前言 二叉树篇继续 记录 四十五【110.平衡二叉树】 一、题目阅读 给定一个二叉树,判断它是否是 平衡二叉树。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:true示例 2: 输入:root [1,2,2,3,3…

【鸿蒙学习笔记】尺寸设置・width・height・size・margin・padding・

官方文档:尺寸设置 目录标题 width:设置组件自身的宽度height:设置组件自身的高度size:设置高宽尺寸margin:设置组件的外边距padding:设置组件的内边距 width:设置组件自身的宽度 参数为Length…

【零基础】学JS之APIS第三天

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

10分钟快速了解神经网络(Neural Networks)

神经网络是深度学习算法的基本构建模块。神经网络是一种机器学习算法,旨在模拟人脑的行为。它由相互连接的节点组成,也称为人工神经元,这些节点组织成层次结构。 Source: victorzhou.com 神经网络与机器学习有何不同? 神经网络是…

电脑资料丢失不用慌,5招教你恢复数据

在数字化时代,电脑资料的安全与完整对我们而言至关重要。然而,生活中总有一些小插曲,如意外删除、系统故障或病毒攻击等,导致电脑上的重要资料消失得无影无踪。面对这种情况,我们往往感到焦虑和无助。今天,…

LabVIEW心电信号自动测试系统

开发了一种基于LabVIEW的心电信号自动测试系统,通过LabVIEW开发的上位机软件,实现对心电信号的实时采集、分析和自动化测试。系统包括心电信号采集模块、信号处理模块和自动化测试模块,能够高效、准确地完成心电信号的测量与分析。 硬件系统…

在 SwiftUI 中的作用域动画

文章目录 前言简单示例动画视图修饰符使用多个可动画属性使用 ViewBuilder总结 前言 从一开始,动画就是 SwiftUI 最强大的功能之一。你可以在 SwiftUI 中快速构建流畅的动画。唯一的缺点是每当我们需要运行多步动画或将动画范围限定到视图层次结构的特定部分时&…

网络规划设计师教程(第二版) pdf

网络规划设计师教程在网上找了很多都是第一版,没有第二版。 所以去淘宝买了第二版的pdf,与其自己独享不如共享出来,让大家也能看到。 而且这个pdf我已经用WPS扫描件识别过了,可以直接CtrlF搜索关键词,方便查阅。 链接…

股指期货存在的风险有哪些?

股指期货因其标的物的特殊性,其面临的风险类型十分复杂,主要面临的一般风险和特有风险如下: 一般风险 从风险是否可控的角度,可以划分为不可控风险和可控风险;从交易环节可分为代理风险、流动性风险、强制平仓风险&…

linux 安装redis 遇到问题解决方案

1.当下载了redis包时(version:6.0.6) 进入解压后的redis目录(这里采用tar包安装) 当执行make命令时 如果遇到如下情况: 查看当前服务起的gcc 版本:因为redis需要c编译器编译 gcc -v centos 7 …

使用亮数据代理IP+Python爬虫批量爬取招聘信息训练面试类AI智能体

本文目录 一、引言二、开发准备三、代码开发四、使用亮数据进行高效爬取4.1 为什么需要亮数据4.2 如何使用亮数据 五、使用数据训练AI智能体六、 总结 一、引言 在当今AI迅速发展的时代,招聘市场正经历着前所未有的变革。传统的招聘方式已难以满足双方的需求。AI智…

Transformer模型:Postion Embedding实现

前言 这是对上一篇WordEmbedding的续篇PositionEmbedding。 视频链接:19、Transformer模型Encoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili 上一篇链接:Transformer模型:WordEmbedding实现-CSDN博客 正文 先回顾一下原论文中对Posit…

如何巧妙运用百川工作手机微信行为监控 防范员工离职带走客户

在竞争日益激烈的商业环境中,企业最宝贵的资产莫过于忠诚的客户群体与高效协作的团队。然而,当团队中不可避免地出现人员流动时,如何有效防止客户资源流失,成为众多企业管理者面临的严峻挑战。百川工作手机,作为一款专…

基于Redisson 实现 Redis 分布式锁

代码示例: GetMapping("/testJmeter")public void testJmeter() {synchronized (this){int stock Integer.parseInt(stringRedisTemplate.opsForValue().get("stock"))if (stock > 0) {int realStock stock - 1;stringRedisTemplate.opsFo…