Невозможно выполнить ping внутреннего сетевого пространства имен

Невозможно выполнить ping внутреннего сетевого пространства имен

Я создал два сетевых пространства имен, а именно red и blue на машине centos следующим образом:

[root@ip-xxx-xxx-xxx-xxx ~]# ip netns add red
[root@ip-xxx-xxx-xxx-xxx ~]# ip netns add blue

[root@ip-xxx-xxx-xxx-xxx ~]# ip netns
blue
red

Я создал виртуальные кабели «veth-red» и «veth-blue», а затем соединил их с помощью следующей команды:

[root@ip-xxx-xxx-xxx-xxx ~]# ip link add veth-red type veth peer name veth-blue

Затем я прикрепил соответствующий интерфейс к каждому пространству имен следующим образом:

[root@ip-xxx-xxx-xxx-xxx ~]# ip link set veth-red netns red
[root@ip-xxx-xxx-xxx-xxx ~]# ip link set veth-blue netns blue

Затем я назначил IP-адреса каждому из этих пространств имен следующим образом:

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n red addr add 192.168.15.1 dev veth-red

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n blue addr add 192.168.15.2 dev veth-blue

Затем я открываю интерфейс с помощью команды настройки IP-соединения для каждого устройства в соответствующих пространствах имен.

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n red link set veth-red up
[root@ip-xxx-xxx-xxx-xxx ~]# ip -n blue link set veth-blue up

Затем, когда я проверяю интерфейсы внутри каждого пространства имен, я получаю «veth-red» в пространстве имен «red» и «veth-blue» в пространстве имен «blue» следующим образом:

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n red link
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
17: veth-red@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 7e:9d:42:79:2d:2f brd ff:ff:ff:ff:ff:ff link-netnsid 1
[root@ip-xxx-xxx-xxx-xxx ~]# ip -n blue link
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
16: veth-blue@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 62:aa:79:55:46:56 brd ff:ff:ff:ff:ff:ff link-netnsid 0

У меня возникли сомнения, когда я пытаюсь отправить пинг с красного на синий (IP-адрес: 192.168.15.2) следующим образом:

[root@ip-xxx-xxx-xxx-xxx ~]# ip netns exec red ping 192.168.15.2
connect: Network is unreachable

Может кто-нибудь объяснить мне, почему я получаю сообщение «Сеть недоступна», хотя я все сделал по инструкции? Пожалуйста, помогите

решение1

Устранить неполадки можно с помощью routeкоманды:

# ip -n red route get 192.168.15.2
RTNETLINK answers: Network is unreachable

Это хорошая подсказка. У вас нет правильной маршрутизации в пространствах имен. В этом случае это потому, что вы пропустили сетевую маску при добавлении IP-адреса:

# ip -o -n red a
7: veth-red    inet 192.168.15.1/32 scope global veth-red\       valid_lft forever preferred_lft forever 

Попробуйте добавить IP-адрес с помощью , /24чтобы таблица маршрутизации знала, что она может достичь других IP-адресов в сети через этот интерфейс.

  1. сначала очистите все IP-адреса
# ip -n red  addr flush dev veth-red
# ip -n blue addr flush dev veth-blue

  1. Добавьте правильный IPс маской сети(использование /24как можно менее запутанного, но даже /30будет работать для вашего примера).
# ip -n red  addr add 192.168.15.1/24 dev veth-red
# ip -n blue addr add 192.168.15.2/24 dev veth-blue

И вы сделали:

# ip netns exec red ping -c2 192.168.15.2
PING 192.168.15.2 (192.168.15.2) 56(84) bytes of data.
64 bytes from 192.168.15.2: icmp_seq=1 ttl=64 time=0.034 ms
64 bytes from 192.168.15.2: icmp_seq=2 ttl=64 time=0.022 ms

--- 192.168.15.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1035ms
rtt min/avg/max/mdev = 0.022/0.028/0.034/0.006 ms```

Связанный контент