Mac os посмотреть маршруты

Обновлено: 05.07.2024

Запуск 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 в 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 через сетевую утилиту

В дополнение к полнофункциональному использованию через интерфейс командной строки терминала, некоторые функции 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 или запустите 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.

Примеры

Как и netstat, просмотр некоторых примеров из lsof поможет отработать наше понимание.

Эта сложная команда выводит список всех TCP-соединений с именем хоста lsof.itap и портом 513. Он также будет запускать lsof без подключения имен к IP-адресам и портам, что значительно ускоряет выполнение команды.

Это вернет каждое TCP-соединение со статусом LISTEN . Это показывает все открытые порты TCP на вашем Mac. В нем также перечислены процессы, связанные с этими открытыми портами. Это значительное обновление по сравнению с netstat, в котором перечислены не более PID.

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

Каретка ^ используется для отрицания. Все, что соответствует тексту после каретки, будет удалено из результатов. Мы получаем имя текущего пользователя, выполнив команду whoami внутри команды lsof, в окружении $ () , чтобы lsof мог получить доступ к своим выводам в виде текста. Запуск с помощью sudo позволяет увидеть задачи, которые не принадлежат вам. Выполнение этой команды без sudo вернет пустой список.

Другие сетевые команды

Другие сетевые команды терминала, которые могут представлять интерес для проверки вашей сети, включают arp, ping и ipconfig.

Anton » 04 фев 2010, 21:38

Маршрутизация в Mac OS X :

Запускаем Terminal (находится в Applications/System Utilities)

(маршрутизация прописывается под root'ом . если нет root-аккаунта - нужно воспользоваться командой sudo, которая, собственно и выполняет root'овые действия)

в строке терминала вводим:

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

теперь маршрутизация прописана, но, к сожалению, до первой перезагрузки компьютера

С этим мириться не следует, поэтому заставим ее прописываться автоматически:

Запускаем Script Editor (находится в Applications/System Utilities/AppleScript)

Копируем в окно редактора этот нехитрый скрипт:

разумеется,вместо слова шлюз вписываем ip-адрес шлюза вашей сети,
а вместо ваш юзерский пароль - ваш настоящий пароль

теперь можно нажать на кнопку Run и проверить, все-ли вы правильно сделали.
если нет никаких ошибок и маршрут прописан - сохраняем этот скрипт. в текстовом
виде его хранить как-бы несекьюрно, т.к. он содержит ваш пароль, поэтому сохраним его как application - это вполне нормально.

Кладем этот скрипт куда подальше, открываем System Preferences, в разделе System открываем Accounts, выбираем себя (и если есть и необходимо - других юзеров), переходим в закладку Startup Items, и добавляем туда готовый скрипт (можно просто перетащить мышкой), и ставим напротив в чекбоксе галку, чтобы не мозолил глаза в доке при исполнении.

Теперь при каждом стартапе системы маршрутизация будет прописана автоматически

Еще есть способ - можно в настройках Network, а в частности в Network port configurations, наклонировать Built-in Ethernet в 5 экземплярах с помощью кнопки Duplicate, и в каждом из пяти прописать ip и шлюзы . я не пробовал.

А самый лучший способ - обзавестить роутером с поддержкой маршрутизации, дабы каждый раз
не поднимать vpn-соединение с помощью Internet connect, что всем и рекомендую.

Как добавить постоянные статические маршруты (persistent static routes) в Mac OS X. 1

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

ТЗ: Прописать статические маршруты, автоматически подгружаемые при перезагрузке PC под управлением OS X.

В примере будет использована маршрутизация сети 172.1.0.0/22 на маршрутизатор 172.0.0.200.

1. Создаем Launch Daemon.

info: Все последующие операции выполняются в консоли.

Создадим и заполним конфиг нового Launch Daemon:

Про АйТи и около айтишные темы

Как посмотреть, добавить и удалить маршрут в Mac OS X

Запускаем терминал Terminal.app и вводим следующую команду — netstat -nr. В результате мы увидим все маршруты пользователя, под которым работаем в системе.



Добавить статичный маршурт можно следующей командой:

Пример: sudo route -n add 192.168.10.0/24 10.0.247.43
Указываем адрес сети с маской и куда направлять запросы для этой сети.

Удаляем статичный маршрут так:

Нашли опечатку в тексте? Пожалуйста, выделите ее и нажмите Ctrl+Enter! Спасибо!

Хотите поблагодарить автора за эту заметку? Вы можете это сделать!

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

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

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

ИЗМЕНИТЬ Кроме того, я замечаю, что другой симптом traceroute также не работает на указанном адресе. Например:

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, поэтому маршрут не может быть удален.

Я на Mac и пытаюсь маршрутизировать определенный адрес через определенный шлюз на моем Wi-Fi-соединении.

Иногда это будет работать, а иногда - нет. Я обнаружил, что интерфейс, который он выбирает, каждый раз отличается. Это не должно быть en0 чтобы работать

Вывод netstat -nr когда он не работает:

Это когда это работает: (примечание en0)

Почему я это делаю? Потому что у нашей компании есть прокси, на котором HipChat не работает. Таким образом, я маршрутизирую трафик hipchat через открытую сеть Wi-Fi, все еще находясь в моей сети Ethernet.

Я также попытался добавить запись, используя только интерфейс

HipChat не может подключиться.

РЕДАКТИРОВАТЬ 2: Кто-то попросил всю мою таблицу маршрутизации, вот она сегодня. Обратите внимание, что 54.81.143.201 теперь связан с en3, а не en0

Как указали другие, это на самом деле 3 проблемы.

Ваш беспроводной интерфейс, кажется, меняется между en0, en3 и en5.

На моем MacBook Air en0 всегда беспроводная; Thunderbolt-to-Ethernet всегда en3, а USB-to-Ethernet всегда en5. Но если вы подключите адаптер к другому порту на вашем Mac, то имя его сетевой карты изменится. Вы должны решить это в первую очередь. Убедитесь, что ваше беспроводное устройство всегда имеет одно и то же имя. В противном случае при вводе команды статического маршрута, если в расположение en0 не подключен сетевой адаптер , команда (очевидно) завершится с ошибкой адреса (физический адрес не имеет связи).

Также убедитесь, что адаптер всегда подключается к одному и тому же SSID. Очевидно, адрес шлюза должен быть действительным для подсети, и разные сети WiFi будут иметь разные подсети. Это может вызвать другой тип ошибки.

Вы не указали, является ли беспроводное соединение единственным сетевым подключением. Учитывая вышесказанное, я думаю, нет . Это и виртуальные сети из-за VMware или Parallels могут вызвать дополнительные сложности. (Например, если обе подключенные сети используют одно и то же пространство IP . Виртуальные машины часто соединяются и имеют свои собственные IP-адреса / маршруты / ссылки . ) Размещение топологии сети поможет.

Читайте также: