Назад | Перейти на главную страницу

Freebsd изменяет маршрут интернет-канала по умолчанию

У меня два интернет-канала и шлюз на 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