- О маршрутизации простыми словами. Как посмотреть, добавить или удалить маршрут в macOS
- Как посмотреть, добавить или удалить маршрут в macOS
- Маршрутизация в Mac OS при VPN подключении
- Как использовать команду Netstat на Mac
- Запуск Netstat
- Флаги и опции Netstat
- Netstat Примеры
- Доступ к netstat через сетевую утилиту
- Дополнение netstat с помощью lsof
- флаги и опции
- Примеры
- Другие сетевые команды
О маршрутизации простыми словами. Как посмотреть, добавить или удалить маршрут в 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.
Источник
Как использовать команду Netstat на Mac
Команда netstat в macOS – это команда терминала, которая используется для отображения подробной информации о сетевых коммуникациях вашего Mac. Сетевые коммуникации включают в себя все способы общения вашего Mac с внешним миром через все порты и все приложения. Освоив netstat, пользователи Mac могут быстро понять, какие соединения устанавливает их компьютер и почему.
Запуск Netstat
Команда netstat доступна на Mac по умолчанию. Это не должно быть загружено или установлено.
Чтобы запустить netstat, откройте окно терминала. Если вы не знакомы с терминалом, его можно найти по адресу /Applications/Utilities/Terminal.app. Введите netstat и нажмите Enter , чтобы выполнить команду.
Вы заметите, что огромное количество загадочного текста начнет прокручиваться на вашем экране. Это нормально и ожидаемо. Без каких-либо дополнительных опций netstat сообщит обо всех активных сетевых подключениях на вашем Mac. Учитывая количество функций, которые выполняет современное сетевое устройство, вы можете ожидать, что список будет длинным. Стандартный отчет netstat может содержать более 1000 строк.
Фильтрация вывода netstat необходима для понимания того, что происходит на активных портах Mac. Вы можете фильтровать вывод netstat с помощью встроенных флагов. Эти флаги позволяют вам устанавливать параметры, ограничивая область действия и вывод netstat.
Флаги и опции Netstat
Чтобы увидеть все доступные параметры netstat, введите в командной строке man netstat. Это покажет справочную страницу netstat. Вы также можете просмотреть онлайн-версию справочной страницы netstat.
netstat [- AabdgiLlmnqrRsSvWx ] [ -c очередь ] [ -f address_family ] [ -I интерфейс ] [ -p протокол ] [ – w ждать ]
Netstat в macOS не работает так же, как netstat в Windows или netstat в Linux. Использование флагов или синтаксиса из этих реализаций netstat может не привести к ожидаемому поведению.
Если приведенное выше сокращение выглядит совершенно непонятным, научитесь читать синтаксис команды.
-r отображает таблицу маршрутизации, показывающую, как пакеты маршрутизируются по сети.
-p протокол перечисляет трафик, связанный с конкретным сетевым протоколом. Хотя полный список протоколов можно найти в/etc/protocol, наиболее важными из них являются udp и tcp.
-v увеличивает детализацию, в частности, добавляя столбец, показывающий идентификатор процесса (PID), связанный с каждым открытым портом.
-I интерфейс предоставляет пакетные данные для указанного интерфейса. Все доступные интерфейсы можно просматривать с флагом -i, но en0 обычно является исходящим сетевым интерфейсом по умолчанию. Обратите внимание на строчную букву.
-g отображает информацию, связанную с многоадресными подключениями.
-s показывает статистику сети для всех протоколов, независимо от того, активны они или нет.
-n подавляет пометку удаленных адресов именами. Это значительно ускоряет вывод netstat, жертвуя только ограниченной информацией.
-a включает порты сервера в вывод netstat, которые не включены в вывод по умолчанию.
Netstat Примеры
Чтобы применить наше понимание на практике, давайте рассмотрим некоторые примеры netstat.
Эта команда вернет только TCP-соединения на вашем Mac, включая открытые и активные порты. Он также будет использовать подробный вывод с перечислением PID, связанных с каждым соединением.
Эта комбинация netstat и grep покажет открытые порты на вашем Mac. Открытые порты – это порты, которые прослушивают сообщение. Если вы не знакомы с синтаксисом, символ канала | используется для отправки вывода одной команды другой команде. Мы направляем вывод netstat в grep, что позволяет нам искать его по ключевому слову «listen» и находить наши результаты.
Доступ к netstat через сетевую утилиту
В дополнение к полнофункциональному использованию через интерфейс командной строки терминала, некоторые функции netstat также доступны через приложение Network Utility. Это встроенное приложение macOS можно найти по адресу/Applications/Utilities/Network Utility.app. Откройте приложение и нажмите вкладку Netstat , чтобы получить доступ к графическому интерфейсу netstat.
Параметры в Network Utility явно гораздо более ограничены, чем те, которые доступны через командную строку. Четыре переключателя выбора просто запускают предустановленную команду netstat и отображают вывод на экране ниже.
Команды netstat для каждого переключателя следующие:
- Показать информацию о таблице маршрутизации запускает netstat -r
- Показать исчерпывающую статистику сети для каждого протокола : запустите netstat -s.
- Показать информацию о многоадресной рассылке запускает netstat -g
- Показать состояние всех текущих соединений с сокетами запускает netstat
Дополнение netstat с помощью lsof
Дело в том, что реализация netstat в macOS не включает в себя большую часть функций, ожидаемых и нужных пользователям. Несмотря на то, что он имеет свои применения, netstat не так полезен в macOS, как в Windows. Другая команда, lsof, может заменить большую часть отсутствующей функциональности.
lsof отображает любые файлы, открытые в настоящее время любыми приложениями. Это также можно использовать для проверки открытых портов, связанных с приложениями. Запустите lsof -i, и вы увидите список всех приложений, общающихся через Интернет. Обычно это является целью при использовании netstat на компьютерах с Windows. Однако единственный значимый способ выполнить эту задачу в macOS – это не netstat, а lsof.
Отображение каждого открытого файла или подключения к Интернету часто является многословным. Вот почему в lsof есть несколько флагов для ограничения результатов по определенным критериям. Есть много полезных флагов, которые расширяют утилиту команды. Самые важные из них приведены ниже. Для дополнительного чтения, включая дополнительные флаги и технические пояснения по реализации каждого флага, обратитесь к справочной странице lsof или запустите man lsof в командной строке терминала.
флаги и опции
-i отображает все открытые сетевые подключения и имя процесса, который использует подключение. Добавление 4, как в -i4 , приведет к отображению только подключений IPv4. Если вместо этого добавить 6 ( -i6 ), будут отображаться только соединения IPv6.
Флаг -i также может быть расширен для уточнения деталей. -iTCP или -iUDP будут возвращать только соединения TCP и UDP. -iTCP: 25 будет возвращать только TCP-соединения через порт 25. Диапазон портов может быть указан с дефисом, как это -iTCP: 25-50.
Использование -i@1.2.3.4 вернет только подключения к IPv4-адресу 1.2.3.4. IPv6-адреса могут быть указаны таким же образом. Прекурсор @ также можно использовать для одинакового указания имен хостов, но нельзя использовать одновременно удаленные IP-адреса и имена хостов.
-s обычно заставляет lsof отображать размер файла. Но в сочетании с флагом -i , -s работает по-другому. Вместо этого он позволяет пользователю указать протокол и статус для команды, которую необходимо вернуть.
-p ограничивает lsof определенным идентификатором процесса (PID). Несколько идентификаторов PID могут быть установлены с помощью общих, таких как -p 123 456 789. Идентификаторы процесса также могут быть исключены с помощью ^, как в 123, ^ 456, что, в частности, исключает PID 456.
-P отключает преобразование номеров портов в имена портов, ускоряя вывод.
-n отключает преобразование сетевых номеров в имена хостов. При использовании с -P выше, это может значительно ускорить вывод lsof.
– u пользователь возвращает только команды, принадлежащие указанному пользователю.
Примеры
Как и netstat, просмотр некоторых примеров из lsof поможет отработать наше понимание.
Эта сложная команда выводит список всех TCP-соединений с именем хоста lsof.itap и портом 513. Он также будет запускать lsof без подключения имен к IP-адресам и портам, что значительно ускоряет выполнение команды.
Это вернет каждое TCP-соединение со статусом LISTEN . Это показывает все открытые порты TCP на вашем Mac. В нем также перечислены процессы, связанные с этими открытыми портами. Это значительное обновление по сравнению с netstat, в котором перечислены не более PID.
Возвращает все соединения not , принадлежащие текущему вошедшему в систему пользователю. Эта команда немного отличается от других, поэтому мы разберем ее подробно.
Каретка ^ используется для отрицания. Все, что соответствует тексту после каретки, будет удалено из результатов. Мы получаем имя текущего пользователя, выполнив команду whoami внутри команды lsof, в окружении $ () , чтобы lsof мог получить доступ к своим выводам в виде текста. Запуск с помощью sudo позволяет увидеть задачи, которые не принадлежат вам. Выполнение этой команды без sudo вернет пустой список.
Другие сетевые команды
Другие сетевые команды терминала, которые могут представлять интерес для проверки вашей сети, включают arp, ping и ipconfig.
Источник