Linux虚拟网络设备---之使用Veth pair连接linux网桥bridge

news2024/11/25 23:30:02

本文目录

  • 1、我们可以用以下命令来创建veth pair: veth0----veth1
  • 2、创建五个命名空间namespaces后,可以用以下命令将veth设备对的一端移入namespaces命名空间,并开启veth
  • 2、将veth设备对的另外一端连接到linux网桥,并将所有namespaces命名空间和Linux bridge网桥连接起来,并开启veth
  • 3、查看五个命名空间内的veth
  • 4、配置五个命名空间内的网络
  • 5、查看ns0和ns1的ip地址和路由
  • 6、验证ns3和ns4之间的网络连通性
  • 7、验证ns3和外部物理主机之间的网络连通性

如下图所示,在上一篇文章Linux虚拟网络设备—之Veth pair详解中,我们介绍了如何通过veth pair连接二个namespaces。
在这里插入图片描述
但在通常的配置中,一般来说一个物理主机上会存在很多个namespaces,如果要用veth pair直接连接的话,每二个需要相互通信的namespaces之间都需要一对veth pair连接,会连接成蜘蛛网。和物理网络中的多台主机连接的解决方案(交换机+网线构成星形连接)一样,我们会用linux bridge + veth pair的方式来构建一个星形连接的网络解决问题多点通信问题(如下图所示)。如下所示,我们会在Linux主机里建立一个网桥br0,并将主机的enp2s0网卡加入这个网桥,做为网桥的一个端口,另外一台Linnux主机通过enp2s0连接到主机,然后ns0通过veth0-vethbr0连接到br0,ns1通过veth1-vethbr1连接到br0。

在这里插入图片描述

在开始连接namespaces之前,我们可参照文章Linux网桥简介、入门与配置在物理主机中创建好Linux bridge网桥。

1、我们可以用以下命令来创建veth pair: veth0----veth1

创建veth0—vethbr0,veth1—vethbr1,veth2—vethbr2,veth3—vethbr3,veth4—vethbr4的五对虚拟以太网设备对。

sudo ip link add veth0 type veth peer name vethbr0
sudo ip link add veth1 type veth peer name vethbr1
sudo ip link add veth2 type veth peer name vethbr2
sudo ip link add veth3 type veth peer name vethbr3
sudo ip link add veth4 type veth peer name vethbr4

2、创建五个命名空间namespaces后,可以用以下命令将veth设备对的一端移入namespaces命名空间,并开启veth

创建ns0、ns1、ns2、ns3、ns4五个namespaces命名空间,并将veth0设置为ns0的网卡,将veth1设置为ns1的网卡,依据此类推。

sudo ip netns add ns0
sudo ip netns add ns1
sudo ip netns add ns2
sudo ip netns add ns3
sudo ip netns add ns4
sudo ip link set veth0 netns ns0
sudo ip link set veth1 netns ns1
sudo ip link set veth2 netns ns2
sudo ip link set veth3 netns ns3
sudo ip link set veth4 netns ns4
sudo ip netns exec ns0 ip link set veth0 up
sudo ip netns exec ns1 ip link set veth1 up
sudo ip netns exec ns2 ip link set veth2 up
sudo ip netns exec ns3 ip link set veth3 up
sudo ip netns exec ns4 ip link set veth4 up

2、将veth设备对的另外一端连接到linux网桥,并将所有namespaces命名空间和Linux bridge网桥连接起来,并开启veth

sudo ip link set vethbr0 up
sudo ip link set vethbr1 up
sudo ip link set vethbr2 up
sudo ip link set vethbr3 up
sudo ip link set vethbr4 up
sudo brctl addif br0 vethbr0
sudo brctl addif br0 vethbr1
sudo brctl addif br0 vethbr2
sudo brctl addif br0 vethbr3
sudo brctl addif br0 vethbr4

3、查看五个命名空间内的veth

使用ip netns exec ns0 + 要执行的命令的形式,在ns0内执行指定的命令,如下是执行ip link show命令,来查看ns0里的网络链路情况。

sudo ip netns exec ns0 ip link show
sudo ip netns exec ns1 ip link show
sudo ip netns exec ns2 ip link show
sudo ip netns exec ns3 ip link show
sudo ip netns exec ns4 ip link show

4、配置五个命名空间内的网络

使用ip netns exec ns0 + 要执行的命令的形式,在ns0内执行指定的命令,如下是执行ip addr add命令,来给ns0里的veth0配置IP地址。同时相应的操作ns1。配置完成后,ns0和ns1下会自动产生默认路由。

sudo ip netns exec ns0 ip addr add 192.168.0.2/24 dev veth0
sudo ip netns exec ns1 ip addr add 192.168.0.3/24 dev veth1
sudo ip netns exec ns2 ip addr add 192.168.0.4/24 dev veth2
sudo ip netns exec ns3 ip addr add 192.168.0.5/24 dev veth3
sudo ip netns exec ns4 ip addr add 192.168.0.6/24 dev veth4

5、查看ns0和ns1的ip地址和路由

我们可以看到ns0里的veth0网卡的ip地址是192.168.0.2, ns1里的veth1网卡的ip地址是192.168.0.3,ns0和ns1二个命名空间里都产生了默认的路由。

sudo ip netns exec ns0 ip addr show
sudo ip netns exec ns1 ip addr show
sudo ip netns exec ns2 ip addr show
sudo ip netns exec ns3 ip addr show
sudo ip netns exec ns4 ip addr show
sudo ip netns exec ns0 ip route show
sudo ip netns exec ns1 ip route show
sudo ip netns exec ns2 ip route show
sudo ip netns exec ns3 ip route show
sudo ip netns exec ns4 ip route show

6、验证ns3和ns4之间的网络连通性

使用ip netns exec ns3 + 要执行的命令的形式,在ns3内执行指定的命令,如下是执行ping命令,来检查ns3和ns4之间ip网络的联通性。

xxx@xx-PC:~$ sudo ip netns exec ns3 ping 192.168.0.6
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.030 ms
64 bytes from 192.168.0.3: icmp_seq=3 ttl=64 time=0.050 ms

7、验证ns3和外部物理主机之间的网络连通性

使用ip netns exec ns3 + 要执行的命令的形式,在ns3内执行指定的命令,如下是执行ping命令,来检查ns3和连接到enps20网卡的外部主机192.168.3.1之间ip网络的联通性。

  • 先添加默认路由
sudo ip netns exec ns3 ip route add default dev veth3
  • 查看ns3的路由配置,可见到发往192.168.3.1的报文会通过veth3接口发送
xxx@xx-PC:~$ sudo ip netns exec ns3 ip route show
default dev veth3 scope link 
192.168.0.0/24 dev veth3 proto kernel scope link src 192.168.0.5 
  • 检查连接性:
    我们在对端通过enp2s0连接到网桥br0的主机上配置将发往192.168.0.5(ns3)的路由后,在用以下命令在ns3里发起ping测试。
xxx@xx-PC:~$ sudo ip netns exec ns3 ping 192.168.3.1
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=2.22 ms
64 bytes from 192.168.3.1: icmp_seq=2 ttl=64 time=2.33 ms
64 bytes from 192.168.3.1: icmp_seq=3 ttl=64 time=2.01 ms

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

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

相关文章

【Redis应用】UV统计(四)

🚗Redis应用学习第四站~ 🚩本文已收录至专栏:Redis技术学习 一.引入 首先我们要搞懂两个概念: UV:全称Unique Visitor,也叫独立访客量,是指通过互联网访问、浏览这个网页的自然人。1天内同一个…

【动态规划】斐波那契数列模型

冻龟算法系列之斐波那契数列模型 文章目录 【动态规划】斐波那契数列模型1. 第N个泰波那契数1.1 题目解析1.2 算法原理1.2.1 状态表示1.2.2 状态转移方程1.2.3 初始化1.2.4 填表顺序1.2.5 返回值 1.3 编写代码1.4 空间优化 2. 三步问题2.1 题目解析2.2 算法原理2.2.1 状态表示2…

解决Centos安装时找不到磁盘:未选择任何磁盘(no diks selected),本地标准磁盘为空

文章目录 问题描述问题原因解决办法 问题描述 笔者最近又买了一台新电脑,并打算在上面安装 Linux 来充当一个新的服务器结点。但很不幸的是,每次笔者略微尝试新事物时,都要踩很多坑。笔者在使用 U 盘刻录 CentOS 8 镜像之后,准备在…

公平锁/非公平锁/可重入锁/自旋锁

在JAVA中我们知道有很多加锁的方式,比如常见的 通过synchronized关键字,还有Lock,还有之前说原子CAS操作时有看到过的死循环方式的自旋锁。 借此来说一下锁的分类: 公平锁: 是指多个线程按照申请的顺序来获取锁,每次获取锁时会…

dp算法篇Day1

"多希望有人来陪我,度过末日啊~" 讲讲我为什么突然想更新这篇栏目。 想想自己也算 "系统" 接触计算机这个学科也有差不多一年了,回想起当初下定决心要全身心投入到这个专业或者说行业中来,现在到了这样的地步&#xff0c…

CSS基础学习--10 margin(外边距)

一、定义: CSS margin(外边距)属性定义元素周围的空间。 二、margin margin 清除周围的(外边框)元素区域。margin 没有背景颜色,是完全透明的。 margin 可以单独改变元素的上,下,左,右边距&a…

今天面了个35k字节跳动出来,真是砂纸擦屁股,给我露了一手...

​2023年春招已经结束,很多小伙伴收获不错,拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。 俗话说得好,他山之石…

AI 绘画(0):导论

文章目录 导论感谢人员Ai绘画前期准备软件环境硬件条件 Ai绘画介绍Ai绘画简单流程介绍Ai绘画软件介绍参数输入介绍 Ai绘画公约 导论 Ai绘画是最近比较热门的绘画方式,以干掉原画师为口号,引起了激烈的讨论。Ai绘画能否取代人工我们先不谈,但…

一个专科生的 Python 转行之路

自学之路 正式开始学编程是在十月底的样子, 那时候在知乎 flask 话题下看到一个问题 「有多少人按萧井陌大神给出的PythonFlask路线找到工作了?」。就觉得自己也可以啊, 就开始辞职自学 Python,。 刚开始的那一个月确实能够做到每天 10 个小时写代码, 学了大概一个…

java设计模式之:外观模式

前言 举个现实生活中例子,泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说想要一杯什么样的茶,是铁观音、碧螺春还是西湖龙井?正因为茶…

互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景

多线程访问共享资源的时候,避免不了资源竞争而导致数据错乱的问题,所以我们通常为了解决这一问题,都会在访问共享资源之前加锁。 最常用的就是互斥锁,当然还有很多种不同的锁,比如自旋锁、读写锁、乐观锁等&#xff0…

数据结构——树和二叉树

文章目录 **一 数的基本概念****1 定义****2 基本术语****3 树的性质** **二 二叉树的概念****1 二叉树的定义和特性****1.1 定义****1.2 特殊的二叉树****1.3 二叉树的性质** **2 二叉树的存储结构****2.1 顺序存储结构****2.2 链式存储结构** **三 二叉树的遍历和线索二叉树*…

Spark SQL数据源的基本操作(更新ing)

文章目录 一、基本操作二、默认数据源(一)默认数据源Parquet(二)案例演示读取Parquet文件1、在Spark Shell中演示练习1、将student.txt文件转换成student.parquet练习2、读取student.parquet文件得到学生数据帧,并显示…

K8S minikube本地安装

一. mac安装K8S 1.brew安装 brew install kubectl 2.查看版本 kubectl version --outputjson { "clientVersion": { "major": "1", "minor": "27", "gitVersion": "v1.27.2", &…

基于深度学习的高精度奶牛检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度奶牛检测识别系统可用于日常生活中或野外来检测与定位奶牛目标,利用深度学习算法可实现图片、视频、摄像头等方式的奶牛目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

locked勒索病毒利用零日漏洞,企业服务器数据瞬间遭受致命加密

目录 引言: 事件概述: .locked勒索病毒加密算法: 数据恢复建议: locked勒索病毒数据恢复案例: 什么叫零日漏洞? 对策建议: 引言: 近日,网络安全界再次爆发了一起…

RK3588平台开发系列讲解(系统篇)开机启动原因

文章目录 一、系统开机启动原因二、开机启动场景沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解平台系统开机启动原因介绍。 一、系统开机启动原因 开机原因记录文件在/proc/sys/kernel/boot_reason,那么开机后可以从这个文件中读取数值来获知本次开机…

锁升级:无锁、偏向锁、轻量级锁、重量级锁

锁升级 JDK 1.6之前,synchronized 还是一个重量级锁,是一个效率比较低下的锁。但是在JDK 1.6后,JVM为了提高锁的获取与释放效率对synchronized 进行了优化,引入了偏向锁和轻量级锁 ,从此以后锁的状态就有了四种&#…

开源SCRM营销平台MarketGo-数据管理

一、概述 企业在私域运营的场景下,系统在运行中会产生一些用户数据和行为数据。 用户数据包含年龄,性别,生日,电话,用户标签,还有用户和员工的关系等信息。行为数据包含在SCRM中创建活动的用户事件&#…

自学黑客(网络安全)?一般人我劝你还是算了吧!

前言 博主本人 18年就读于一所普通的本科学校,21年 6 月在三年经验的时候顺利通过校招实习面试进入大厂,现就职于某大厂安全联合实验室。 我为啥说自学黑客(网络安全),一般人我还是劝你算了吧。因为我就是那个不一般的…