首页 > 系统相关 >Linux中使用虚拟路由器进行不同命名空间之间的通信测试

Linux中使用虚拟路由器进行不同命名空间之间的通信测试

时间:2023-10-09 12:31:39浏览次数:41  
标签:exec ip Linux 虚拟 veth1 veth2 router netns 路由器

一个学习研究的案例

ip netns add ns1                   # 创建命名空间 ns1
ip netns add ns2                   # 创建命名空间 ns2


创建虚拟路由器设备
ip netns add router                # 创建虚拟路由器命名空间
ip link add veth1 type veth peer name veth1-router   # 创建 veth1 和 veth1-router 接口
ip link add veth2 type veth peer name veth2-router   # 创建 veth2 和 veth2-router 接口

ip link set veth1 netns ns1        # 将 veth1 接口移动到命名空间 ns1
ip link set veth2 netns ns2        # 将 veth2 接口移动到命名空间 ns2
ip link set veth1-router netns router   # 将 veth1-router 接口移动到虚拟路由器命名空间
ip link set veth2-router netns router   # 将 veth2-router 接口移动到虚拟路由器命名空间

配置命名空间中的 IP 地址
ip netns exec ns1 ip addr add 192.168.1.2/24 dev veth1   # 配置 veth1 的IP地址为 192.168.1.2/24
ip netns exec ns2 ip addr add 192.168.2.2/24 dev veth2   # 配置 veth2 的IP地址为 192.168.2.2/24
ip netns exec ns1 ip link set veth1 up   # 启用 veth1 接口
ip netns exec ns2 ip link set veth2 up   # 启用 veth2 接口

配置虚拟路由器设备和路由规则
ip netns exec router ip link set lo up   # 在虚拟路由器命名空间中启用 loopback 接口
ip netns exec router ip addr add 192.168.1.1/24 dev veth1-router   # 配置 veth1-router 的IP地址为 192.168.1.1/24
ip netns exec router ip addr add 192.168.2.1/24 dev veth2-router   # 配置 veth2-router 的IP地址为 192.168.2.1/24
ip netns exec router ip link set veth1-router up
ip netns exec router ip link set veth2-router up
ip netns exec router sysctl -w net.ipv4.ip_forward=1   # 启用 IP 转发

ip netns exec ns1 ip route add default via 192.168.1.1   # 在命名空间 ns1 中配置默认路由
ip netns exec ns2 ip route add default via 192.168.2.1   # 在命名空间 ns2 中配置默认路由


Linux中使用虚拟路由器进行不同命名空间之间的通信测试_命名空间

ping 自己需要启动lo接口

ip netns exec ns1 ip link set lo up

ping不通有异常去检查下

ip netns exec router ip route   # 检查虚拟路由器的路由表
ip netns exec router ip addr    # 检查虚拟路由器的网络接口配置

ip netns exec ns1 ip addr      # 检查命名空间ns1的网络接口配置
ip netns exec ns1 ip route     # 检查命名空间ns1的路由表
ip netns exec ns2 ip addr      # 检查命名空间ns2的网络接口配置
ip netns exec ns2 ip route     # 检查命名空间ns2的路由表

标签:exec,ip,Linux,虚拟,veth1,veth2,router,netns,路由器
From: https://blog.51cto.com/first01/7772359

相关文章

  • 成功解决WARNING: You do not appear to have an NVIDIA GPU supported by the 430.34
     https://blog.csdn.net/qq_41185868/article/details/97521492?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169682165516800215061872%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169682165516800215061872&......
  • STF61_LINUX_SHELL(上午)
     STF61_LINUX_SHELL(上午)1. 什么是shell?shell就是一个用C语言编写的程序,是用户使用linux的桥梁。shell既是一种命令语言,也是一种程序设计语言2. 什么是shellscript?利用shell的功能所写的一个“程序”,这个程序是使用纯文本文档,将一些shell的语法与命令写在命令。搭......
  • Linux网盘程序——服务器端(完整注释版)
    服务器 #include<cstdio>//C++标准库的头文件 #include<unistd.h>//Unix标准头文件 #include<sys/types.h>//这个头文件定义了各种系统相关的数据类型 #include<sys/socket.h>//这个头文件用于网络编程,包含了与套接字(socket)相关的函数和数据结构的声明 #include<arpa/in......
  • Linux网盘程序——客户端(完整注释版)
    客户端#include<cstdio>//C++标准库的头文件#include<unistd.h>//Unix标准头文件#include<arpa/inet.h>//通常用于处理IP地址和套接字地址的转换#include<string.h>//字符串头文件#include<stdlib.h>//包含了一些标准库函数,用于内存分配、释放以及其他一些通用的实用功能#in......
  • linux如何查看操作系统版本信息
    linux查看版本信息,命令更全面。一、linux下如何查看已安装的centos版本信息:1.Linux查看当前操作系统版本信息 cat/proc/versionLinuxversion2.6.32-696.el6.x86_64([email protected])(gccversion4.4.720120313(RedHat4.4.7-18)(GCC))#1SMPTueMa......
  • 虚拟机备份的wim镜像部署到物理机上出现游戏无法打开的解决办法
    虚拟机备份的wim镜像部署到物理机上时,注册表仍然残留了虚拟机的特征,部分游戏在启动时会检测到虚拟机痕迹,以崩坏·星穹铁道为例,打开游戏提示:“游戏无法运行在虚拟环境中,请更换设备后重试”。解决办法:定位到注册表:计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Cla......
  • Linux Bridge与veth
    创建一对veth(VirtualEthernet)接口,并将它们连接到不同的网络命名空间,然后通过LinuxBridge相连#创建第一个veth对ipnetnsaddns1#创建命名空间ns1ipnetnsexecns1iplinksetloup#在ns1中启用loopback接口iplinkaddveth1typevethpe......
  • Linux------微内核和宏内核以及混合型内核
    宏内核(MonolithicKernel)单一内核,宏内核将大多数操作系统功能集成在一个单一的内核中。性能:由于所有的功能都在内核空间运行,所以宏内核通常具有较高的性能,因为它可以直接访问内核数据结构和函数复杂性:宏内核的复杂性较高,容易导致内核变的庞大和难以维护。Linux......
  • 虚拟环境搭建、luffy后台项目创建,目录调整、封装logger、封装全局异常、封装Response
    虚拟环境搭建#1虚拟环境作用多个项目,自己有自己的环境,装的模块属于自己的#2使用pycharm创建-一般放在项目路径下:venv文件夹-lib文件夹---》site-package--》虚拟环境装的模块,都会放在这里-scripts--》python,pip命令#3本地创建......
  • Linux Centos7 安装Docker环境
    一、Docker介绍Docker是一个开源的容器引擎,基于Go语言开发,同时基于Apache2.0协议开发。对Docker简单的理解就是使用Docker可以把一台服务器隔离成一个个独立的容器,我们可以把这地方描述的容器理解成一个沙盒。在每个容器中运行一个程序,不同的容器之间相互隔离,容器的创建,停止,以及......