Введение / Зачем это нужно
Терминал macOS — мощный инструмент для быстрой диагностики и управления сетью без графического интерфейса. Эти команды помогут вам:
- Мгновенно определить, есть ли связь с сайтом или сервером.
- Найти «узкие места» в сети (где теряются пакеты).
- Управлять сетевыми настройками напрямую.
- Отслеживать активные соединения и открытые порты.
- Безопасно подключаться к удалённым серверам.
Этот гайд — ваш практический справочник по самым востребованным сетевым утилитам в macOS.
Требования / Подготовка
- Операционная система: macOS 11 (Big Sur) или новее. Некоторые команды (например,
ifconfig) существуют давно, но синтаксис и вывод могут немного отличаться. - Права: Для большинства команд (ping, traceroute, dig) достаточно обычного пользователя. Для управления интерфейсами (
ifconfigс флагами) или просмотра всех процессов (netstat -a) могут потребоваться права администратора (sudo). - Базовые навыки: Умение открывать Terminal и вводить команды.
Основные команды диагностики сети
Эти команды отвечают на вопрос «Доступен ли ресурс и как быстро?».
ping — проверка доступности и задержки
Проверяет, отвечает ли удалённый хост, и измеряет время Round-Trip Time (RTT).
# Проверить доступность google.com (4 пакета)
ping google.com
# Проверить доступность по IPv6
ping6 ipv6.google.com
# Отправить бесконечное количество пакетов (остановить Ctrl+C)
ping 192.168.1.1
Что смотреть: Статистику потери пакетов (packet loss) и среднюю/максимальную задержку (avg, max). Постоянные потери или рост задержки — признак проблем.
traceroute — трассировка маршрута
Показывает весь путь, который проходят пакеты от вашего компьютера до цели, и задержку на каждом узле (hop).
traceroute google.com
# Для IPv6
traceroute6 ipv6.google.com
Интерпретация: Сначала идут локальные и провайдерские узлы, затем — узлы целевого хоста. Звёздочки (* * *) на каком-то hop означают, что этот узель не отвечает на ICMP-запросы (часто из-за firewall), но это не обязательно проблема.
dig — диагностика DNS
Запросы к DNS-серверам для получения информации о доменах. Более информативен, чем nslookup.
# Получить A-запись (IPv4 адрес)
dig google.com
# Получить MX-записи (почтовые серверы)
dig google.com MX
# Использовать конкретный DNS-сервер (например, Cloudflare)
dig @1.1.1.1 google.com
# Короткий ответ (только данные)
dig +short google.com
Зачем: Чтобы понять, правильно ли разрешается доменное имя и какой DNS-сервер используется.
Управление сетевыми интерфейсами
Просмотр и базовая настройка сетевых адаптеров.
ifconfig — детальная информация об интерфейсах
Показывает все сетевые интерфейсы (включая виртуальные lo0, utun0 для VPN) и их параметры.
# Показать все интерфейсы
ifconfig
# Показать только активные (с IP)
ifconfig | grep "inet "
# Информация по конкретному интерфейсу (например, en0 - Wi-Fi)
ifconfig en0
Ключевые поля в выводе:
inet— IPv4 адрес.inet6— IPv6 адрес.netmask— маска подсети.broadcast— широковещательный адрес.status: active— интерфейс включён.
⚠️ Важно:
ifconfigсчитается устаревшей. В новых версиях macOS для настройки рекомендуется использоватьipconfig(для просмотра) или системные настройки (networksetup). Ноifconfigостаётся лучшим инструментом для детального просмотра.
ipconfig — простой просмотр IP-адресов
Упрощённая команда, показывающая только активные IP-адреса и相关信息.
ipconfig getifaddr en0 # Получить IP только для интерфейса en0
ipconfig getpacket en0 # Показать DHCP-информацию для en0
networksetup — управление сетевыми службами
Управление расположениями (Locations) и службами (Wi-Fi, Ethernet) через CLI.
# Список всех сетевых служб
networksetup -listallnetworkservices
# Включить/выключить Wi-Fi
sudo networksetup -setairportpower en0 on
sudo networksetup -setairportpower en0 off
# Присвоить службе статический IP
sudo networksetup -setstatic "Wi-Fi" 192.168.1.100 255.255.255.0 192.168.1.1
Анализ активных соединений и портов
netstat — статистика по сетевым соединениям
Показывает активные сокеты, таблицы маршрутизации, статистику интерфейсов.
# Все активные соединения (TCP/UDP) с именами процессов
sudo netstat -a -p tcp
# Только слушающие (listening) порты
sudo netstat -an | grep LISTEN
# Статистика по интерфейсам (входящий/исходящий трафик)
netstat -i
# Таблица маршрутизации
netstat -rn
Совет: В современных версиях macOS netstat постепенно заменяется на ss (из пакета iproute2mac), но netstat остаётся стандартной утилитой.
lsof — список открытых файлов (включая сокеты)
Показывает, какой процесс держит какое сетевое соединение или порт.
# Все сетевые соединения (IPv4/IPv6)
sudo lsof -i
# Соединения на конкретном порте (например, 8080)
sudo lsof -i :8080
# Только TCP-соединения
sudo lsof -i tcp
# Соединения для конкретного процесса (по PID)
sudo lsof -p <PID>
Практика: Если неизвестно, что слушает на порту 3306, выполните sudo lsof -i :3306. Вывод покажет процесс (например, mysqld) и его PID.
Безопасный удалённый доступ: ssh
ssh — безопасная оболочка
Подключение к удалённому серверу по зашифрованному каналу.
# Подключиться с логином user к server.com
ssh user@server.com
# Подключиться с указанием порта (не 22)
ssh -p 2222 user@server.com
# Использовать конкретный ключ
ssh -i ~/.ssh/my_key user@server.com
# Запустить команду на удалённом сервере без входа в интерактивную оболочку
ssh user@server.com "uptime && df -h"
scp и sftp — безопасная передача файлов
scp(Secure Copy) — копирование файлов по SSH.# С локального на удалённый scp ~/local/file.txt user@server.com:/remote/path/ # С удалённого на локальный scp user@server.com:/remote/file.txt ~/Desktop/ # Рекурсивно (папка) scp -r ~/local/folder user@server.com:/remote/sftp(SSH File Transfer Protocol) — интерактивный клиент.sftp user@server.com # Внутри сессии: # put local_file /remote/path/ # загрузить # get remote_file /local/path/ # скачать # ls /remote/path/ # список # bye # выйти
Проверка результата
После выполнения ваших действий (например, смены DNS или настройки фаервола) проверьте:
- Доступность:
ping <цель>— нет ли потери пакетов. - Разрешение имён:
dig <домен>— возвращается ли правильный IP. - Маршрут:
traceroute <цель>— нет ли аномальных задержек на определённом узле. - Порты:
sudo lsof -i :<порт>илиnc -zv <цель> <порт>— открыт ли нужный порт. - Конфигурацию:
ifconfigилиipconfig— назначен ли ожидаемый IP-адрес.
Возможные проблемы
| Проблема | Возможная причина | Решение |
|---|---|---|
ping: cannot resolve <host> | Нет связи с DNS-сервером или домен не существует. | Проверьте настройки DNS в Системных настройках → Сеть. Попробуйте ping 8.8.8.8 (Google DNS). Если работает, проблема в DNS. |
ping: sendto: Operation not permitted | Блокировка исходящих ICMP-пакетов фаерволом или провайдером. | Проверьте настройки брандмауэра в Системных настройках → Защита и безопасность. Свяжитесь с провайдером. |
ssh: connect to host ... port 22: Connection refused | На удалённом сервере не запущен SSH-демон или блокирует порт фаервол. | Убедитесь, что на сервере запущен sshd (sudo systemctl status sshd). Проверьте, открыт ли порт 22 (sudo lsof -i :22). |
ifconfig: interface en0 does not exist | Неправильное имя интерфейса. | Выполните просто ifconfig и найдите правильное имя (чаще всего en0 для Wi-Fi, en1 для Ethernet, pdp_ip0 для модема). |
sudo: no tty present and no askpass program specified | Попытка выполнить sudo в окружении без терминала (например, из скрипта или IDE). | Настройте sudo без пароля для конкретной команды в /etc/sudoers (осторожно!) или используйте expect-скрипт. |
💡 Совет: Для большинства повседневных задач (проверка сайта, копирование файлов) достаточно
ping,sshиscp. Остальные команды используйте для углублённой диагностики.