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

Как перезагрузить таблицу маршрутизации Mac OSX по умолчанию без перезагрузки

Приветствую,

я использую vpnc для VPN-клиента. Я также делаю хитрые вещи с route чтобы убедиться, что я все еще могу получить доступ к своей локальной сети и т. д. и т. д. (подробности здесь не очень важны).

Иногда я получаю такую ​​таблицу маршрутизации, что ping: sendto: Network is unreachable для URL-адресов, которые в противном случае должны разрешиться.

В настоящее время, если я перезапущу Mac OS X, все вернется в норму. Я бы хотел сбросить таблицы маршрутизации до "по умолчанию" (например, то, что установлено при загрузке). без перезагрузка всей системы.

Я думаю, что шаг 1 route flush (удалить все маршруты). И на шаге 2 необходимо перезагрузить все маршруты по умолчанию.

Есть мысли, как это сделать? (например, что такое шаг 2?)

РЕДАКТИРОВАТЬ Кроме того, я заметил еще один симптом: traceroute также не работает по указанному адресу. Например:

traceroute the.good.dns.name

traceroute: bind: Can't assign requested address

Вам нужно промыть маршруты. Использовать маршрут -n flush несколько раз . После этого добавьте свои маршруты с помощью route add.

Я столкнулся с этой проблемой при использовании домашнего сервера OpenVPN и подключении к нему с помощью приложения Tunnelblick на Mac.

На моей стороне происходило то, что маршрут с моим домашним IP-адресом в качестве пункта назначения и неправильным шлюзом оставался после отключения от VPN. Удаление этого маршрута решило проблему, просто

$ sudo route -n delete the.good.dns.name

Пример: я в школе и после новой загрузки компьютера подключаюсь к беспроводной сети. Я подключаюсь к своему домашнему серверу OpenVPN с помощью Tunnelblick.

$ netstat -nr
Destination                   Gateway
....
[home-ip]/32                  [school-default-gateway-1] ....
....

Отключаюсь от VPN-сервера. Меняю беспроводные сети. Это меняет мой шлюз по умолчанию.

$ netstat -nr
Destination                   Gateway
...
[home-ip]/32                  [school-default-gateway-1] ...
...
$ ping [home-ip]
PING [home-ip]: 56 data bytes
ping: sendto: Network is unreachable
ping: sendto: Network is unreachable
Request timeout for icmp_seq 0
...

После этого я ни при каких обстоятельствах не могу подключиться к своей домашней сети (VPN, ping и т. Д.). Если я просто удалю маршрут:

$ sudo route -n delete [home-ip]
delete net [home-ip]
$ ping [home-ip]
PING [home-ip]: 56 data bytes
64 bytes from [home-ip]: icmp_seq=1 ttl=56 time=13.111 ms

Работает нормально.

Может возникнуть проблема с настройкой сервера / клиента OpenVPN, который оставляет это (и мне было бы интересно узнать, что это такое), но я установил сценарий после отключения Tunnelblick, который автоматизирует удаление этого маршрута.

Сначала вам нужен маршрут для вашего сетевого интерфейса. Если VPN отключен, просто отключите сетевой интерфейс, а затем снова включите его с помощью ifconfig. Затем используйте команду route, чтобы создать gw по умолчанию. Так что-то вроде:

ifconfig en0 down

ifconfig en0 up

route add <ip address> default

Я столкнулся с той же проблемой, что и @Sean (я также использую OS X), поскольку при переключении между домашней и рабочей сетями маршрут по умолчанию не удалялся.

Для полноты картины, когда я подключаюсь к своей VPN дома и запускаю следующую команду, он показывает шлюз по умолчанию, как показано ниже.

$ netstat -nr
Destination                   Gateway
...
[home-ip]/32                  [work-default-gateway-1]

И когда я отключился, шлюз [home-ip] все еще был там. Когда я подключался к своей рабочей сети, я вообще не мог подключиться к Интернету и сталкивался с той же проблемой, что и OP

$ traceroute the.good.dns.name    
$ traceroute: bind: Can't assign requested address

Затем мне пришлось бы вручную удалить маршрут с помощью

$ sudo route -n delete [home-ip]

Сначала я поставил "route -n delete" в post-disconnect.sh script, но это было немного беспорядочно, поэтому вместо этого я нашел эту ссылку

https://code.google.com/p/tunnelblick/issues/detail?id=177

По-видимому, причина в том, что в моем .ovpn файл

user nobody
group nogroup

Это означает, что маршрут настроен как root, но когда соединение прерывается, пользователь больше не является root, поэтому маршрут не может быть удален.

Комментируя эти 2 строки в моем .ovpn файл устранил проблему, без использования post-disconnect.sh.