Сеть на Mac в Терминале: скорость интернета, IP-адрес, DNS и порты
Сетевые команды macOS: встроенный тест скорости networkQuality, как узнать локальный и внешний IP, шлюз и DNS, сбросить кэш DNS, проверить ping и dig, найти программу на занятом порту и посмотреть сигнал Wi-Fi.
Содержание
- 1Скорость интернета: networkQuality
- Что такое Responsiveness и RPM
- Полезные ключи
- 2Как узнать свой IP-адрес
- Локальный IP
- Внешний IP
- 3Сетевые интерфейсы
- Какие интерфейсы есть
- Подробности об интерфейсе: ifconfig
- 4Шлюз: через что Mac выходит в интернет
- 5DNS на Mac
- Какие DNS-серверы используются
- Как сменить DNS
- Сброс кэша DNS
- 6Проверка связи: ping
- 7Проверка DNS: dig и nslookup
- 8traceroute и mtr
- 9Какие порты слушает Mac
- Порты 5000 и 7000: это AirPlay
- Остальные строки
- 10Кто занял конкретный порт
- 11Статистика интерфейсов: netstat -ib
- 12Wi-Fi: имя сети и уровень сигнала
- 13Шпаргалка: задача → команда
- 14Если не работает
- 15Чек-лист
- 16Частые вопросы
- Как проверить скорость интернета на Mac без сайтов?
- Что значит RPM в networkQuality?
- Как узнать IP-адрес Mac через Терминал?
- Какой интерфейс en0, а какой en1?
- Как сбросить кэш DNS на Mac?
- Почему порт 5000 занят на Mac?
- Как узнать, какая программа занимает порт?
- Где на Mac посмотреть уровень сигнала Wi-Fi?
В macOS почти всё про сеть можно узнать без сторонних программ и сайтов. Скорость интернета, IP-адрес, роутер, DNS-серверы, занятые порты — на всё есть встроенная команда в Терминале. Нужно только знать, какая.
Ниже — команды, которыми удобно пользоваться каждый день, и как читать их вывод. Большая часть выводов снята на моём iMac 2019 с macOS Sequoia: он подключён к роутеру и кабелем, и по Wi-Fi одновременно, поэтому на нём хорошо видно, как macOS выбирает интерфейс. Где реального вывода нет, блок подписан как «Пример вывода».
Если вы недавно на Mac, пригодятся сочетания клавиш — Терминал открывается через Spotlight: ⌘ + Пробел, затем «Терминал».
Скорость интернета: networkQuality
С macOS Monterey в систему встроен тест скорости — networkQuality. Он меряет скорость до серверов Apple, ничего ставить не нужно, рекламы нет.
networkQuality -sКлюч -s — последовательный режим: сначала проверяется отдача, потом загрузка, по отдельности. Без него оба направления меряются одновременно, и цифры получаются ниже, чем на привычных сайтах-спидтестах. Для сравнения с тарифом провайдера удобнее -s.
==== SUMMARY ====
Uplink capacity: 442.672 Mbps
Downlink capacity: 575.079 Mbps
Uplink Responsiveness: Medium (94.308 milliseconds | 636 RPM)
Downlink Responsiveness: High (47.134 milliseconds | 1272 RPM)
Idle Latency: 25.926 milliseconds | 2314 RPMЧто здесь что:
- 📥 Downlink capacity — скорость загрузки, у меня 575 Мбит/с.
- 📤 Uplink capacity — скорость отдачи, 443 Мбит/с.
- ⏱️ Idle Latency — задержка, пока сеть свободна: 26 мс. Это аналог пинга на обычных спидтестах.
- 🔄 Responsiveness — самая интересная строка, о ней ниже.
Что такое Responsiveness и RPM
Обычный пинг меряют на пустом канале. Но в жизни задержка растёт как раз тогда, когда канал занят: кто-то качает игру, а у вас в это время подвисает видеозвонок. Это явление называют bufferbloat — роутер и провайдер копят пакеты в очередях, и каждый новый запрос стоит в хвосте.
Responsiveness показывает задержку под нагрузкой — пока тест забивает канал на полную. Единица RPM (round-trips per minute) — сколько запросов «туда-обратно» успевает пройти за минуту. Считается просто: 60 000 делить на задержку в миллисекундах. 60 000 / 47,134 мс ≈ 1272 RPM — ровно то, что в выводе. Чем больше RPM, тем лучше.
Оценка словами — Low, Medium или High. В моём выводе видно типичную картину: на пустом канале 26 мс, при загрузке задержка вырастает до 47 мс (High), а при отдаче — до 94 мс (Medium). Значит, когда Mac что-то активно выгружает в облако, звонки и игры будут чувствовать это сильнее, чем при скачивании.
Полезные ключи
networkQuality -v # подробный вывод: сервер, интерфейс, время теста
networkQuality -s -I en0 # тест только через кабель
networkQuality -s -I en1 # тест только через Wi-Fi-v— подробный режим: дополнительно покажет, через какой интерфейс шёл тест, к какому серверу и когда.-I en0— привязать тест к конкретному интерфейсу. Удобно, если подключены и кабель, и Wi-Fi: так сразу видно, насколько беспроводная сеть медленнее.
Какой интерфейс как называется — смотрите в разделе про интерфейсы ниже. Измерить скорость до своего сервера, а не до Apple, можно через iperf3 — об этом отдельная статья: скорость до VPS: iperf3 и mtr.
Как узнать свой IP-адрес
Локальный IP
Локальный адрес — тот, что выдал вам роутер. Он нужен, чтобы зайти на Mac с другого устройства дома, настроить проброс порта или общую папку.
ipconfig getifaddr en0; ipconfig getifaddr en1ipconfig getifaddr печатает IPv4-адрес указанного интерфейса и больше ничего — удобно для скриптов. На iMac en0 — Ethernet, en1 — Wi-Fi. На MacBook без порта Ethernet Wi-Fi обычно en0.
192.168.1.93
192.168.1.105У меня iMac подключён к роутеру и кабелем, и по Wi-Fi, поэтому адреса два: 192.168.1.93 у кабеля и 192.168.1.105 у Wi-Fi. Если интерфейс не подключён, команда ничего не выведет — это не ошибка.
Внешний IP
Внешний адрес — тот, под которым вас видят сайты в интернете. Его знает только внешняя сторона, поэтому придётся спросить у какого-нибудь сервиса:
curl ifconfig.me203.0.113.47Если внешний адрес совпадает с адресом в настройках роутера — у вас «белый» IP. Если нет, провайдер выдаёт адрес через свой NAT, и пробросить порт на домашний сервер напрямую не получится.
Сетевые интерфейсы
Какие интерфейсы есть
networksetup -listallhardwareportsКоманда показывает все сетевые порты: имя, которое видно в настройках, и системное имя устройства.
Hardware Port: Ethernet
Device: en0
Ethernet Address: xx:xx:xx:xx:xx:xx
Hardware Port: Thunderbolt Bridge
Device: bridge0
Ethernet Address: xx:xx:xx:xx:xx:xx
Hardware Port: Wi-Fi
Device: en1
Ethernet Address: xx:xx:xx:xx:xx:xx
Hardware Port: Thunderbolt 1
Device: en2
Ethernet Address: xx:xx:xx:xx:xx:xx
Hardware Port: Thunderbolt 2
Device: en3
Ethernet Address: xx:xx:xx:xx:xx:xxEthernet Address — это MAC-адрес, я его скрыл. Его не стоит выкладывать в интернет вместе с остальным выводом. Thunderbolt Bridge — сеть между двумя Mac по кабелю Thunderbolt, в обычной жизни она не используется.
Подробности об интерфейсе: ifconfig
ifconfig en0 | grep -E 'inet |status|media'Полный вывод ifconfig длинный, поэтому я оставил три строки: адрес, тип подключения и состояние.
inet 192.168.1.93 netmask 0xffffff00 broadcast 192.168.1.255
media: autoselect (1000baseT <full-duplex,flow-control>)
status: activeinet— IPv4-адрес. Маска в macOS пишется в шестнадцатеричном виде:0xffffff00— это255.255.255.0, или/24. Перевести любую маску поможет калькулятор подсетей.media— скорость порта.1000baseT full-duplex— гигабит по кабелю в обе стороны одновременно. Если там100baseTX, виноват обычно кабель или порт роутера: соединение упало до 100 Мбит/с, и тариф быстрее этого не разгонится.status: active— кабель подключён и линк есть.inactive— кабеля нет или он не работает.
Шлюз: через что Mac выходит в интернет
route -n get default | grep -E 'gateway|interface'route -n get default показывает маршрут по умолчанию — куда уходит весь трафик, для которого нет отдельного правила. Ключ -n выводит адреса цифрами, без попытки узнать имена.
gateway: 192.168.1.1
interface: en0gateway — адрес роутера, по нему открывается его веб-панель. interface — через какой интерфейс идёт трафик. У меня подключены и кабель, и Wi-Fi, но в интернет Mac ходит через en0, то есть через кабель. macOS выбирает интерфейс по порядку служб: он виден командой networksetup -listnetworkserviceorder, а меняется в «Системных настройках» → «Сеть» → меню «…» → «Задать порядок служб».
DNS на Mac
Какие DNS-серверы используются
scutil --dns | grep nameserver | sort -uscutil --dns показывает настройки DNS так, как их видит сама система. Полный вывод длинный: там отдельные блоки для локальных доменов и mDNS. Поэтому я оставил только строки с серверами и убрал повторы.
nameserver[0] : 192.168.1.1DNS-сервер — сам роутер, 192.168.1.1. Так почти всегда бывает по умолчанию: роутер получает DNS от провайдера и раздаёт себя. Файл /etc/resolv.conf в macOS тоже есть, но для справки — смотреть надёжнее через scutil.
Как сменить DNS
Сначала узнайте точное имя сетевой службы — команде нужно именно оно, а не en0:
networksetup -listallnetworkservicesAn asterisk (*) denotes that a network service is disabled.
Ethernet
Thunderbolt Bridge
Wi-FiТеперь задаём серверы, например Cloudflare и Google:
networksetup -setdnsservers "Ethernet" 1.1.1.1 8.8.8.8
networksetup -getdnsservers "Ethernet"Вторая команда проверяет результат — должна вывести два адреса. Если macOS ответит, что нужны права администратора, повторите первую команду с sudo.
Вернуть DNS от роутера:
networksetup -setdnsservers "Ethernet" EmptyEmpty — специальное слово: очищает список, и Mac снова берёт DNS из настроек сети. Для Wi-Fi всё то же самое, только вместо "Ethernet" пишите "Wi-Fi". Кавычки нужны, если в имени службы есть пробел или дефис.
Сброс кэша DNS
macOS помнит ответы DNS. Если вы поменяли запись домена или сервер, а Mac упорно открывает старый адрес, сбросьте кэш:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderПервая команда чистит кэш службы каталогов, вторая заставляет mDNSResponder — службу, которая и отвечает за DNS в macOS, — сбросить свой. Вывода нет, это нормально. Браузеры держат собственный кэш, поэтому после сброса иногда нужно перезапустить и браузер.
Проверка связи: ping
ping -c 5 ya.ruping отправляет пакеты до узла и меряет время ответа. Ключ -c 5 — отправить пять пакетов и остановиться. Без него ping работает бесконечно, пока не нажмёте Ctrl + C.
PING ya.ru (77.88.44.242): 56 data bytes
64 bytes from 77.88.44.242: icmp_seq=0 ttl=54 time=19.532 ms
64 bytes from 77.88.44.242: icmp_seq=1 ttl=54 time=19.462 ms
64 bytes from 77.88.44.242: icmp_seq=2 ttl=54 time=19.614 ms
64 bytes from 77.88.44.242: icmp_seq=3 ttl=54 time=19.615 ms
64 bytes from 77.88.44.242: icmp_seq=4 ttl=54 time=19.560 ms
--- ya.ru ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 19.462/19.557/19.615/0.057 msСмотреть стоит на две строки в конце:
packet loss— потери. У меня0.0%, так и должно быть. Постоянные потери даже в 1–2% уже заметны в играх и звонках.round-trip— минимальная, средняя и максимальная задержка и разброс (stddev). Средняя у меня около 19,5 мс, а разброс всего 0,06 мс — соединение стабильное. Большой разброс значит, что задержка скачет: это чаще всего загруженный Wi-Fi или канал.
Удобный порядок проверки, когда «нет интернета»: сначала ping 192.168.1.1 (роутер), потом ping 1.1.1.1 (интернет по IP), потом ping ya.ru (интернет по имени). Роутер отвечает, а 1.1.1.1 нет — проблема у провайдера. По IP всё работает, а по имени нет — проблема в DNS.
Проверка DNS: dig и nslookup
dig +short ya.rudig спрашивает у DNS-сервера адрес домена. Ключ +short оставляет только ответ — без заголовков и служебных секций.
77.88.44.242
77.88.55.242
5.255.255.242У домена три адреса — так крупные сайты распределяют нагрузку. Спросить конкретный DNS-сервер, а не системный, можно через @:
dig @1.1.1.1 +short ya.ruЕсли через @1.1.1.1 ответ приходит, а без него нет — неисправен DNS роутера или провайдера. nslookup ya.ru делает то же самое и тоже есть в macOS, просто его вывод более многословный.
traceroute и mtr
traceroute показывает путь пакетов: через какие узлы они проходят до сервера и на каком шаге растёт задержка. Он встроен в macOS:
traceroute ya.ruУдобнее mtr — он совмещает traceroute и ping и обновляет статистику по каждому узлу в реальном времени. В macOS его нет, ставится через Homebrew. Как читать вывод обеих программ и что значат потери на промежуточных узлах, я подробно разобрал в статье скорость до VPS: iperf3 и mtr.
Какие порты слушает Mac
lsof -iTCP -sTCP:LISTEN -n -Plsof выводит открытые файлы, а сетевые соединения для macOS — тоже файлы. Разберём ключи:
-iTCP— только TCP-соединения;-sTCP:LISTEN— только те, что ждут входящих подключений, то есть слушают порт;-n— не превращать IP-адреса в имена;-P— показывать номера портов цифрами, а не названиями служб.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ControlCe 366 nixlife 9u IPv4 0x… 0t0 TCP *:7000 (LISTEN)
ControlCe 366 nixlife 10u IPv6 0x… 0t0 TCP *:7000 (LISTEN)
ControlCe 366 nixlife 11u IPv4 0x… 0t0 TCP *:5000 (LISTEN)
ControlCe 366 nixlife 12u IPv6 0x… 0t0 TCP *:5000 (LISTEN)
rapportd 378 nixlife 8u IPv4 0x… 0t0 TCP *:49457 (LISTEN)
rapportd 378 nixlife 9u IPv6 0x… 0t0 TCP *:49457 (LISTEN)
skydimo-c 537 nixlife 4u IPv4 0x… 0t0 TCP 127.0.0.1:38967 (LISTEN)
skydimo-c 537 nixlife 11u IPv4 0x… 0t0 TCP 127.0.0.1:49160 (LISTEN)Главное — колонки COMMAND (программа, имя обрезано до 9 символов), PID (номер процесса) и NAME (адрес и порт). *:5000 значит, что порт открыт на всех интерфейсах — к нему можно подключиться из домашней сети. 127.0.0.1:38967 — порт доступен только с самого Mac.
Без sudo lsof покажет только ваши процессы. Чтобы увидеть и системные службы, запустите sudo lsof -iTCP -sTCP:LISTEN -n -P.
Порты 5000 и 7000: это AirPlay
ControlCe — это ControlCenter, «Пункт управления» macOS. Порты 5000 и 7000 он держит для функции «Приёмник AirPlay»: с ней на Mac можно транслировать экран или музыку с iPhone.
Подвох в том, что 5000 — порт по умолчанию для многих dev-серверов, например Flask. Запускаете проект — и получаете ошибку «Address already in use», хотя ничего своего на этом порту не запускали. Или сервер вроде бы стартует, но браузер на localhost:5000 отвечает ошибкой 403 — это отвечает AirPlay, а не ваш проект.
Решений два:
- 🔀 запустить свой сервер на другом порту, например 5001 или 8000;
- 📴 отключить приёмник: «Системные настройки» → «Основные» → «AirDrop и Handoff» → выключить «Приёмник AirPlay». После этого
lsofбольше не покажетControlCeна портах 5000 и 7000.
Остальные строки
rapportd— системная служба Continuity: через неё Mac находит ваши iPhone и iPad рядом для Handoff, общего буфера обмена и Универсального управления. Порт у неё случайный и меняется. Трогать не нужно.skydimo-c— программа подсветки монитора Skydimo. Она слушает только127.0.0.1, то есть доступна лишь с этого Mac.
Незнакомое имя в списке — не повод паниковать. Найдите путь к программе по PID: ps -p 537 -o comm= покажет, какой файл запущен, и по пути обычно сразу понятно, что это за приложение.
Кто занял конкретный порт
lsof -i :8080-i :8080 — все соединения на порту 8080, и входящие, и исходящие. Если вывод пустой — порт свободен.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 12345 nixlife 23u IPv6 0x… 0t0 TCP *:8080 (LISTEN)Здесь порт держит node с PID 12345 — скорее всего, забытый dev-сервер в другой вкладке Терминала. Завершить процесс:
kill 12345Если процесс не завершается, kill -9 12345 остановит его принудительно, без шанса сохранить данные. Для системных процессов нужен sudo — но системные службы macOS так убивать не стоит: они перезапустятся, а порт снова будет занят.
Статистика интерфейсов: netstat -ib
netstat -ibnetstat -i показывает счётчики по каждому интерфейсу, а ключ -b добавляет объём в байтах.
Name Mtu Network Address Ipkts Ierrs Ibytes Opkts Oerrs Obytes Coll
lo0 16384 <Link#1> 369628 0 84766475 369628 0 84766475 0
lo0 16384 127 localhost 369628 - 84766475 369628 - 84766475 -
gif0* 1280 <Link#2> 0 0 0 0 0 0 0Ipkts/Opkts— сколько пакетов принято и отправлено с момента загрузки;Ibytes/Obytes— то же в байтах;Ierrs/Oerrs— ошибки приёма и передачи. Если уen0они постоянно растут, проверьте кабель и порт роутера;Mtu— максимальный размер пакета. Для Ethernet и Wi-Fi обычно 1500.
lo0 — петлевой интерфейс: через него программы на Mac общаются между собой по 127.0.0.1. gif0 со звёздочкой — служебный туннельный интерфейс, он выключен. Чтобы не листать всё, отфильтруйте нужный интерфейс: netstat -ib | grep en0.
Wi-Fi: имя сети и уровень сигнала
Раньше для этого была утилита airport, но в новых macOS она устарела и больше не работает. Теперь сведения о Wi-Fi выдаёт wdutil, и ей нужны права администратора:
sudo wdutil infoВывод большой: сведения о сети, Wi-Fi, Bluetooth и состоянии питания. Нас интересует блок WIFI. Мой iMac в интернет ходит по кабелю, поэтому ниже — сокращённый пример, а не мой вывод:
WIFI
Interface Name : en1
Power : On [On]
Op Mode : STA
SSID : HomeNet-5G
Security : WPA2 Personal
PHY Mode : 11ac
Channel : 5g36/80
RSSI : -54 dBm
Noise : -92 dBm
Tx Rate : 585.0 MbpsSSID— имя сети.RSSI— уровень сигнала. Чем ближе к нулю, тем лучше: около −50 dBm — отлично, −67 dBm — ещё нормально для видеозвонков, ниже −75 dBm — начнутся обрывы.Noise— уровень шума. Разница междуRSSIиNoiseдолжна быть хотя бы 25 dB: в примере это 38 dB.Channel—5gзначит диапазон 5 ГГц,36— номер канала,80— ширина канала в МГц.Tx Rate— скорость соединения Mac с роутером. Это не скорость интернета, а потолок для Wi-Fi.
Шпаргалка: задача → команда
| Задача | Команда |
|---|---|
| Скорость интернета | networkQuality -s |
| Скорость через конкретный интерфейс | networkQuality -s -I en1 |
| Локальный IP | ipconfig getifaddr en0 |
| Внешний IP (сторонний сервис) | curl ifconfig.me |
| Список сетевых портов | networksetup -listallhardwareports |
| Скорость и состояние кабеля | ifconfig en0 |
| Адрес роутера и активный интерфейс | route -n get default |
| Порядок интерфейсов | networksetup -listnetworkserviceorder |
| Текущие DNS-серверы | scutil --dns | grep nameserver |
| Сменить DNS | networksetup -setdnsservers "Ethernet" 1.1.1.1 8.8.8.8 |
| Вернуть DNS от роутера | networksetup -setdnsservers "Ethernet" Empty |
| Сбросить кэш DNS | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder |
| Проверить связь | ping -c 5 ya.ru |
| Адрес домена | dig +short ya.ru |
| Путь до сервера | traceroute ya.ru, mtr |
| Какие порты слушает Mac | lsof -iTCP -sTCP:LISTEN -n -P |
| Кто занял порт | lsof -i :8080 |
| Счётчики трафика и ошибок | netstat -ib |
| Сигнал Wi-Fi | sudo wdutil info |
Если не работает
- ⚠️
ipconfig getifaddr en0ничего не выводит. Интерфейс не подключён или у него нет адреса. Проверьте имена черезnetworksetup -listallhardwareports: на MacBook Wi-Fi обычноen0, а на iMac —en1. - ⚠️
networksetupпишет, что служба не найдена. Имя службы должно совпадать с выводомnetworksetup -listallnetworkservicesдо буквы, включая регистр. Имена с пробелом берите в кавычки. - ⚠️ После смены DNS сайты открываются по-старому. Сбросьте кэш DNS командой выше и перезапустите браузер.
- ⚠️ Dev-сервер не стартует на порту 5000. Порт держит «Приёмник AirPlay». Смените порт или отключите приёмник в настройках AirDrop и Handoff.
- ⚠️
lsofпоказывает не всё. Безsudoвидны только ваши процессы, системные службы скрыты. - ⚠️
networkQualityпоказывает меньше тарифа. Запустите с-sи через кабель:-I en0. Если по кабелю всё нормально, а по Wi-Fi нет — дело в беспроводной сети, а не в провайдере. - ⚠️
curl ifconfig.meзависает. Сервис может быть недоступен. Проверьте связь черезping 1.1.1.1— если она есть, проблема в самом сервисе.
Чек-лист
Частые вопросы
Как проверить скорость интернета на Mac без сайтов?
Встроенной командой networkQuality -s в Терминале. Она есть с macOS Monterey, меряет загрузку, отдачу и задержку до серверов Apple.
Что значит RPM в networkQuality?
Round-trips per minute — сколько запросов «туда-обратно» проходит за минуту. Считается как 60 000 / задержка в мс. Чем больше, тем отзывчивее сеть. Главное — RPM под нагрузкой: это строки Responsiveness.
Как узнать IP-адрес Mac через Терминал?
Локальный — ipconfig getifaddr en0 (или en1, если это Wi-Fi). Внешний — curl ifconfig.me, но это сторонний сервис.
Какой интерфейс en0, а какой en1?
Зависит от модели. Точно покажет networksetup -listallhardwareports. На iMac en0 — Ethernet, en1 — Wi-Fi; на MacBook без Ethernet Wi-Fi обычно en0.
Как сбросить кэш DNS на Mac?
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder. Команда ничего не выводит — это нормально.
Почему порт 5000 занят на Mac?
Его держит «Пункт управления» для функции «Приёмник AirPlay». Отключите её в «Системные настройки» → «Основные» → «AirDrop и Handoff» или запустите свой сервер на другом порту.
Как узнать, какая программа занимает порт?
lsof -i :номер_порта, например lsof -i :8080. В колонке COMMAND — программа, в PID — номер процесса, который можно завершить командой kill.
Где на Mac посмотреть уровень сигнала Wi-Fi?
sudo wdutil info, строка RSSI в блоке WIFI. Без Терминала: зажмите ⌥ и нажмите на значок Wi-Fi в строке меню — появятся подробности о подключении.
Если статья пригодилась — отметьте, это помогает выбирать темы
Статья помогла?
Комментарии
Пока никто не написал. Будьте первым — вопрос или свой опыт одинаково полезны.