0

0

如何实现Linux网络隔离 namespace创建与使用指南

P粉602998670

P粉602998670

发布时间:2025-07-09 08:20:02

|

982人浏览过

|

来源于php中文网

原创

linux网络隔离通过network namespace为不同进程提供独立网络环境。1. 使用ip netns add创建namespace;2. 用ip link add创建veth对连接不同namespace;3. 配置ip地址和路由实现通信;4. 通过ip netns exec执行命令或nsenter将进程移入指定namespace;5. 应用于容器技术、安全测试等领域;6. 删除时需确保无进程运行且清理相关接口。

如何实现Linux网络隔离 namespace创建与使用指南

Linux网络隔离,简单来说,就是让不同的进程拥有各自独立的网络栈,互不干扰。这在容器技术、安全测试等场景下非常有用。实现的关键在于Linux Namespace,特别是Network Namespace。

如何实现Linux网络隔离 namespace创建与使用指南

解决方案

如何实现Linux网络隔离 namespace创建与使用指南

Network Namespace 提供了一个独立的网络环境,包括网络接口、路由表、防火墙规则等。要实现网络隔离,我们需要创建新的 Network Namespace,并将进程或网络接口移动到这些 Namespace 中。

  1. 创建 Network Namespace:

    如何实现Linux网络隔离 namespace创建与使用指南

    使用 ip netns add 命令创建新的 Network Namespace。例如:

    ip netns add netns1
  2. 查看已创建的 Network Namespace:

    使用 ip netns list 命令可以查看当前系统中已创建的 Network Namespace。

    ip netns list
  3. 在 Network Namespace 中执行命令:

    使用 ip netns exec 命令可以在指定的 Network Namespace 中执行命令。例如,查看 netns1 中的网络接口:

    ip netns exec netns1 ip addr

    你会发现,默认情况下,新的 Network Namespace 中只有一个 lo (loopback) 接口。

  4. 创建虚拟网络接口 (veth pairs):

    为了让不同的 Network Namespace 之间能够通信,我们需要创建虚拟网络接口对 (veth pairs)。veth pairs 就像一根网线,连接两个不同的 Namespace。

    ip link add veth0 type veth peer name veth1 netns netns1

    这条命令创建了两个虚拟网络接口:veth0 在默认的 Network Namespace 中,veth1netns1 中。

  5. 配置网络接口:

    我们需要为这些网络接口配置 IP 地址,并启用它们。

    蛙蛙写作——超级AI智能写作助手
    蛙蛙写作——超级AI智能写作助手

    蛙蛙写作辅助AI写文,帮助获取创意灵感,提供拆书、小说转剧本、视频生成等功能,是一款功能全面的AI智能写作工具。

    下载
    ip addr add 192.168.10.1/24 dev veth0
    ip link set veth0 up
    
    ip netns exec netns1 ip addr add 192.168.10.2/24 dev veth1
    ip netns exec netns1 ip link set veth1 up
    ip netns exec netns1 ip link set lo up # 别忘了启用 loopback 接口
  6. 配置路由:

    为了让两个 Network Namespace 能够互相 ping 通,需要配置路由。

    在默认的 Network Namespace 中:

    ip route add 192.168.10.0/24 dev veth0

    netns1 中:

    ip netns exec netns1 ip route add default via 192.168.10.1
  7. 测试连通性:

    现在,你应该可以从默认的 Network Namespace ping 通 netns1 中的 veth1 接口了。

    ping 192.168.10.2

    反过来,也可以从 netns1 ping 通默认 Network Namespace 中的 veth0 接口:

    ip netns exec netns1 ping 192.168.10.1
  8. 将进程移动到 Network Namespace:

    使用 ip netns exec 只能在 Namespace 中执行单条命令。如果想让一个进程始终运行在某个 Namespace 中,可以使用 nsenter 命令。 但是通常更简单的方式是使用 docker run --net=none 创建一个容器,然后手动配置容器内的网络。

    另一种方法是,你可以先启动进程,然后使用 setns() 系统调用将其移动到指定的 Network Namespace。这需要编写 C 代码或者使用一些工具

Network Namespace 隔离的实际应用场景有哪些?

Network Namespace 隔离最常见的应用场景之一是容器技术,例如 Docker 和 Kubernetes。容器利用 Network Namespace 来创建隔离的网络环境,使得每个容器拥有自己的网络栈,互不干扰。此外,在安全测试和网络仿真中,Network Namespace 也被广泛使用,可以模拟复杂的网络拓扑,进行安全漏洞分析和性能测试。

如何删除 Network Namespace?

使用 ip netns delete 命令可以删除指定的 Network Namespace。例如:

ip netns delete netns1

注意: 在删除 Network Namespace 之前,需要确保该 Namespace 中没有正在运行的进程,并且所有相关的网络接口都已被删除或移动到其他 Namespace 中。否则,可能会导致系统不稳定。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1023

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

66

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

442

2025.12.29

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

392

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

572

2023.08.10

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

269

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

209

2023.12.29

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

249

2023.07.24

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

2

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
微信小程序开发之API篇
微信小程序开发之API篇

共15课时 | 1.2万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 801人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号