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