Как использовать команду Netstat на Mac

Команда netstat в macOS — это команда терминала, которая используется для отображения подробной информации о сетевых коммуникациях вашего Mac. Сетевые коммуникации включают в себя все способы общения вашего Mac с внешним миром через все порты и все приложения. Освоив netstat, пользователи Mac могут быстро понять, какие соединения устанавливает их компьютер и почему.

Запуск Netstat

Команда netstat доступна на Mac по умолчанию. Это не должно быть загружено или установлено.

Чтобы запустить netstat, откройте окно терминала. Если вы не знакомы с терминалом, его можно найти по адресу /Applications/Utilities/Terminal.app. Тип NetStat и нажмите Войти выполнить команду.

Вы заметите, что огромное количество загадочного текста начнет прокручиваться на вашем экране. Это нормально и ожидаемо. Без каких-либо дополнительных опций netstat сообщит обо всех активных сетевых подключениях на вашем Mac. Учитывая количество функций, которые выполняет современное сетевое устройство, вы можете ожидать, что список будет длинным. Стандартный отчет netstat может содержать более 1000 строк.

Фильтрация вывода netstat необходима для понимания того, что происходит на активных портах Mac. Вы можете фильтровать вывод netstat с помощью встроенных флагов. Эти флаги позволяют вам устанавливать параметры, ограничивая область действия и вывод netstat.

Флаги и опции Netstat

Чтобы увидеть все доступные параметры netstat, введите в командной строке man netstat. Это покажет справочную страницу netstat. Вы также можете просмотреть онлайн-версию справочной страницы netstat.

NetStat [-AabdgiLlmnqrRsSvWx] [очередь] [ address_family] [ интерфейс] [-п протокол] [-вес Подождите]

Netstat в macOS не работает так же, как netstat в Windows или netstat в Linux. Использование флагов или синтаксиса из этих реализаций netstat может не привести к ожидаемому поведению.

Если приведенное выше сокращение выглядит совершенно непонятным, научитесь читать синтаксис команды.

отображает таблицу маршрутизации, показывающую, как пакеты маршрутизируются по сети.

-п протокол перечисляет трафик, связанный с конкретным сетевым протоколом. Хотя полный список протоколов можно найти в / etc / protocol, наиболее важными из них являются udp и tcp.

-v увеличивает детализацию, особенно путем добавления столбца, показывающего идентификатор процесса (PID), связанный с каждым открытым портом.

Интерфейс предоставляет пакетные данные для указанного интерфейса. Все доступные интерфейсы можно просматривать с флагом -i, но en0 обычно является исходящим сетевым интерфейсом по умолчанию. Обратите внимание на строчную букву.

-грамм отображает информацию, связанную с многоадресными подключениями.

-s показывает статистику сети для всех протоколов, независимо от того, активны они или нет.

-N подавляет помеченные удаленные адреса именами. Это значительно ускоряет вывод netstat, жертвуя только ограниченной информацией.

включает порты сервера в вывод netstat, которые не включены в вывод по умолчанию.

Примеры Netstat

Чтобы применить наше понимание на практике, давайте рассмотрим некоторые примеры netstat.

netstat -apv TCP

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

netstat -a | grep -i "слушай"

Эта комбинация 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 или запустите человек лсоф в терминале подсказки.

Флаги и опции lsof

отображает все открытые сетевые подключения и имя процесса, который использует подключение. Добавление 4, как в -i4, будет отображать только соединения IPv4. Добавление 6 вместо (-i6) будет отображать только соединения IPv6.

Флаг также может быть расширен для уточнения деталей. -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 отображать размер файла. Но когда в паре с флаг, -s работает по другому. Вместо этого он позволяет пользователю указать протокол и статус для команды, которую необходимо вернуть.

-п ограничивает lsof определенным идентификатором процесса (PID). Несколько идентификаторов PID могут быть установлены с помощью общих, таких как -p 123 456 789. Идентификаторы процесса также могут быть исключены с помощью ^, как в 123, ^ 456, что, в частности, исключает PID 456.

-п отключает преобразование номеров портов в имена портов, ускоряя вывод.

-N отключает преобразование сетевых номеров в имена хостов. При использовании с -п выше, это может значительно ускорить вывод lsof.

U Пользователь возвращает только команды, принадлежащие указанному пользователю.

Примеры

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

lsof -nP -iTCP@lsof.itap: 513

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

lsof -iTCP -sTCP: СЛУШАТЬ

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

sudo lsof -i -u ^ $ (whoami)

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

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

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

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

Ссылка на основную публикацию