1. 程式人生 > >linux的網咯名稱空間

linux的網咯名稱空間

建立兩個網路名稱空間 test1和test2

sudo ip netns add test1 sudo ip netns add test2

檢視當前的網路名稱空間 會顯示出創建出來的test1 test2

sudo ip netns list

檢視當前名稱空間的資訊 可以看到當前test1的lo是down的

sudo ip netns exec test1 ip a

開啟lo口

sudo ip netns exec test1 ip link set dev lo 

sudo ip netns exec test2 ip link set dev lo 

然後介面狀態會變成UNKNOWN 這是因為單個介面是沒辦法up起來的必須成對出現

接下來我們建立一條ip link將兩個名稱空間連結起來

ip link add veth-test1 type veth peer name veth-test2

ip link 檢視 會多出兩個 一個veth-test1 一個 veth-test2

接下來將ip link的兩端新增到test1和test2中   

ip link set veth-test1 netns test1 ip link set veth-test2 netns test2

 給veth-test1 veth-test2 兩個介面設定ip

sudo ip netns exec test1 ip address aad 192.168.1.1/24 dev veth-test1 sudo ip netns exec test2 ip address aad 192.168.1.2/24 dev veth-test2

開啟這兩個介面

ip netns exec test1 ip link set dev veth-test1 up ip netns exec test1 ip link set dev veth-test1 up

接下來驗證一下兩個netns的連通性

sudo ip netns exec test1 ping 192.168.1.2

PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.705 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.085 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.088 ms