О маршрутизации простыми словами. Как посмотреть, добавить или удалить маршрут в 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
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.
Маршрутизация в 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
Приложение «Сетевая утилита» можно использовать для изучения таблиц сетевой маршрутизации Вашего компьютера, просматривая детализированный отчет о типах пакетов, отправленных или полученных с использованием универсальных сетевых протоколов.
Предоставляется возможность получения сводок для протоколов TCP, UDP, IP, ICMP, IGMP, IPSEC, IP6, ICMP6, IPSEC6 и PFKEY.
На Mac откройте приложение «Сетевая утилита» , расположенное в папке «Система/Библиотека/CoreServices/Программы».
Нажмите «Netstat», выберите тип информации, которую Вы хотите просмотреть, и нажмите кнопку «Netstat».
Чтобы интерпретировать результаты и узнать, как можно использовать команду netstat для получения других отчетов, откройте приложение «Терминал» (расположено в папке «Программы/Утилиты»), затем введите netstat в командной строке.
Маршрутизация в mac os x
Anton » 04 фев 2010, 21:38
Маршрутизация в Mac OS X :
Запускаем Terminal (находится в Applications/System Utilities)
(маршрутизация прописывается под root’ом . если нет root-аккаунта — нужно воспользоваться командой sudo, которая, собственно и выполняет root’овые действия)
в строке терминала вводим:
Код: Выделить всё sudo route add -net 192.168.0.0 -netmask 255.255.0.0 [i]ваш_шлюз[/i]sudo route add -net 213.138.213.0 -netmask 255.255.255.0 [i]ваш_шлюз[/i]sudo route add -net 80.237.99.224 -netmask 255.255.255.248 [i]ваш_шлюз[/i]
(вместо слова шлюз вписываем ip-адрес шлюза вашей сети)
жмем энтер, после этого потребуется ввести ваш юзерский пароль
после чего прописываем остальные маршруты, пароль вводить в ближайшие 5 минут не потребуется.
Код: Выделить всё sudo route add -net 192.168.0.0 -netmask 255.255.0.0 [i]ваш_шлюз[/i]sudo route add -net 213.138.213.0 -netmask 255.255.255.0 [i]ваш_шлюз[/i]sudo route add -net 80.237.99.224 -netmask 255.255.255.248 [i]ваш_шлюз[/i]
(вместо слова шлюз вписываем ip-адрес шлюза вашей сети)
теперь маршрутизация прописана, но, к сожалению, до первой перезагрузки компьютера
С этим мириться не следует, поэтому заставим ее прописываться автоматически:
Запускаем Script Editor (находится в Applications/System Utilities/AppleScript)
Копируем в окно редактора этот нехитрый скрипт:
Код: Выделить всё set LF to ASCII character 10
sudo route add -net 213.138.213.0 -netmask 255.255.255.0 [i]ваш_шлюз[/i]sudo route add -net 80.237.99.224 -netmask 255.255.255.248 [i]ваш_шлюз[/i]set yourScr1 to «sudo route add -net 192.168.0.0 -netmask 255.255.0.0 [i]ваш_шлюз[/i]»
set yourScr2 to «sudo route add -net 213.138.213.0 -netmask 255.255.255.0 [i]ваш_шлюз[/i]»
set yourScr3 to «sudo route add -net 80.237.99.224 -netmask 255.255.255.248 [i]ваш_шлюз[/i]»
set passwordStr to «ваш юзерский пароль» as string
set sudoScr to «sudo » & yourScr1 & «; sudo » & yourScr2 & «; sudo » & yourScr3 & » && sudo -k»
do shell script «sudo -v» & «
разумеется,вместо слова шлюз вписываем ip-адрес шлюза вашей сети,
а вместо ваш юзерский пароль — ваш настоящий пароль
теперь можно нажать на кнопку Run и проверить, все-ли вы правильно сделали.
если нет никаких ошибок и маршрут прописан — сохраняем этот скрипт. в текстовом
виде его хранить как-бы несекьюрно, т.к. он содержит ваш пароль, поэтому сохраним его как application — это вполне нормально.
Кладем этот скрипт куда подальше, открываем System Preferences, в разделе System открываем Accounts, выбираем себя (и если есть и необходимо — других юзеров), переходим в закладку Startup Items, и добавляем туда готовый скрипт (можно просто перетащить мышкой), и ставим напротив в чекбоксе галку, чтобы не мозолил глаза в доке при исполнении.
Теперь при каждом стартапе системы маршрутизация будет прописана автоматически
Еще есть способ — можно в настройках Network, а в частности в Network port configurations, наклонировать Built-in Ethernet в 5 экземплярах с помощью кнопки Duplicate, и в каждом из пяти прописать ip и шлюзы . я не пробовал.
А самый лучший способ — обзавестить роутером с поддержкой маршрутизации, дабы каждый раз
не поднимать vpn-соединение с помощью Internet connect, что всем и рекомендую.