Linux

其自己的 netns 命名空間中的輔助 IP

  • January 20, 2021

有沒有辦法可以將輔助 IP 移動到其自己的命名空間中,同時將主 IP 保留在原始設備上?

如果我在設備eth0上有 10.0.0.1 和 10.0.0.2 ,但我希望 10.0.0.2 在它自己的 netnstest中,我最接近的方法是添加一個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上。

Linuxmacvlan設備在這裡是一個可行的解決方案。

它實例化了一個真正的邏輯設備第 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設備將無法工作。相反,使用介面類型eth0ipvlan mode 12

引用自:https://serverfault.com/questions/900253