Es gibt ein Gerät, nennen wir es 1, im Netzwerk A
Gerät 1 hat zwei Schnittstellen, eth5 und eth7
Es gibt ein Gerät 2 im Netzwerk A
Ping von eth5 zu Gerät 2 funktioniert
Ping von eth7 zu Gerät 2 funktioniert
Gerät 2 kann eth5 und eth7 anpingen
ABER das Pingen von eth5 zu eth7 und umgekehrt funktioniert nicht.
[root@ipfrmk /]# ping -I eth5 192.168.10.42
PING 192.168.10.42 (192.168.10.42) from 192.168.10.43 eth5: 56(84) bytes of data.
^C
--- 192.168.10.42 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2006ms
Und
[root@ipfrmk /]# ping -I eth7 192.168.10.43
PING 192.168.10.43 (192.168.10.43) from 192.168.10.42 eth7: 56(84) bytes of data.
^C
--- 192.168.10.43 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms
Warum kann ich keinen Ping zwischen den beiden Schnittstellen durchführen, die sich beide auf Gerät 1 befinden und beide mit Netzwerk A verbunden sind?
Ich kann andere Geräte im Netzwerk A anpingen, aber nicht die jeweiligen Schnittstellen.
Vielleicht eine statische Route für jede Schnittstelle?
Ich habe den folgenden Befehl ohne Erfolg ausprobiert.
ip route add 192.168.0.0/16 via 192.168.10.42 dev eth5
Ausgabe
[root@ipfrmk /]# ping -I eth5 192.168.10.42
PING 192.168.10.42 (192.168.10.42) from 192.168.10.43 eth5: 56(84) bytes of data.
From 192.168.10.43 icmp_seq=1 Destination Host Unreachable
From 192.168.10.43 icmp_seq=2 Destination Host Unreachable
From 192.168.10.43 icmp_seq=3 Destination Host Unreachable
^C
--- 192.168.10.42 ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5002ms
pipe 3
Es muss doch irgendetwas geben, das ich übersehe?
[root@ipfrmk /]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth5
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth7
192.168.0.0 192.168.10.42 255.255.0.0 UG 0 0 0 eth5
Antwort1
In dieser Situation empfehle ich, die IP-Adresse zu verwenden, die an die Schnittstelle gebunden ist, von der Sie senden möchten, und nicht die Schnittstelle selbst (für Ihre Konfiguration).
ping -I <ens5 IP address> <ens7 IP address>
Der Grund, warum der Ping nicht wie erwartet funktioniert, liegt darin, dass die Ziel-IP-Adresse des resultierenden IPv4-Datagramms die der an den Ping übergebenen Schnittstelle ist und nicht die angegebene Ziel-IP-Adresse.
Meine Konfiguration:
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:e0:cc:50 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.10/24 brd 192.168.122.255 scope global ens5
3: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:cd:c9:91 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.20/24 brd 192.168.122.255 scope global ens6
Das hier scheint zu funktionieren, tut es aber nicht:
root@debian:/home/morgan# ping -c 1 -I ens5 192.168.122.20
PING 192.168.122.20 (192.168.122.20) from 192.168.122.10 ens5: 56(84) bytes of data.
--- 192.168.122.20 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 1ms
Die TCPdump-Ausgabe zeigt, warum es nicht funktioniert …
Die Ziel-IP-Adresse ist die der ens5-Schnittstelle und nicht die erwartete Ziel-IP (192.168.122.20), die an Ping übergeben wird.
18:36:17.982917 IP 192.168.122.10 > 192.168.122.10: ICMP host 192.168.122.20 unreachable, length 92
Wenn ich die IP-Adresse von ens5 verwende, funktioniert der Ping:
root@debian:/home/morgan# ping -c 1 -I 192.168.122.10 192.168.122.20
PING 192.168.122.20 (192.168.122.20) from 192.168.122.10 : 56(84) bytes of data.
64 bytes from 192.168.122.20: icmp_seq=1 ttl=64 time=5.17 ms
--- 192.168.122.20 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 5.165/5.165/5.165/0.000 ms
Antwort2
Ich könnte mich irren ... Aber ist das eine Haarnadelkurve? Es kann sein, dass es auf diese Weise nicht zu sich selbst zurückkehren kann. Manchmal kann es nicht in derselben Schnittstelle auf diese Weise hinaus und zurück gehen.