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

Связь между пространствами имен через мост Linux

Итак, у меня следующий сценарий: у меня есть сервер с 1 физическим сетевым интерфейсом. На этом сервере я хочу создать 2 сетевых пространства имен (NS_NASty и NS_MongoDB). Оба пространства имен должны иметь доступ к Интернету через физический интерфейс (ens192) и NS_NASty, а также пространство имен по умолчанию, должны иметь доступ к NS_MongoDB.

Конфигурация интерфейса:

дефолт

ens192: 172.20.7.57/22
veth0: 192.168.1.1/24
veth2: 192.168.2.1/24

NS_MongoDB

veth1: 192.168.1.2/24

NS_NASty

veth3: 192.168.2.2/24

Вот текущая конфигурация, которую я использую:

# create namespaces
ip netns add NS_NASty
ip netns add NS_MongoDB

# create virtual adapter pairs
ip link add veth0 type veth peer name veth1
ip link add veth2 type veth peer name veth3

# assign veth peer to namespace
ip link set veth3 netns NS_NASty
ip link set veth1 netns NS_MongoDB

# activate veth peers
ip netns exec NS_NASty ip link set veth3 up
ip netns exec NS_MongoDB ip link set veth1 up

# assign IPs to veth peers
ip netns exec NS_NASty ip addr add 192.168.2.2/24 dev veth3
ip netns exec NS_MongoDB ip addr add 192.168.1.2/24 dev veth1

# add veth IPs in default namespace
ip addr add 192.168.1.1/24 dev veth0
ip addr add 192.168.2.1/24 dev veth2

# create ethernet bridge
brctl addbr vbr0
brctl stp vbr0 off
brctl addif vbr0 veth0
brctl addif vbr0 veth2

# activate veth in default namespace
ip link set dev vbr0 up
ip link set veth0 up
ip link set veth2 up

# add default routes
ip netns exec NS_NASty ip route add default via 192.168.2.1
ip netns exec NS_MongoDB ip route add default via 192.168.1.1

Я не могу ping любые адреса, кроме соответствующего шлюза пространства имен.

Я думаю, вы используете IP-адреса 192.168.2.1 и 192.168.1.1 с маской подсети 24. Чтобы сетевые пространства могли взаимодействовать друг с другом, они должны находиться в одном сетевом блоке. SO изменение маски подсети на 16 или изменение IP-адресов на 192.168.2.1 и 192.168.2.2 может сработать.