【无标题】网络命名空间中创建双网卡

这里写自定义目录标题

  • 创建 veth peer 接口对
  • 将 veth1 移动到名为 ns1 的网络命名空间
  • 配置命名空间 veth1 的ip地址
  • 配置命名空间 路由规则
  • 配置命名空间 NAT 规则
  • 获取容器的命名空间

如果网络命名空间和宿主机的 IP 地址不在同一网段,它们之间仍然可以通过配置适当的路由进行通信。
关键是需要确保宿主机和网络命名空间之间有适当的路由规则,并且可以进行地址转换。
你可以使用 NAT(网络地址转换) 或 路由 来实现这种跨网段的通信。

情景假设:
宿主机的物理网卡 eth0 IP 地址 192.168.33.180
宿主机的 IP 地址为 10.0.0.1/24(宿主机的接口 veth0)。
网络命名空间的 IP 地址为 10.0.0.20/24(网络命名空间的接口是 veth1)。

步骤 1:创建 net 命名空间和接口对

ip netns add ns1

创建 veth peer 接口对

ip link add veth0 type veth peer name veth1

将 veth1 移动到名为 ns1 的网络命名空间

ip link set veth1 netns ns1

步骤 2:配置 IP 地址
分别为宿主机和网络命名空间配置 IP 地址(假设宿主机和命名空间的 IP 地址不在同一网段):

配置宿主机接口(veth0):

ip addr add 10.0.0.1/24 dev veth0
ip link set veth0 up

配置网络命名空间接口(veth1):

ip netns exec ns1 ip addr add 10.0.0.15/24 dev veth1
ip netns exec ns1 ip link set veth1 up

步骤 3:配置宿主机 iptables 转发规则
由于宿主机和网络命名空间的 IP 地址不在同一网段,我们需要设置NAT让网络命名空间可上网。
为宿主机启用 IP 转发(允许转发流量):

echo 1 > /proc/sys/net/ipv4/ip_forward

配置宿主机的iptables规则:

s:/ # iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

上述命令的作用是,将所有从 10.0.0.0/24 网段发出的流量转换为宿主机 eth0 接口的外部 IP 地址。

验证配置内容。

s:/ # iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 528 packets, 114K bytes)pkts bytes target     prot opt in     out     source               destination         1054  225K oem_nat_pre  all  --  *      *       0.0.0.0/0            0.0.0.0/0           Chain INPUT (policy ACCEPT 417 packets, 106K bytes)pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 60 packets, 16483 bytes)pkts bytes target     prot opt in     out     source               destination         Chain POSTROUTING (policy ACCEPT 63 packets, 17955 bytes)pkts bytes target     prot opt in     out     source               destination         142 33637 tetherctrl_nat_POSTROUTING  all  --  *      *       0.0.0.0/0            0.0.0.0/0           5   420 MASQUERADE  all  --  *      eth0    10.0.0.0/24          0.0.0.0/0           6   504 MASQUERADE  all  --  *      eth0    10.10.0.0/16         0.0.0.0/0           Chain oem_nat_pre (1 references)pkts bytes target     prot opt in     out     source               destination         Chain tetherctrl_nat_POSTROUTING (1 references)pkts bytes target     prot opt in     out     source               destination         

步骤 4:配置命名空间参数

配置命名空间 veth1 的ip地址

ip netns exec ns1 ip addr add 10.0.0.15/24 dev veth1
ip link set veth1 up

设置ip地址并拉起网卡;

配置命名空间 路由规则

ip netns exec ns1 ip rout add default via 10.0.0.1 

查看路由配置结果

kona:/ # ip netns exec ns1 ip rout ls
default via 10.0.0.1 dev veth1 
default via 10.10.0.1 dev wlan1 metric 100 
10.0.0.0/24 dev veth1 proto kernel scope link src 10.0.0.15 
10.10.0.0/16 dev wlan1 proto kernel scope link src 10.10.0.15 

配置命名空间 NAT 规则

ip netns exec ns1 iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o veth1 -j MASQUERADE

查看 iptablse 规则

kona:/ # ip netns exec ns1 iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 100 packets, 26969 bytes)pkts bytes target     prot opt in     out     source               destination         Chain INPUT (policy ACCEPT 1 packets, 84 bytes)pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 14 packets, 1176 bytes)pkts bytes target     prot opt in     out     source               destination         Chain POSTROUTING (policy ACCEPT 7 packets, 588 bytes)pkts bytes target     prot opt in     out     source               destination         8   672 MASQUERADE  all  --  *      veth1   10.0.0.0/24          0.0.0.0/0           0     0 MASQUERADE  all  --  *      *       10.0.0.0/24          0.0.0.0/0         

步骤 5:验证通信
宿主机与网络命名空间的通信:

在宿主机上使用 ping 测试与网络命名空间的连接:

kona:/ # ping 10.0.0.15                                                                                                                                                             
PING 10.0.0.15 (10.0.0.15) 56(84) bytes of data.
64 bytes from 10.0.0.15: icmp_seq=1 ttl=64 time=0.201 ms
64 bytes from 10.0.0.15: icmp_seq=2 ttl=64 time=0.245 ms
64 bytes from 10.0.0.15: icmp_seq=3 ttl=64 time=0.244 ms

网络命名空间上网通信:

ip netns exec ns1 ping -I 10.0.0.15 www.bing.com
PING china.bing123.com (202.89.233.101) from 10.0.0.15 : 56(84) bytes of data.
64 bytes from 202.89.233.101: icmp_seq=1 ttl=116 time=4.49 ms
64 bytes from 202.89.233.101: icmp_seq=2 ttl=116 time=9.55 ms
64 bytes from 202.89.233.101: icmp_seq=3 ttl=116 time=4.83 ms

步骤 6:把 veth1 创建到容器网络命名空间

获取容器的命名空间

kona:/ # docker inspect con6|grep id"Pid": 13455,
kona:/ # mkdir -p /var/run/netns/13455
kona:/ # ln -s /proc/13455/ns/net /var/run/netns/13455
kona:/ # nsenter -t 13455 -n 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 host valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000link/ipip 0.0.0.0 brd 0.0.0.0
3: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000link/gre 0.0.0.0 brd 0.0.0.0
4: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
5: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN group default qlen 1000link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
6: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000link/ipip 0.0.0.0 brd 0.0.0.0
7: ip6_vti0@NONE: <NOARP> mtu 1364 qdisc noop state DOWN group default qlen 1000link/tunnel6 :: brd ::
8: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000link/sit 0.0.0.0 brd 0.0.0.0
9: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000link/tunnel6 :: brd ::
10: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN group default qlen 1000link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
11: rmnet0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000link/ether f8:02:78:9d:88:44 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 192.168.33.16/24 brd 192.168.33.255 scope global rmnet0valid_lft forever preferred_lft foreverinet6 fe80::91a0:2fd9:8bf:2dc6/64 scope link stable-privacy valid_lft forever preferred_lft forever
12: rmnet1@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000link/ether f8:02:78:9d:88:44 brd ff:ff:ff:ff:ff:ff link-netnsid 0
13: wlan0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether f8:02:78:9d:88:44 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 192.168.33.14/24 brd 192.168.33.255 scope global wlan0valid_lft forever preferred_lft forever

如何把 veth peer 创建到容器的网络命名空间,待时间方便时不这个内容补齐。

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

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

相关文章

汽车安全再进化 - SemiDrive X9HP 与环景影像系统 AVM 的系统整合

当今汽车工业正面临著前所未有的挑战与机遇&#xff0c;随著自动驾驶技术的迅速发展&#xff0c;汽车的安全性与性能需求日益提高。在这样的背景下&#xff0c;汽车 AVM&#xff08;Automotive Visual Monitoring&#xff09;标准应运而生&#xff0c;成为促进汽车智能化和安全…

STL——vector(1)

博客ID&#xff1a;LanFuRenC系列专栏&#xff1a;C语言重点部分 C语言注意点 C基础 Linux 数据结构 C注意点 今日好题 声明等级&#xff1a;黑色->蓝色->红色 欢迎新粉加入&#xff0c;会一直努力提供更优质的编程博客&#xff0c;希望大家三连支持一下啦 目录 尾…

typecho博客主题美化总结篇—php单文件相册管理

看过我前面两期博客的都知道&#xff0c;最近lz在专心建设自己的博客。因为是基于typecho,用的朴素简洁的博客主题&#xff0c;就注定了各个模块都需要自己亲力亲为的去设计&#xff0c;开发。不过这种经由自己手从无到有&#xff0c;从朴素空白到唯美充实的过程确实也很值得期…

每日一练:【动态规划算法】斐波那契数列模型之

1. 第 N 个泰波那契数&#xff08;easy&#xff09; 1. 题目链接&#xff1a;1137. 第 N 个泰波那契数 2. 题目描述 3.题目分析 这题我们要求第n个泰波那契Tn的值&#xff0c;很明显的使用动态规划算法。 4.动态规划算法流程 1. 状态表示&#xff1a; 根据题目的要求及公…

SQL DQL查询操作

1.基本查询 select name,employee.workno,employee.age from employee;select employee.idcard as 身份证号 from employee;select employee.entrydate from employee; select distinct employee.entrydate from employee; 2.条件查询 where select * from employee where i…

Mysql 版本升级-二进制安装方式

8.0.20 -8.0.40 总体参考见下 fw_error_www 前置环境说明 glibc 版本&#xff0c;安装mysql二进制文件时需要匹配&#xff0c;安装的版本只能比系统的低 ldd --version# 查看库的位置 ldd which top | grep "libc.so"逻辑备份 卸载旧版本相关数据&#xff08;注…

【CSS3】Flex弹性布局

文章目录 前言一、基本概念1.容器和项目&#xff1a;2.主轴和交叉轴&#xff1a; 二、容器属性1.flex-direction&#xff1a;决定主轴的方向&#xff0c;即x轴还是y轴2.flex-wrap&#xff1a;定义项目的换行方式3.flex-flow&#xff1a;flex-direction属性和flex-wrap属性的简写…

vscode集成的终端里backspace键无法退格

解决办法&#xff1a; 搜索“backspace”&#xff0c;然后修改backspce对应的项的快捷键为其它按键组合&#xff0c;如下&#xff1a;

网络抓包工具tcpdump 在海思平台上的编译使用

目录 2&#xff1a;下载源码 1&#xff1a;下载 2&#xff1a;编译 2.1&#xff1a;下载 2.2&#xff1a;编译libpcap 2.3&#xff1a;编译tcpdump 3&#xff1a;使用验证 音视频开发中经常用到抓包工具分析数据&#xff0c;这里是海思平台下的tcpdump工具编译使用流程&a…

详细描述一下Elasticsearch索引文档的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch索引文档的过程&#xff1f; Elasticsearch的索引文档过程是其核心功能之一&#xff0c;涉及将数据存储到…

Android:任意层级树形控件(有效果图和Demo示例)

先上效果图&#xff1a; 1.创建treeview文件夹 2.treeview -> adapter -> SimpleTreeAdapter.java import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ListView; i…

Jmeter中的断言(四)

13--XPath断言 功能特点 数据验证&#xff1a;验证 XML 响应数据是否包含或不包含特定的字段或值。支持 XPath 表达式&#xff1a;使用 XPath 表达式定位和验证 XML 数据中的字段。灵活配置&#xff1a;可以设置多个断言条件&#xff0c;满足复杂的测试需求。 配置步骤 添加…

3243.新增道路查询的最短距离

给你一个整数 n 和一个二维整数数组 queries。 有 n 个城市&#xff0c;编号从 0 到 n - 1。初始时&#xff0c;每个城市 i 都有一条单向道路通往城市 i 1&#xff08; 0 < i < n - 1&#xff09;。 queries[i] [ui, vi] 表示新建一条从城市 ui 到城市 vi 的单向道路…

MySQL - 表的约束

文章目录 1、空约束2.默认值3.列描述4.zerofill5.主键6.自增长7.唯一键8.外键 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xff0c;需要有一些额外的约束&#xff0c;更好的保证数据的合法性&#xff0c;从业务逻辑角度保证数据的正确性。比如有一个字段是…

VirtualBox安装虚拟机Windows server 2019系统只显示cmd命令窗口

原因&#xff1a; 没注意选用了核心安装选项&#xff0c;此选项不安装图形界面 解决&#xff1a; 方式一&#xff1a;重装虚拟机&#xff0c;选用有图形界面的版本 方式二&#xff1a;在cmd窗口中安装图形界面 Dism /online /enable-feature /all /featurename:Server-Gui-Mgm…

基于卷积神经网络的皮肤病识别系统(pytorch框架,python源码,GUI界面,前端界面)

更多图像分类、图像识别、目标检测等项目可从主页查看 功能演示&#xff1a; 皮肤病识别系统 vgg16 resnet50 卷积神经网络 GUI界面 前端界面&#xff08;pytorch框架 python源码&#xff09;_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神经网络的皮肤病识…

MixVpr重定位实战----onnx以及Tensorrt适配

0. 简介 对于深度学习而言&#xff0c;通过模型加速来嵌入进C是非常有意义的&#xff0c;因为本身训练出来的pt文件其实效率比较低下&#xff0c;在讲完BEVDET和FastBEV后&#xff0c;这里我们将展开实战&#xff0c;从pt到onnx再到tensorrt&#xff0c;以MixVpr作为例子&…

Java基于微信小程序的校园跑腿平台(V2.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Spring Boot图书馆管理系统:疫情中的管理利器

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了疫情下图书馆管理系统的开发全过程。通过分析疫情下图书馆管理系统管理的不足&#xff0c;创建了一个计算机管理疫情下图书馆管理系统的方案。文章介绍了疫情下图…

【CUDA】Branch Divergence and Unrolling Loop

目录 一、避免分支发散 1.1 并行规约问题 1.2 并行规约中的发散 二、UNrolling Loops 一、避免分支发散 控制流有时依赖于 thread 索引。同一个warp中&#xff0c;一个条件分支可能导致性能很差。通过重新组织数据获取模式可以减少或避免 warp divergence。具体问题查看下…