Tengo dos canales de Internet y Gateway en freebsd. Cuando cambio de canal con el comando route change default chan2
, el comando netstat -nr
muestra la ruta predeterminada modificada. Pero traceroute
muestra 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 -a
debería mostrar)?netstat -rnf inet
?arp -d -a
y / o las tablas de enrutamientoroute flush
antes de agregar la nueva ruta predeterminada. Posiblemente el espacio kernel / user está consultando datos obsoletos.Respuestas:
Si usa el
route change
comando, 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 -nr
mostraría eso. Si es así, deberá eliminarlo antes de probar su cambio, ya sea esa ruta específicamente o podríaroute flush
y 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