Я узнаю о сетевых пространствах имен. Я создал два сетевых пространства имен - красное и синее - в моей системе и подключил пару веток для соединения между ними - красный и синий. Я назначаю IP-адреса каждому из этих интерфейсов - 192.168.1.1 и 192.168.1.2. Затем я поднимаю интерфейсы. Однако они не могут пропинговать друг друга, пока я не укажу шлюз по умолчанию. Я думаю, что вам нужно только указать шлюз по умолчанию, если они находятся в разных сетях. Код здесь:
# Create network namespaces
ip netns add red
ip netns add blue
# Create veth pair
ip link add veth-red type veth peer name veth-blue
# Add veth to respective namespaces
ip link set veth-red netns red
ip link set veth-blue netns blue
# Set IP Addresses
ip -n red addr add 192.168.1.1 dev veth-red
ip -n blue addr add 192.168.1.2 dev veth-blue
# Bring up interfaces
ip -n red link set veth-red up
ip -n blue link set veth-blue up
# Bring up Loopback interfaces
ip -n red link set lo up
ip -n blue link set lo up
Я тогда пытаюсь пинговать синий от красного
# Ping test
ip netns exec red ping 192.168.1.2
Но это не с ошибкой:
connect: Network is unreachable
Затем я добавляю шлюз по умолчанию для обоих пространств имен:
# Add default gateway
ip netns exec red ip route add default via 192.168.1.1 dev veth-red
ip netns exec blue ip route add default via 192.168.1.2 dev veth-blue
Пинг тогда работает.
Мой вопрос: почему я должен добавить шлюз по умолчанию, если они находятся в одной сети?