J'ai deux canaux Internet et une passerelle sur freebsd. Lorsque je change de canal avec la commande route change default chan2
, la commande netstat -nr
affiche la route par défaut modifiée. Mais traceroute
montre que les paquets passent par l'ancienne route chan1.
Exemple:
$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
MAIS
$ 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
Tout fonctionne si je lance la combinaison suivante:
$ sudo route del default
$ dormir 10
$ sudo route add default xxx.xxx.144.125
uname -a
devrait afficher)?netstat -rnf inet
?arp -d -a
et / ou les tables de routageroute flush
avant d'ajouter la nouvelle route par défaut. Il est possible que l'espace noyau / utilisateur consulte des données périmées.Réponses:
Si vous utilisez la
route change
commande, vous devez redémarrer le service réseau pour appliquer les modifications, par exemple:la source
Est-il possible que vous ayez une route en cache vers 8.8.8.8? La sortie complète de
netstat -nr
le montrerait. Si c'est le cas, vous devrez le supprimer avant de tester votre modification - soit cette route spécifiquement, soit vous pouvezroute flush
, puis ajouter plutôt que de modifier la passerelle par défaut (mais sachez que cela interrompra le trafic non local entre les deux commandes si vous y allez) façon).la source