Где ifconfig актуален, а где нет
Команда ifconfig родом из семейства BSD, и в macOS она остаётся основным средством просмотра сетевых интерфейсов. В Linux её роль играла программа из пакета net-tools, но со временем её вытеснила утилита ip. Во многих свежих дистрибутивах ifconfig не установлена по умолчанию, и запуск даёт сообщение о том, что команда не найдена. Пакет net-tools можно поставить отдельно, но для новых задач лучше сразу осваивать ip addr.
Просмотр не требует прав администратора, изменение настроек требует sudo. Запуск без параметров показывает активные интерфейсы, ключ -a добавляет неактивные. Можно указать имя интерфейса: ifconfig en0.
Вывод в двух системах похож, но отличается деталями: формат маски, набор флагов и состав дополнительных строк. Ниже разберём macOS, поскольку именно там ifconfig чаще всего нужен, и отметим отличия Linux.
В macOS есть и графический путь к тем же данным: в настройках сети выберите активное подключение и посмотрите адрес и маску. Консольная команда быстрее, когда нужно скопировать значение или работать по удалённому доступу, и точнее показывает состояние интерфейса.
Разбор вывода в macOS
Пример (пример, адреса из блока документации):
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:00:5e:00:53:01 inet6 fe80::1c2a:5eff:fe00:5301%en0 prefixlen 64 scopeid 0x6 inet 192.0.2.20 netmask 0xffffff00 broadcast 192.0.2.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect status: active
Что читать:
| Строка | Значение |
|---|---|
| flags=...<UP,...RUNNING...> | UP интерфейс включён, RUNNING он работает |
| mtu 1500 | Максимальный размер пакета |
| ether | MAC-адрес интерфейса |
| inet | Адрес IPv4, netmask задан шестнадцатеричным числом |
| inet6 | Адрес IPv6, fe80:: означает адрес канала |
| status: active | Есть активное соединение |
Маска 0xffffff00 равна 255.255.255.0, то есть префикс /24. Каждая пара шестнадцатеричных цифр это один октет: ff означает 255, 00 означает 0. Если строка status показывает inactive, соединения нет.
Строка nd6 options относится к обнаружению соседей в IPv6 и для повседневной диагностики не важна. А вот строка media показывает режим соединения: для Ethernet там может быть скорость и дуплекс, что помогает заметить, что кабель работает на 100 Мбит/с вместо гигабита.
Как найти нужный интерфейс и адрес
В macOS интерфейсов много, и большинство служебные. Вот основные типы.
- lo0: петля, адрес 127.0.0.1.
- en0, en1 и далее: физические адаптеры. Обычно en0 это Wi-Fi на ноутбуках, но нумерация зависит от модели, поэтому проверяйте.
- bridge0, awdl0, llw0: служебные интерфейсы, для повседневной диагностики не нужны.
- utun0 и следующие: программные интерфейсы, которые создают системные службы и некоторые приложения.
Чтобы узнать, какому интерфейсу соответствует Wi-Fi, выполните networksetup -listallhardwareports: в выводе для каждого порта указано имя устройства. Быстро получить адрес интерфейса можно командой ipconfig getifaddr en0 (это отдельная команда macOS, не путайте с Windows-утилитой). Для выбора только строк с адресом используйте фильтр: ifconfig en0 | grep inet.
Если по Wi-Fi получен адрес 169.254.x.x, роутер не выдал адрес: перезагрузите роутер, переподключитесь к сети и проверьте настройки DHCP.
Если активных интерфейсов несколько (Wi-Fi и кабель через адаптер), сравните их по адресам и статусу. Сервисы в macOS выстроены в порядок в настройках сети, и порядок определяет, какой интерфейс используется предпочтительно. Проверить фактический выбор поможет команда route get с адресом назначения.
Отличия Linux и сравнение с ip addr
В Linux вывод ifconfig обычно выглядит так: имя интерфейса, флаги, затем строка inet с маской в десятичном виде (netmask 255.255.255.0) и блоки счётчиков RX и TX с числом пакетов, ошибок и потерянных пакетов. Именно счётчики удобны для быстрой оценки: растущее число errors и dropped указывает на проблемы приёма.
| Возможность | ifconfig | ip |
|---|---|---|
| Просмотр адресов | ifconfig | ip addr |
| Краткий список | ifconfig -s (Linux) | ip -br addr |
| Маска | 255.255.255.0 или 0xffffff00 | префикс /24 |
| Наличие в Linux | часто требует установки | есть всегда |
| Наличие в macOS | есть | нет, команды ip нет |
Ifconfig в Linux не показывает всех адресов, если у интерфейса их несколько, и хуже работает с современными функциями. Поэтому основным инструментом лучше считать ip, а ifconfig оставить для привычного просмотра на macOS. Подробный разбор команды ip есть на отдельной странице.
Кстати, в Linux вывод ifconfig без параметров скрывает выключенные интерфейсы, а ключ -a показывает все. Это одна из причин, почему интерфейс, который вы ищете, мог «пропасть» из списка: он просто отключён.
Изменение настроек и меры осторожности
Через ifconfig можно менять адрес и включать или отключать интерфейс, но делать это стоит осторожно. Пример (пример, адреса из блока документации): sudo ifconfig en0 down выключит интерфейс, sudo ifconfig en0 up включит его снова. Задание адреса вручную в macOS лучше делать через системные настройки сети, потому что правка через ifconfig не сохраняется и может конфликтовать с сетевыми службами.
Смена MAC-адреса тоже возможна, но постоянных изменений она не даёт и нужна для ограниченных задач; учтите, что современные системы для Wi-Fi могут использовать частные адреса по умолчанию. Смотрите в настройках сети, включена ли такая функция.
Если вы работаете по удалённому доступу, не отключайте интерфейс, по которому идёт соединение. Не пробуйте менять настройки на чужих машинах без разрешения. И помните, что вывод ifconfig содержит MAC-адрес и внутренние адреса: не публикуйте его целиком в открытых обсуждениях.