Ich habe zwei Internetkanäle und Gateway auf freebsd. Wenn ich mit dem Befehl route change default chan2
den Kanal wechsle , netstat -nr
zeigt der Befehl die geänderte Standardroute an. traceroute
Zeigt aber , dass die Pakete die alte Route chan1 durchlaufen.
Beispiel:
$netstat -nr
Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire
default xxx.xxx.183.54 US 0 8432 em3
$sudo route change default xxx.xxx.144.125
change net default: gateway> xxx.xxx.144.125
$netstat -nr
Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire
default xxx.xxx.144.125 US 2 16450 em3
ABER
$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets
1 xxx.xxx.183.53 (xxx.xxx.183.53) 0.527 ms 0.415 ms 0.483ms
Alles funktioniert, wenn ich die folgende Kombination ausführe:
$ sudo route del default
$ Schlaf 10
$ sudo route Standard hinzufügen xxx.xxx.144.125
uname -a
sollte zeigen)?netstat -rnf inet
?arp -d -a
und / oder die Routing-Tabellen,route flush
bevor Sie die neue Standardroute hinzufügen. Möglicherweise konsultiert der Kernel / Benutzerbereich veraltete Daten.Antworten:
Wenn Sie den
route change
Befehl verwenden, müssen Sie den Netzwerkdienst neu starten, um die Änderungen zu übernehmen, z.quelle
Ist es möglich, dass Sie eine zwischengespeicherte Route zu 8.8.8.8 haben? Die volle Ausgabe von
netstat -nr
würde das zeigen. In diesem Fall müssten Sie es entfernen, bevor Sie Ihre Änderung testen - entweder diese Route speziell oder Sie könntenroute flush
das Standard-Gateway hinzufügen und dann ändern, anstatt es zu ändern (aber denken Sie daran, dass dies den nicht lokalen Verkehr zwischen den beiden Befehlen unterbricht, wenn Sie dies tun Weg).quelle