Interner Netzwerk-Namespace kann nicht gepingt werden

Interner Netzwerk-Namespace kann nicht gepingt werden

Ich habe auf der CentOS-Maschine wie folgt zwei Netzwerk-Namespaces erstellt, nämlich Rot und Blau:

[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

Ich habe die virtuellen Kabel ‚veth-red‘ und ‚veth-blue‘ erstellt und diese anschließend mit folgendem Befehl verbunden:

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

Anschließend habe ich jedem Namespace die entsprechende Schnittstelle wie folgt zugeordnet:

[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

Anschließend habe ich jedem dieser Namespaces wie folgt IP-Adressen zugewiesen:

[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

Anschließend rufe ich die Schnittstelle mit dem Befehl zum Einrichten der IP-Verbindung für jedes Gerät innerhalb der jeweiligen Namespaces auf.

[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

Wenn ich dann die Schnittstellen innerhalb jedes Namespaces überprüfe, erhalte ich „veth-red“ im „roten“ Namespace und „veth-blue“ im blauen Namespace wie folgt:

[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

Meine Zweifel kommen auf, wenn ich versuche, einen Ping von Rot nach Blau (IP-Adresse: 192.168.15.2) wie folgt zu senden:

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

Kann mir jemand sagen, warum ich die Meldung „Netzwerk ist nicht erreichbar“ erhalte, obwohl ich alles nach Vorschrift gemacht habe? Bitte helfen Sie

Antwort1

Zur Fehlerbehebung können Sie den folgenden routeBefehl verwenden:

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

Das ist ein guter Hinweis. Du hast kein ordentliches Routing in den Namespaces. In diesem Fall liegt es daran, dass du beim Hinzufügen der IP-Adresse die Netzmaske vergessen hast:

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

Versuchen Sie, die IP-Adresse mit einem hinzuzufügen, /24damit die Routing-Tabelle weiß, dass sie über diese Schnittstelle andere IPs im Netzwerk erreichen kann.

  1. Löschen Sie zuerst alle IP-Adressen
# ip -n red  addr flush dev veth-red
# ip -n blue addr flush dev veth-blue

  1. Fügen Sie die richtige IP hinzumit Netzmaske(Verwenden Sie es /24so, dass es am wenigsten verwirrend ist, aber selbst /30für Ihr Beispiel funktioniert es).
# 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

Und du bist fertig:

# 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```

verwandte Informationen