Як перезавантажити таблицю маршрутизації Mac OSX за замовчуванням без перезавантаження


71

Привітання,

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

Іноді я отримую так збитий стіл маршрутизації, я отримую ping: sendto: Network is unreachableURL-адреси, які в іншому випадку повинні вирішити.

Наразі, якщо я перезавантажую Mac OS X, то все повернеться до норми. Що я хотів би зробити, це скинути таблиці маршрутизації на "за замовчуванням" (наприклад, що встановлено під час завантаження) без усієї перезавантаження системи.

Я думаю, що крок 1 - route flushце видалити всі маршрути. І на кроці 2 потрібно перезавантажити всі маршрути за замовчуванням.

Будь-які думки, як це зробити? (наприклад, що таке крок 2?)

EDIT Крім того, я зауважую, що інший симптом tracerouteтакож не вдається зазначити вказану адресу. Наприклад:

traceroute the.good.dns.name

traceroute: bind: Can't assign requested address

Відповіді:


64

Потрібно обминути маршрути. Використовуйте route -n кілька разів. Потім додайте свої маршрути за допомогою маршруту "add".


1
Я змінив це на прийняту відповідь. Це працює! Я робив route -n flushкілька разів, потім я просто перезапустив свою мережу через налаштування системи. Мені знадобився лише рік, щоб повернутися і зрозуміти це :)
Нейт Мюррей

Це вирішило аналогічну проблему для мене з клієнтом VPN Aventail Connect Sonicwall, який, як мені здається, особливо схильний до збоїв "Не можу призначити запитувану адресу", особливо при комутації бездротових мереж. Тепер у мене є спосіб вирішити, що не уникне циклу живлення. Дякую!
Алан Доннеллі

Оце Так! Це також допомогло з моєю проблемою з BarracudaVPN ... Я вимикаю / вимикаю Wi-Fi, і нарешті можу знову підключитися! Дуже дякую!
hans_meine

19

Я зіткнувся з цією проблемою під час використання домашнього сервера 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, який автоматизує це видалення маршруту.


У мене насправді є подібне питання. Дійсно дратує.
Том Бусбі

Я зіткнувся з тією ж проблемою, навіть із прикладом сценарію ovpn. Єдине знайдене
нами

Чи є спосіб автоматично запустити цей скрипт при кожному відключенні?
Whitecat

@Whitecat Так! Перевірте це: superuser.com/a/1305361
Elad Nava

13

Спочатку вам потрібен маршрут для вашого мережевого інтерфейсу. Якщо VPN відключено, просто зніміть мережевий інтерфейс, а потім відновіть його до ifconfig. Потім використовуйте маршрут comnand, щоб створити стандартну gw. Тож щось на кшталт:

ifconfig en0 down

ifconfig en0 up

route add <ip address> default


1
Так, але як Mac OS X знає, що IP-адреса маршруту за замовчуванням? Я дуже хотів би побачити, як Mac OS X виконує процес завантаження і робить те саме.
Нейт Мюррей

1
...? Він отримує його від DHCP ...
Джордан Енсон,

5

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

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

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

І коли я відключився, [home-ip] шлюз все ще буде там. Коли я підключився до своєї робочої мережі, я взагалі не міг підключитися до Інтернету і зіткнувся з тією ж проблемою, що й ОП

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

Тоді мені доведеться вручну видалити маршрут за допомогою

$ sudo route -n delete [home-ip]

Спочатку я поставив "route -n delete" в post-disconnect.shсценарій, але це було трохи безладно, тому замість цього я знайшов це посилання

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

Мабуть, причина пов’язана з тим, що в моєму .ovpnфайлі встановлено наступне

user nobody
group nogroup

Це означає, що маршрут встановлений як root, але коли з’єднання припинено, користувач більше не має root, тому маршрут не можна видалити.

Коментуючи ці 2 рядки у моєму .ovpnфайлі, виправлена ​​проблема, не використовуючи post-disconnect.sh.


Дякую, це працювало і для мене. Прикро, що посилання на код Google вже не працює.
Тобі

Я намагався використовувати вашу пропозицію, проблема полягає в тому, що коли я підключаюсь до VPN, він витягує файли конфігурації звідкись і переписує мої зміни. Це не отримує їх із сервера, наскільки я можу сказати, тому що коли я змінюю ці файли, це не вирішує проблему. Чи є місце розташування на стороні клієнта, де я можу знайти ці файли та знищити / змінити їх, щоб зміни залишилися?
Ціна Фінсанта

Я робив тривіальну помилку, коли плутаю ~ / Бібліотека з / Бібліотека. На жаль! Для всіх, хто читає це, ви хочете змінити файл у ~ / Бібліотека / Підтримка програм / Tunnelblick / Конфігурації / <vpnname> .tblk / Зміст / Ресурси
ціна Фінанса
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.