- О маршрутизации простыми словами. Как посмотреть, добавить или удалить маршрут в macOS
- Как посмотреть, добавить или удалить маршрут в macOS
- How to reload default Mac OSX routing table without rebooting
- 4 Answers 4
- Как перезагрузить таблицу маршрутизации Mac OSX по умолчанию без перезагрузки
- Маршрутизация в Mac OS при VPN подключении
- Как перезагрузить таблицу маршрутизации Mac OSX по умолчанию без перезагрузки
- 4 ответа
О маршрутизации простыми словами. Как посмотреть, добавить или удалить маршрут в macOS
Я давно заметил, что многих пользователей пугает само слово «маршрутизация». Да чего там говорить про обычных пользователей, когда даже админы (особенно те, кто кроме Windows ничего другого не видели) с трудом понимают что это такое.
И я сейчас не преувеличиваю. Иногда требуется прописать статический маршрут на клиенте, а не на роутере и мне приходилось объяснять не пользователю, а админу зачем это нужно, как это делается и в чём отличие от маршрута по умолчанию.
Мальчик сказал маме: “Я хочу кушать” и мама отправила его к папе.
Мальчик сказал папе: “Я хочу кушать” и папа отправил его назад к маме.
Мальчик сказал маме: “Я хочу кушать” и мама снова отправила его к папе.
Так мальчик бегал туда-обратно, пока не упал.
Что случилось с мальчиком? TTL кончился.
Скажете бессмысленный анекдот? Чтобы его понять нужно изучить как работают сети, а пока давайте объясню простыми словами что такое «маршрутизация» (routing), чтобы это слово вас больше не пугало.
Если вы когда-либо настраивали свой роутер или смотрели свойства подключения к сети, то наверняка видели что кроме адреса вашего компьютера, есть ещё адрес шлюза (ещё одно непонятное слово).
Всё просто. Интернет можно представить как разветвлённую дорожную сеть с кучей направлений. Каждая из дорог может привести куда угодно и не факт что нам туда вообще нужно. Так вот, ваш шлюз — это отправная точка во всемирную сеть, откуда вы начинаете свой путь и, в большинстве случаев, он становится для вас маршрутом по умолчанию.
То есть, когда вы открываете какие-то сайты, качаете торренты или проверяете почту, все ваши данные проходят через устройство с данным адресом. Он знает куда нужно дальше передавать пакеты данных. Таких отправных точек может быть превеликое множество и каждая из них обладает информацией о своём сегменте сети, компьютерах и других устройствах, расположенных за ней. Собственно, маршрутизация — это процесс определения лучшего маршрута.
Когда мы знаем точный маршрут следования (его ещё называют статическим), то можем сразу начать движение по нему, в противном случае используется маршрут по умолчанию, который как бы говорит: всё, что не знаешь, куда послать — шли сюда.
В каком случае может потребоваться указывать статический маршрут? Например, при использовании VPN-соединений, когда не желательно гонять весь трафик в защищённом канале. Но это уже выходит за рамки простого описания, да и про VPN я уже много рассказывал ранее. Кому интересно что это такое, можете почитать тут, а сейчас расскажу как управлять статическими маршрутами на примере macOS (если вы хотите узнать как управлять маршрутами в Windows и Linux, оставляйте комментарии и в одном из следующих постов я постараюсь изложить данную тему подробнее).
Как посмотреть, добавить или удалить маршрут в macOS
Чтобы посмотреть все действующие маршруты, отрываем Терминал и вводим следующую команду:
Добавить статичный маршрут можно следующей командой:
sudo route -n add 192.168.10.0/24 10.8.0.9
Здесь мы указали что для доступа к сети 192.168.10.0 с маской 255.255.255.0 (24) следует использовать шлюз 10.8.0.9.
Теперь удалим созданный статичный маршрут:
sudo route -n delete 192.168.10.0/24 10.8.0.9
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.
Источник
How to reload default Mac OSX routing table without rebooting
I’m using vpnc for a VPN client. I’m also doing some tricky things with route to make sure I can still access my local network, etc. etc. (the particulars here are not very important).
Sometimes I get the routing table so jacked up I get ping: sendto: Network is unreachable for urls that should otherwise resolve.
Currently, if I restart Mac OS X then everything is back to normal. What I’d like to do is reset the routing tables to the «default» (e.g. what it is set to at boot) without a whole system reboot.
I think that step 1 is route flush (to remove all routes). And step 2 needs to reload all of the default routes.
Any thoughts on how to do this? (e.g. what is step 2?)
EDIT Also, I’m noticing another symptom is traceroute also fails on the address in question. For instance:
traceroute: bind: Can’t assign requested address
4 Answers 4
You need to flush the routes . Use route -n flush several times . Afterwards add your routes with route add.
I was running into this issue while using a home OpenVPN server and connecting to it using the Tunnelblick application on Mac.
What was happening on my end is that a route with my home IP as the destination and an incorrect gateway was getting leftover after disconnecting from the VPN. Deleting this route solved the issue, simply
Example: I am at school and after a fresh computer boot, I connect to a wireless network. I connect to my home OpenVPN server with Tunnelblick.
I disconnect from the VPN server. I change wireless networks. This changes my default gateway.
I can’t under any circumstances connect to my home network (VPN, ping, anything) after this happens. If I then just delete the route:
There might be an issue with how the OpenVPN server/client is configured which is leaving this (and I’d be interested in finding out what that is), but I installed a Tunnelblick post-disconnect script that automates this route deletion.
Источник
Как перезагрузить таблицу маршрутизации Mac OSX по умолчанию без перезагрузки
Я использую vpnc для VPN-клиента. Я также делаю некоторые хитрые вещи, route чтобы убедиться, что я все еще могу получить доступ к своей локальной сети и т. Д. И т. Д. (Подробности здесь не очень важны).
Иногда я получаю таблицу маршрутизации настолько измученной, что получаю ping: sendto: Network is unreachable URL-адреса, которые в противном случае должны разрешиться.
В настоящее время, если я перезагружаю Mac OS X, тогда все возвращается к нормальной жизни. То, что я хотел бы сделать, это сбросить таблицы маршрутизации на «по умолчанию» (например, то, что установлено при загрузке) без перезагрузки всей системы.
Я думаю, что шаг 1 route flush (удалить все маршруты). И шаг 2 должен перезагрузить все маршруты по умолчанию.
Есть мысли о том, как это сделать? (например, что такое шаг 2?)
РЕДАКТИРОВАТЬ Кроме того, я заметил еще один симптом, который traceroute также не удается на указанный адрес. Например:
traceroute: bind: Can’t assign requested address
Вам необходимо промыть маршруты. Используйте route -n flush несколько раз. Затем добавьте ваши маршруты с маршрутом добавить.
Я столкнулся с этой проблемой при использовании домашнего сервера OpenVPN и подключении к нему с помощью приложения Tunnelblick на Mac.
То, что происходило на моем конце, было то, что маршрут с моим домашним IP в качестве пункта назначения и неправильного шлюза становился остатком после отключения от VPN. Удаление этого маршрута решило проблему, просто
Пример: я в школе и после новой загрузки компьютера подключаюсь к беспроводной сети. Я подключаюсь к своему домашнему серверу OpenVPN с Tunnelblick.
Я отключаюсь от VPN-сервера. Я меняю беспроводные сети. Это меняет мой шлюз по умолчанию.
Я не могу ни при каких обстоятельствах подключиться к моей домашней сети (VPN, ping, что угодно) после того, как это произойдет. Если я тогда просто удалю маршрут:
Может быть проблема с настройкой сервера / клиента OpenVPN, которая оставляет это (и мне было бы интересно узнать, что это такое), но я установил скрипт пост-разъединения Tunnelblick, который автоматизирует удаление этого маршрута.
Источник
Маршрутизация в Mac OS при VPN подключении
Появилась как-то задача подключатся по VPN к рабочей сети, чтобы иметь доступ к внутренним ресурсам.
Средствами Мака это можно сделать создав VPN подключение и 2 варианта:
1. поставить галочку «Слать весь трафик через VPN подключение»
2. статически прописать статически route add -net 192.168.10.0/24 192.168.44.1, где 192.168.10.0/24 — сеть в которой находятся компьютеры на работе, 192.168.44.1 VPN шлюз к которому я подключаюсб.
Итак после каждого подключения нужно делать вторую манипуляцию, так как общий доступ в интернет ограничен и скорость не ахты. Или задача состоит в том чтобы ходить на сайты (например youtube) через более быстрый канал VPN…
Итак задачу я решил следующим образом:
создал скрипт: touch /etc/ppp/ip-up
дал ему прав на исполнение: chmod +x /etc/ppp/ip-up
создал файл для логов: touch /tmp/ppp.log
Содержимое скрипта:
#!/bin/sh
VPNWORK=»192.168.44.1″; #обьявляем переменную (например по названию VPN подключения)
if [ $IPREMOTE = $VPNWORK ] #проверяем, если совпадает добавляем маршрут
then
/sbin/route -n add -net 192.168.10.0/24 $IPREMOTE > /tmp/ppp.log 2>&1
fi
Таким образом после подключения к сети добавляется маршрут, и нет необходимости добавлять его вручную, так-же при отключении от VPN он удаляется сам.
При необходимости добавлять DNS сервер можно дописать текст между then и fi:
echo «nameserver 4.2.2.1» > /etc/resolv.conf
Вместо 4.2.2.1 укажите свой основной DNS и второй записью рабочий.
Но при этом после отключения нам надо вернуть предыдущий DNS конфиг на место, для этого создаем: touch /etc/ppp/ip-down && chmod +x /etc/ppp/ip-down
Перед началом работы делаем бекап:
cp /etc/resolv.conf /etc/resolv.conf_original
и добавляем в скрипт /etc/ppp/ip-down:
#!/bin/sh
cat /etc/resolv.conf_original > /etc/resolv.conf
Собственно всё. При каждом подключении VPN прописывается маршрут, работаете сколько надо, после отключения удаляется, при этом у вас не будет загвоздок с DNS.
Источник
Как перезагрузить таблицу маршрутизации Mac OSX по умолчанию без перезагрузки
Я использую vpnc для VPN-клиента. Я также делаю некоторые сложные вещи с помощью route , чтобы убедиться, что я все еще могу получить доступ к своей локальной сети и т. Д. И т. Д. (Подробности здесь не очень важны).
Иногда я получаю таблицу маршрутизации таким образом, что я получаю ping: sendto: Network is unreachable для URL-адресов, которые в противном случае разрешаются.
В настоящее время, если я перезапущу Mac OS X, все возвращается к норме. То, что я хотел бы сделать, — сбросить таблицы маршрутизации на «по умолчанию» (например, на то, что он установлен при загрузке) без для всей системы.
Я думаю, что шаг 1 — это route flush (для удаления всех маршрутов). Шаг 2 должен перезагрузить все маршруты по умолчанию.
Любые мысли о том, как это сделать? (например, что такое шаг 2?)
ИЗМЕНИТЬ Кроме того, я замечаю, что другой симптом traceroute также не работает на указанном адресе. Например:
traceroute: bind: Can’t assign requested address
4 ответа
Вам нужно очистить маршруты. Используйте route -n flush несколько раз. Затем добавьте свои маршруты с добавлением маршрута.
Я столкнулся с этой проблемой при использовании домашнего сервера OpenVPN и подключился к нему с помощью приложения Tunnelblick на Mac.
Что происходит с моей стороны, так это то, что маршрут с моим домашним IP-адресом в качестве адресата и неправильным шлюзом оставался после отключения от VPN. Удаление этого маршрута решило проблему, просто
Пример: я нахожусь в школе и после новой загрузки компьютера подключаюсь к беспроводной сети. Я подключаюсь к моему домашнему серверу OpenVPN с помощью Tunnelblick.
Я отключусь от VPN-сервера. Я меняю беспроводные сети. Это изменяет мой шлюз по умолчанию.
Я не могу ни при каких обстоятельствах подключиться к моей домашней сети (VPN, ping, что-либо) после этого. Если я просто удалю маршрут:
Он отлично работает.
Возможно, возникла проблема с тем, как настроен сервер /клиент OpenVPN, который уходит от него (и мне было бы интересно узнать, что это такое), но я установил сценарий post-disconnect Tunnelblick, который автоматизирует удаление этого маршрута .
Сначала вам нужен маршрут для сетевого интерфейса. Если VPN отключен, просто снимите сетевой интерфейс и верните его с помощью ifconfig. Затем используйте команду commnand для построения в вашем gw по умолчанию. Так что-то вроде:
ifconfig en0 down
ifconfig en0 up
route add default
Я столкнулся с той же проблемой, что и @Sean (я также использую OS X), поскольку при переключении между домашними и рабочими сетями маршрут по умолчанию не удалялся.
Для полноты, когда я подключаюсь к своей VPN дома и выполняю следующую команду, он будет показывать шлюз по умолчанию, как показано ниже
И когда я отключусь, шлюз [home-ip] все равно будет там. Когда я подключился к своей рабочей сети, я вообще не смог подключиться к Интернету и столкнулся с той же проблемой, что и OP
Мне пришлось бы вручную удалить маршрут с помощью
Первоначально я помещал «route -n delete» в сценарий post-disconnect.sh , но это было немного грязно, поэтому вместо этого я нашел эту ссылку
По-видимому, причина связана с установкой следующего в моем файле .ovpn
Это означает, что маршрут настроен как root, но когда соединение выполняется, пользователь больше не является root, поэтому маршрут не может быть удален.
Источник