使用多种方式实现网络隔离的案例设计

除了 veth pair,Linux 网络虚拟化还支持 macvlanipvlan桥接(Bridge) 等方式实现命名空间网络隔离。以下是三种不同方法的案例设计:


案例 1:使用 macvlan 实现网络隔离

目标
  • 在同一物理网络接口上为不同命名空间创建独立的虚拟接口(macvlan),实现网络隔离和独立 IP 访问。
核心要求
  • 使用 macvlan 替代 veth pair
  • 验证命名空间之间、命名空间与外部网络的隔离性和连通性。
实现步骤
  1. 创建命名空间

    sudo ip netns add ns1
    sudo ip netns add ns2
    
  2. 创建 macvlan 接口

    # 物理接口 eth0 上为 ns1 创建 macvlan
    sudo ip link add macvlan1 link eth0 type macvlan mode bridge
    sudo ip link set macvlan1 netns ns1
    
    # 为 ns2 创建 macvlan
    sudo ip link add macvlan2 link eth0 type macvlan mode bridge
    sudo ip link set macvlan2 netns ns2
    
  3. 配置 IP 并启用接口

    sudo ip netns exec ns1 ip addr add 192.168.1.101/24 dev macvlan1
    sudo ip netns exec ns1 ip link set macvlan1 up
    
    sudo ip netns exec ns2 ip addr add 192.168.1.102/24 dev macvlan2
    sudo ip netns exec ns2 ip link set macvlan2 up
    
  4. 验证连通性

    # ns1 和 ns2 应能互相 ping 通
    sudo ip netns exec ns1 ping -c 3 192.168.1.102
    
    # ns1 应能访问外部网络(假设物理网络允许)
    sudo ip netns exec ns1 ping -c 3 8.8.8.8
    
特点
  • 优点:直接绑定物理接口,性能接近物理设备。
  • 缺点:需要物理网络支持混杂模式(Promiscuous Mode)。

案例 2:使用 ipvlan 实现网络隔离

目标
  • 在同一物理接口上为不同命名空间创建 ipvlan 接口,共享 MAC 地址但独立 IP,验证隔离性。
核心要求
  • 使用 ipvlan 替代 veth pair
  • 验证同一子网下的隔离性和通信能力。
实现步骤
  1. 创建命名空间

    sudo ip netns add ns1
    sudo ip netns add ns2
    
  2. 创建 ipvlan 接口

    # 物理接口 eth0 上为 ns1 创建 ipvlan
    sudo ip link add ipvlan1 link eth0 type ipvlan mode l2
    sudo ip link set ipvlan1 netns ns1
    
    # 为 ns2 创建 ipvlan
    sudo ip link add ipvlan2 link eth0 type ipvlan mode l2
    sudo ip link set ipvlan2 netns ns2
    
  3. 配置 IP 并启用接口

    sudo ip netns exec ns1 ip addr add 192.168.1.101/24 dev ipvlan1
    sudo ip netns exec ns1 ip link set ipvlan1 up
    
    sudo ip netns exec ns2 ip addr add 192.168.1.102/24 dev ipvlan2
    sudo ip netns exec ns2 ip link set ipvlan2 up
    
  4. 验证连通性

    # ns1 和 ns2 应能互相 ping 通
    sudo ip netns exec ns1 ping -c 3 192.168.1.102
    
    # 宿主机无法直接访问命名空间 IP(隔离性)
    ping -c 3 192.168.1.101   # 应失败
    
特点
  • 优点:共享物理接口 MAC 地址,节省 MAC 资源。
  • 缺点:部分旧网络设备可能不支持。

案例 3:使用 Linux Bridge 实现隔离

目标
  • 通过 Linux 桥接器连接多个命名空间,实现内部通信并隔离外部网络。
核心要求
  • 使用 Linux Bridge 连接命名空间。
  • 验证内部通信和外部隔离性。
实现步骤
  1. 创建命名空间和网桥

    sudo ip netns add ns1
    sudo ip netns add ns2
    sudo ip link add br0 type bridge
    sudo ip link set br0 up
    
  2. 创建 veth pair 并连接网桥

    # 为 ns1 创建 veth pair
    sudo ip link add veth1-host type veth peer name veth1-ns
    sudo ip link set veth1-host master br0
    sudo ip link set veth1-host up
    sudo ip link set veth1-ns netns ns1
    
    # 为 ns2 创建 veth pair
    sudo ip link add veth2-host type veth peer name veth2-ns
    sudo ip link set veth2-host master br0
    sudo ip link set veth2-host up
    sudo ip link set veth2-ns netns ns2
    
  3. 配置命名空间 IP

    sudo ip netns exec ns1 ip addr add 10.0.0.1/24 dev veth1-ns
    sudo ip netns exec ns1 ip link set veth1-ns up
    
    sudo ip netns exec ns2 ip addr add 10.0.0.2/24 dev veth2-ns
    sudo ip netns exec ns2 ip link set veth2-ns up
    
  4. 验证连通性

    # ns1 和 ns2 应能互相通信
    sudo ip netns exec ns1 ping -c 3 10.0.0.2
    
    # 命名空间默认无法访问外部网络(未配置 NAT)
    sudo ip netns exec ns1 ping -c 3 8.8.8.8   # 应失败
    
特点
  • 优点:灵活构建复杂拓扑,适合模拟局域网。
  • 缺点:需手动配置 NAT 才能访问外网。

方法对比与总结

方法 适用场景 优点 缺点
macvlan 高性能直连物理网络 低延迟,接近物理设备性能 需要物理网络支持混杂模式
ipvlan 节省 MAC 地址资源 共享 MAC,兼容性强 部分老旧设备不支持
Linux Bridge 构建复杂内部网络 灵活支持多设备互联 需额外配置才能访问外网

验证步骤通用模板

  1. 创建命名空间和虚拟设备
  2. 配置 IP 并启用接口
  3. 测试内部连通性(如 ping
  4. 验证外部隔离性(如宿主机无法访问命名空间 IP)
  5. 扩展验证(如配置 NAT 后测试外网访问)

通过灵活组合这些方法,可满足不同场景下的网络隔离需求。例如:macvlan 适合高性能容器网络,ipvlan 适合大规模微服务隔离,Linux Bridge 适合实验室复杂拓扑模拟。

你可能感兴趣的:(网络技术进阶通途,网络,veth,pair,macvlan,ipvlan,Bridge,网络隔离)