Назад | Перейти на главную страницу

Вторичный IP-адрес в собственном пространстве имен netns

Есть ли способ переместить вторичный IP-адрес в собственное пространство имен, сохранив при этом первичный IP-адрес на исходном устройстве?

Если у меня на устройстве 10.0.0.1 и 10.0.0.2 eth0, но я хочу, чтобы 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.

Данное устройство может быть только в одном пространстве имен, см. https://lwn.net/Articles/580893/ :

Помимо устройства обратной связи, каждое сетевое устройство (физические или виртуальные интерфейсы, мосты и т. Д.) Может присутствовать только в одном сетевом пространстве имен.

Так что ваши eth0 может быть только в одном. Ваша установка с двумя виртуальными интерфейсами и мостом - решение этой проблемы. Я не понимаю, что это меняет для приложений, если IP привязан к br0 вместо того eth0, они не должны видеть разницы. В противном случае вам нужно будет предоставить более подробную информацию. У вас действительно были проблемы, и если да, то какие, или вы просто ожидаете их?

Если вы можете их использовать, взгляните на VLAN: вы можете поместить каждую из них (с одного физического интерфейса) в разные пространства имен. Это подробно описано здесь: https://blog.scottlowe.org/2014/03/21/a-follow-up-on-linux-network-namespaces/

Если вы не можете использовать мост или VLAN, вам необходимо настроить переадресацию IP или NAT.