Mam dwa kanały internetowe i Gateway na Freebsd. Kiedy przełączam kanał za pomocą polecenia route change default chan2
, polecenie netstat -nr
pokazuje zmienioną domyślną trasę. Ale traceroute
pokazuje, że pakiety przechodzą przez starą trasę chan1.
Przykład:
$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
ALE
$ 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
Wszystko działa, jeśli uruchomię następującą kombinację:
$ sudo route del default
$ spać 10
$ sudo route dodaj domyślnie xxx.xxx.144.125
uname -a
powinien zostać wyświetlony)?netstat -rnf inet
?arp -d -a
i / lub tabele routinguroute flush
przed dodaniem nowej trasy domyślnej. Być może przestrzeń jądra / użytkownika sprawdza nieaktualne dane.Odpowiedzi:
Jeśli używasz
route change
polecenia, musisz ponownie uruchomić usługę sieciową, aby zastosować zmiany, np .:źródło
Czy to możliwe, że masz buforowaną trasę do wersji 8.8.8.8? Pełna wydajność
netstat -nr
pokaże to. Jeśli tak, musisz go usunąć przed przetestowaniem zmiany - albo konkretnie dla tej trasy, albo możesz,route flush
a następnie dodać, a nie zmienić bramę domyślną (ale pamiętaj, że spowoduje to przerwanie ruchu nielokalnego między dwiema komendami, jeśli przejdziesz) droga).źródło