一台主机中网络命名空间的不同主机之间的网络连接问题

一台主机中网络命名空间的不同主机之间的网络连接问题

我使用具有 NAT 网络配置的 VMWare Player 创建了两个 Ubuntu 12.04 VM。我可以互相 ping 通它们。之后,我在其中之一创建了一个网络命名空间并添加了一个虚拟接口。从网络命名空间,我可以通过在命名空间中添加路由来通过驻留在默认命名空间中的虚拟接口的另一端访问虚拟机的物理接口。我已启用ip_forward虚拟机,这会导致从网络命名空间访问互联网。但是,我无法从命名空间 ping 专用网络中的其他虚拟机。谁能解释一下这背后的原因。我附上我的配置:

  1. 创建网络命名空间并在虚拟接口之间进行通信:

    sudo ip netns add vnet  
    ip netns list
    sudo ip link add veth0 type veth peer name veth1
    ip link
    sudo ip link set veth1 netns vnet
    sudo ip netns exec vnet ip link list
    sudo ip netns exec vnet ip link set dev lo up
    ip netns exec vnet ping -c5 127.0.0.1
    sudo ip addr add 10.0.0.1/24 dev veth0
    sudo ip link set dev veth0 up
    ip netns exec vnet ip addr add 10.0.0.2/24 dev veth1
    ip netns exec vnet ip link set dev veth1 up
    ip netns exec vnet ping -c5 10.0.0.1
    
  2. 虚拟接口与物理接口的通信:

    sudo ip netns exec vnet route add default gw 10.0.0.1 veth1
    
  3. 与外界的虚拟接口通信:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
    echo 1 > /proc/sys/net/ipv4/conf/veth0/proxy_arp     
    

相关内容