Ich habe eine Maschine mit einer Schnittstelle, die zwei IP-Adressen hat:
inet 192.168.1.15/32 scope global eth0
inet 10.10.118.45/24 brd 10.10.118.255 scope global eth0:hosts4
Wenn ich zum Beispiel ausführe ip -s route get 8.8.8.8
, hat das Ausgangspaket dementsprechend eine Quell-IP-Adresse 10.10.118.45
:
8.8.8.8 via 10.10.118.254 dev eth0 src 10.10.118.45
cache users 1 used 1
Wenn ich zum Beispiel ping
oder SSH
zu 8.8.8.8
, dann ist Quell-IP 192.168.1.15
:
15:19:38.092508 IP 192.168.1.15 > 8.8.8.8: ICMP echo request, id 9135, seq 2, length 64
15:19:38.097962 IP 8.8.8.8 > 192.168.1.15: ICMP echo reply, id 9135, seq 2, length 64
Was ist der Grund, warum in diesem Fall ip route get
nicht die richtige Quell-IP-Adresse angezeigt wird?
ip rule list
? Und von was wird für jede aufgelistete Tabelle ausgegebenip route list table $table
?ip route show to match 8.8.8.8
sagt das aus?ip route get
druckt das Ergebnis des Routing-Auswahlalgorithmus und die Quelladresse aus demsrc
Feld des entsprechenden Routing-Tabelleneintrags. Eine Anwendung kann jedoch eine Adresse an den Socket binden, der dann stattdessen als Quelladresse in den IP-Paketen verwendet wird. Siehe Auswahl der Quelladresse . Vielleicht macht Ihr Ping-Programm das? (Es gibt mehrere Ping-Programme; aus welchem Paket gehört Ihnen?)Antworten:
Ein Computer kann nur ein Standard-Gateway haben. Mit ping -i können Sie auswählen, von welcher Schnittstelle ein Paket stammen soll. Aus den von Ihnen angegebenen Informationen geht hervor, dass Ihre Standard-IP 192.168.1.15 lautet. 10.10.118.45 scheint ein Alias zu sein. Überprüfen Sie Ihre
/etc/networks
,/etc/sysconfig/network
sowie die Schnittstellenkonfiguration im Inneren/etc/network-scripts/ifcfg-*
Hier ist eine Beispielausgabe einer ähnlichen Konfiguration.
quelle
{}
um besser lesbaren Text zu erhalten.Vielleicht ist es möglich, dass Ihre
10.10.118.45/24
DHCP-Adresse ist? Sie können versuchen, die statische Adresse zu entfernenquelle