macOS

Сетевые команды Terminal на macOS: полный справочник

Этот гайд объясняет основные сетевые команды macOS Terminal для диагностики, настройки и мониторинга подключений. Вы научитесь проверять доступность, отслеживать маршруты, управлять интерфейсами и анализировать соединения.

Обновлено 8 апреля 2026 г.
15-20 мин
Низкая
FixPedia Team
Применимо к:macOS Sonoma 14macOS Ventura 13macOS Monterey 12macOS Big Sur 11

Введение / Зачем это нужно

Терминал macOS — мощный инструмент для быстрой диагностики и управления сетью без графического интерфейса. Эти команды помогут вам:

  • Мгновенно определить, есть ли связь с сайтом или сервером.
  • Найти «узкие места» в сети (где теряются пакеты).
  • Управлять сетевыми настройками напрямую.
  • Отслеживать активные соединения и открытые порты.
  • Безопасно подключаться к удалённым серверам.

Этот гайд — ваш практический справочник по самым востребованным сетевым утилитам в macOS.

Требования / Подготовка

  1. Операционная система: macOS 11 (Big Sur) или новее. Некоторые команды (например, ifconfig) существуют давно, но синтаксис и вывод могут немного отличаться.
  2. Права: Для большинства команд (ping, traceroute, dig) достаточно обычного пользователя. Для управления интерфейсами (ifconfig с флагами) или просмотра всех процессов (netstat -a) могут потребоваться права администратора (sudo).
  3. Базовые навыки: Умение открывать 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 или настройки фаервола) проверьте:

  1. Доступность: ping <цель> — нет ли потери пакетов.
  2. Разрешение имён: dig <домен> — возвращается ли правильный IP.
  3. Маршрут: traceroute <цель> — нет ли аномальных задержек на определённом узле.
  4. Порты: sudo lsof -i :<порт> или nc -zv <цель> <порт> — открыт ли нужный порт.
  5. Конфигурацию: 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. Остальные команды используйте для углублённой диагностики.

Часто задаваемые вопросы

Какой командой проверить, открыт ли конкретный порт на удалённом сервере с Mac?
Чем отличается `ping` от `traceroute` и когда что использовать?
Как безопасно передать файл с Mac на удалённый сервер?
Почему `ifconfig` показывает множество интерфейсов, а `ipconfig` только один?

Полезное

Откройте Terminal
Изучите базовые команды диагностики
Освойте управление сетевыми интерфейсами
Научитесь анализировать активные соединения
Практикуйтесь в безопасном удалённом доступе