案例:网络命名空间模拟隔离主机场景

news/2025/3/27 5:08:29/

在这里插入图片描述

场景描述

假设我们需要在同一台物理机上模拟两台独立的主机(Host A 和 Host B),它们分别位于不同的网络命名空间中,并通过虚拟以太网对(veth pair)进行通信。目标是展示网络命名空间的隔离性和跨命名空间的通信能力。


步骤 1:创建网络命名空间

创建两个命名空间 ns1ns2,分别代表 Host A 和 Host B 的网络环境。

sudo ip netns add ns1   # 创建命名空间 ns1(Host A)
sudo ip netns add ns2   # 创建命名空间 ns2(Host B)# 查看所有命名空间
ip netns list

输出

ns1
ns2

步骤 2:创建虚拟以太网对(veth pair)

创建一对虚拟以太网设备 veth-aveth-b,用于连接两个命名空间。

# 创建 veth pair(veth-a 和 veth-b)
sudo ip link add veth-a type veth peer name veth-b# 将设备分配到命名空间
sudo ip link set veth-a netns ns1   # veth-a 分配给 ns1
sudo ip link set veth-b netns ns2   # veth-b 分配给 ns2

步骤 3:配置 IP 地址并启用设备

为每个命名空间中的虚拟设备分配 IP 地址,并启用它们。

# 在 ns1 中配置 veth-a
sudo ip netns exec ns1 ip addr add 10.0.0.1/24 dev veth-a
sudo ip netns exec ns1 ip link set veth-a up
sudo ip netns exec ns1 ip link set lo up   # 启用回环接口# 在 ns2 中配置 veth-b
sudo ip netns exec ns2 ip addr add 10.0.0.2/24 dev veth-b
sudo ip netns exec ns2 ip link set veth-b up
sudo ip netns exec ns2 ip link set lo up# 查看 ns1 的网络配置
sudo ip netns exec ns1 ip addr show veth-a# 查看 ns2 的网络配置
sudo ip netns exec ns2 ip addr show veth-b

输出示例

2: veth-a@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff link-netns ns2inet 10.0.0.1/24 scope global veth-avalid_lft forever preferred_lft forever

步骤 4:测试网络连通性

验证两个命名空间之间的通信能力。

# 从 ns1(Host A)ping ns2(Host B)
sudo ip netns exec ns1 ping -c 3 10.0.0.2# 从 ns2(Host B)ping ns1(Host A)
sudo ip netns exec ns2 ping -c 3 10.0.0.1

成功输出

PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.036 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.041 ms

步骤 5:验证网络隔离性

测试默认命名空间(宿主机)与 ns1/ns2 的隔离性。

# 宿主机无法 ping 通 ns1 和 ns2
ping -c 3 10.0.0.1   # 失败
ping -c 3 10.0.0.2   # 失败# ns1 和 ns2 也无法访问宿主机外部网络(如 8.8.8.8)
sudo ip netns exec ns1 ping -c 3 8.8.8.8   # 失败(除非配置路由/NAT)

步骤 6:清理环境

实验完成后,删除命名空间和虚拟设备。

sudo ip netns delete ns1
sudo ip netns delete ns2
sudo ip link delete veth-a   # 如果设备未自动清理
sudo ip link delete veth-b   # 如果设备未自动清理

应用场景

  1. 容器网络:Docker/Kubernetes 使用网络命名空间隔离容器的网络栈。
  2. 多租户测试:为不同租户分配独立命名空间,避免 IP/端口冲突。
  3. 安全沙箱:限制不可信应用仅能访问指定网络资源。
  4. 网络协议开发:在隔离环境中测试新协议或路由策略。

通过此案例,您已掌握网络命名空间的核心操作,并能够将其应用于实际网络隔离与通信场景。

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

相关文章

带你从入门到精通——自然语言处理(十. BERT)

建议先阅读我之前的博客&#xff0c;掌握一定的自然语言处理前置知识后再阅读本文&#xff0c;链接如下&#xff1a; 带你从入门到精通——自然语言处理&#xff08;一. 文本的基本预处理方法和张量表示&#xff09;-CSDN博客 带你从入门到精通——自然语言处理&#xff08;二…

解锁C++标准库:从理论到实战的进阶指南

目录 一、引言:C++ 标准库的魅力 二、C++ 标准库初相识 2.1 标准库的构成 2.2 导入标准库的方式 三、实战案例解析 3.1 数值计算:库的应用 3.2 容器与算法:库的优势 3.3 文件操作:库的实践 3.4 字符串处理:库的应用 四、使用 C++ 标准库的注意事项 4.1 命名空间…

相控阵雷达的EIRP和G/T

相控阵雷达的EIRP&#xff08;有效等效辐射功率&#xff09;和G/T&#xff08;天线增益与系统噪声温度的比值&#xff09;是两个非常重要的参数&#xff0c;通常用于描述雷达系统的性能。 EIRP&#xff08;Effective Isotropic Radiated Power&#xff09;有效等效辐射功率&…

CICDDevOps概述

1.DevOps概述 DevOps&#xff1a;Development和Operations的组合词&#xff0c;它是一种重视 软件开发人员&#xff08;Dev&#xff09; 和 IT运维技术人员&#xff08;Ops&#xff09; 之间沟通合作的文化、运动或惯例。 在最开始的编程工作中&#xff0c;开发人员就是运维人…

【软件工程】综合应用题

程序流程图转盒图 数据流图 顶层DFD图 用况图 测试&#xff1a;语句覆盖、分支覆盖、条件覆盖 模块结构图 判定表 真题 2024-10 2024-04 2023-10 2023-04 2022-10

Oracle常用分析诊断工具(9)——ADDM

9.3. ADDM 9.3.1. 概念 ADDM,自动数据库诊断监视器(Automatic Database Diagnostic Monitor)的缩写。和AWR和ASH类似,ADDM也可以帮助技术人员分析和定位数据库故障和性能问题,但ADDM和它们又有所不同。AWR和ASH生成后,需要技术人员去分析以得出结论,而ADDM会在报告里直…

sv线程基础

一、多线程fork join/fork join_any/fork join_none的用法差异 fork…join:父进程会阻塞所有子线程结束。 fork…join_any&#xff1a;父进程会阻塞到任意一个线程结束。 fork…join_none&#xff1a;父进程会继续与所有子现成并发执行。 wait fork: 使父线程等待所有子线程执…

集成学习之随机森林

目录 一、集成学习的含义 二、集成学习的代表 三、集成学习的应用 1、分类问题集成。&#xff08;基学习器是分类模型&#xff09; 2、回归问题集成。&#xff08;基学习器是回归模型&#xff09; 3、特征选取集成。 四、Bagging之随机森林 1、随机森林是有多个决策树&a…