Зачем ip и что случилось с ifconfig
Набор утилит iproute2 с командой ip давно заменил устаревший пакет net-tools с ifconfig и route. В современных дистрибутивах ifconfig может отсутствовать, а ip установлен всегда. Команда ip умеет работать с адресами, интерфейсами, маршрутами и таблицами соседей, разные объекты выбираются первым словом: addr, link, route, neigh.
Для просмотра адресов достаточно команды ip addr show, которую сокращают до ip a. Права администратора для просмотра не нужны, они понадобятся при изменении настроек. Обратите внимание на важное отличие от Windows: адрес и состояние интерфейса здесь разделены, и в выводе видны обе части.
Имена интерфейсов в современных системах предсказуемые: enp3s0 для проводного, wlp2s0 для беспроводного, lo для петли. Старые имена eth0 и wlan0 тоже встречаются, особенно в виртуальных машинах и небольших устройствах.
Отдельно стоит сказать о виртуальных интерфейсах: docker0, br-, veth и virbr появляются при использовании контейнеров и виртуальных машин. Они выглядят как дополнительные сети и могут занимать диапазоны адресов, пересекающиеся с вашей локальной сетью, что порой приводит к странным проблемам с доступом.
Читаем вывод ip addr
Пример (пример, адреса из блока документации):
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:00:5e:00:53:01 brd ff:ff:ff:ff:ff:ff inet 192.0.2.10/24 brd 192.0.2.255 scope global dynamic noprefixroute enp3s0 valid_lft 86000sec preferred_lft 86000sec inet6 fe80::200:5eff:fe00:5301/64 scope link valid_lft forever preferred_lft forever
Первая строка описывает интерфейс: номер, имя, флаги, MTU и состояние. Строка link/ether содержит MAC-адрес. Строка inet описывает адрес IPv4 с префиксом (/24 соответствует маске 255.255.255.0), а inet6 описывает адрес IPv6.
| Элемент | Значение |
|---|---|
| UP | Интерфейс включён административно |
| LOWER_UP | Есть физическая связь: кабель подключён, точка доступа найдена |
| state UP / DOWN | Общее рабочее состояние интерфейса |
| scope global | Адрес доступен во внешнем мире |
| scope link | Адрес действует только в пределах сегмента |
| dynamic | Адрес получен по DHCP и имеет срок аренды |
| valid_lft | Сколько ещё действует адрес |
Полезные варианты команды
Полный вывод удобен для подробностей, но для беглого взгляда громоздок. Пригодятся варианты.
- ip -br addr: краткий вывод в одну строку на интерфейс с состоянием и адресами. Подходит для быстрой проверки.
- ip -4 addr и ip -6 addr: показывают только адреса выбранного протокола.
- ip addr show dev enp3s0: только выбранный интерфейс.
- ip -c addr: цветной вывод, если ваша версия поддерживает ключ.
- ip link: состояние интерфейсов без адресов, показывает MAC-адреса и флаги.
- ip -s link: то же плюс счётчики принятых и отправленных пакетов и ошибок.
Счётчики ошибок и отбрасываний из последней команды полезны при подозрении на плохой кабель: растущее число ошибок на приёме говорит о проблемах физического уровня. Если LOWER_UP отсутствует, а интерфейс UP, кабель не подключён или на другом конце ничего нет.
Для просмотра соседей в локальной сети служит ip neigh, аналог arp в других системах.
Краткий вывод ip -br addr выглядит примерно так (пример): enp3s0 UP 192.0.2.10/24 fe80::200:5eff:fe00:5301/64. Три столбца: имя, состояние и адреса. Для регулярных проверок именно такой формат удобнее всего читать, а в скриптах его легко разбирать построчно.
Временное изменение адресов
Ip позволяет менять настройки прямо на лету, но такие правки сохраняются только до перезагрузки или перезапуска сетевой службы. Постоянную настройку выполняют в конфигурации системы, а способ зависит от дистрибутива: NetworkManager, systemd-networkd, netplan и другие.
Примеры временных команд (пример, адреса из блока документации), выполняются от root:
- ip addr add 192.0.2.50/24 dev enp3s0: добавить второй адрес интерфейсу.
- ip addr del 192.0.2.50/24 dev enp3s0: удалить этот адрес.
- ip link set enp3s0 down и ip link set enp3s0 up: выключить и включить интерфейс.
Будьте осторожны, когда работаете по сети: выключение интерфейса, через который вы подключены по SSH, оборвёт сессию, и вернуть её удалённо не получится. Также помните, что добавленный вручную адрес в неверной подсети не заработает без правильного маршрута, для этого смотрите страницу про ip route.
Не меняйте сетевые настройки на чужих системах без разрешения и без понимания последствий.
Диагностика по выводу ip addr
Типичные сценарии и как их читать. Если у интерфейса нет строки inet, адрес не назначен: проверьте DHCP или статические настройки. Если inet есть, но состояние DOWN, интерфейс выключен или нет линка.
Адрес вида 169.254.x.x показывает, что система не получила ответа от DHCP-сервера. Более одного адреса на интерфейсе бывает нормальным: часть адресов IPv6 временные, часть добавлена намеренно. Если у интерфейса два IPv4-адреса из разных подсетей, проверьте, не остался ли статический адрес после экспериментов.
Сравните вывод с тем, что показывает роутер в списке клиентов. Если MAC и адрес совпадают, локальная часть настроена правильно, и следующим шагом становится проверка шлюза и DNS. Порядок проверки связи от адреса к внешнему миру описан на странице про ping loopback и лестницу диагностики.
Если нужно сохранить данные для обращения к специалисту, выполните ip addr и ip route и приложите оба вывода: этого достаточно, чтобы понять локальную конфигурацию сети без дополнительных вопросов. MAC-адреса лучше замазать перед публикацией.