Tengo dos canales de Internet y Gateway en freebsd. Cuando cambio de canal con el comando route change default chan2, el comando netstat -nrmuestra la ruta predeterminada modificada. Pero traceroutemuestra que los paquetes pasan por la antigua ruta chan1.
Ejemplo:
$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
PERO
$ 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
Todo funciona si ejecuto la siguiente combinación:
$ sudo route del default
$ dormir 10
$ sudo route add default xxx.xxx.144.125

uname -adebería mostrar)?netstat -rnf inet?arp -d -ay / o las tablas de enrutamientoroute flushantes de agregar la nueva ruta predeterminada. Posiblemente el espacio kernel / user está consultando datos obsoletos.Respuestas:
Si usa el
route changecomando, debe reiniciar el servicio de red para aplicar los cambios, por ejemplo:fuente
¿Es posible que tenga una ruta en caché a 8.8.8.8? La salida completa de
netstat -nrmostraría eso. Si es así, deberá eliminarlo antes de probar su cambio, ya sea esa ruta específicamente o podríaroute flushy luego agregar en lugar de cambiar la puerta de enlace predeterminada (pero tenga en cuenta que esto interrumpirá el tráfico no local mientras se encuentra entre los dos comandos si va a ese camino).fuente