Linux
其自己的 netns 命名空間中的輔助 IP
有沒有辦法可以將輔助 IP 移動到其自己的命名空間中,同時將主 IP 保留在原始設備上?
如果我在設備eth0上有 10.0.0.1 和 10.0.0.2 ,但我希望 10.0.0.2 在它自己的 netns
test
中,我最接近的方法是添加一個veth對和一個網橋,並移動eth0主 IP到橋上:netns: test netns: default ============== =============================== vethB:10.0.0.2 <-> vethA <-> br0:10.0.0.1 <-> eth0
不幸的是,將 10.0.0.1 IP 移出eth0會混淆盒子上的一些不透明的遺留應用程序,所以我更願意將它保留在eth0上。
Linux
macvlan
設備在這裡是一個可行的解決方案。它實例化了一個真正的邏輯設備第 2 層子介面,這與
eth0:1
管理輔助 IP 的管理虛構不同,然後我可以將其移動到網路名稱空間和地址中。例子:# netns: test netns: default # ============== ================ # test0:10.0.0.2 <-> eth0:10.0.0.1 # Create "test" network namespace ip netns add test ip netns exec test ip link set lo up # Create subinterface and move to "test" ip link add link eth0 name test0 type macvlan ip link set test0 netns test # Configure the subinterface ip netns exec test ip addr add 10.0.0.2/24 brd + dev test0
這保留了“主要”IP
eth0
,從而使現有系統或多或少不知道我隱藏的“次要”IP。wifi介面附錄
使用者pts指出,如果是wifi介面,
macvlan
設備將無法工作。相反,使用介面類型。eth0
ipvlan mode 12