У меня два интернет-канала и шлюз на freebsd. Когда я переключаю канал с помощью команды route change default chan2
, команда netstat -nr
показывает измененный маршрут по умолчанию. Но traceroute
показывает, что пакеты проходят по старому маршруту chan1.
Пример:
$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
НО
$ 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
Все работает, если я запустил следующую комбинацию:
$ sudo route del default
$ спать 10
$ sudo route добавить по умолчанию xxx.xxx.144.125
Возможно ли у вас кешированный маршрут до 8.8.8.8? Полный выход netstat -nr
покажет это. Если это так, вам нужно будет удалить его перед тестированием вашего изменения - либо этот маршрут, либо вы можете route flush
а затем добавьте, а не измените шлюз по умолчанию (но помните, что это прервет нелокальный трафик между двумя командами, если вы пойдете этим путем).
Если вы используете route change
необходимо перезапустить сетевую службу, чтобы изменения вступили в силу, например:
$ sudo /etc/rc.d/netif restart