Сетевые настройки Ubuntu Server: руководство по интерфейсам, IP, DNS и мостам
Введение
Ubuntu Server предоставляет набор утилит для настройки сети. Тем не менее, администратору важно уметь работать прямо из командной строки: просматривать и переименовывать интерфейсы, назначать IP (временно и постоянно), настраивать DNS, создавать мосты для виртуальных машин и отлаживать проблему с разрешением имён.
Определения в одну строку:
- Ethernet-интерфейс — аппаратный или логический интерфейс сети (например, eth0, enp0s3).
- DHCP — протокол динамической выдачи IP-адресов.
- Netplan — YAML-ориентированный инструмент для конфигурации сети в новых версиях Ubuntu.
- Bridge — сетевой мост, позволяющий виртуальным машинам работать как на внешней сети.
Важно: команды, такие как ip и ifconfig, часто применяют временные изменения, которые пропадают после перезагрузки, если не внести их в конфигурационные файлы.
Управление Ethernet-интерфейсами в Ubuntu
Эфирнет-интерфейс — это сетевой контроллер с портом Ethernet. Раньше традиционные имена были eth0, eth1 и т. д., но современные версии Ubuntu используют предсказуемые имена (например, enp3s0). Какой бы подход ни использовался, нужно уметь обнаруживать интерфейсы, их MAC и связанный драйвер.
Просмотр доступных интерфейсов
Самый простой способ — использовать ifconfig (не всегда установлен по умолчанию) или ip:
ifconfig -a | grep eth
# Output
eth0: flags=4098 mtu 1500Альтернатива — более современная утилита ip:
ip link showДля детальной информации об аппаратных свойствах и драйверах используйте lshw:
sudo lshw -class network
Логические имена интерфейсов и udev
Если требуется закрепить определённые логические имена за физическими адаптерами (по MAC), можно настроить правила udev. В старых системах использовался файл:
/etc/udev/rules.d/70-persistent-net.rulesВ этом файле ищите строку, соответствующую MAC-адресу и меняйте NAME=ethA на желаемое имя интерфейса. После изменений перезагрузите систему.
Совет: в современных дистрибутивах systemd/udev и предсказуемые имена делает это чаще ненужным. Но в окружениях с устаревшим ПО или особой топологией сети правила udev остаются полезны.
Конфигурация Ethernet-интерфейса в Ubuntu 18.04 и ранее
В старых релизах инфраструктура сети преимущественно опиралась на /etc/network/interfaces и утилиты ifup/ifdown.
Просмотр и настройка скоростей и режима duplекс
ethtool показывает авто-скоординирование (auto-negotiation), duplex и скорость порта.
sudo apt install ethtool
sudo ethtool eth0
Изменения через ethtool временные. Чтобы зафиксировать параметры, добавьте соответствующую команду в скрипт запуска или в конфигурацию /etc/network/interfaces. Пример постоянной конфигурации (фрагмент):
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
pre-up /sbin/ethtool -s eth0 speed 1000 duplex full autoneg on
Примечание: пример выше показывает, как применять ethtool при поднятии интерфейса. pre-up/ post-down блоки выполняются при ifup/ifdown.
Конфигурация Ethernet-интерфейса в Ubuntu 20.04 и новее (Netplan)
Начиная с Ubuntu 18.04/20.04 netplan стал стандартом. Netplan использует YAML и генерирует конфигурацию для NetworkManager или systemd-networkd.
Шаги для статической конфигурации:
- Просмотрите файлы в /etc/netplan:
ls /etc/netplan
# Output
00-installer-config.yaml- Создайте резервную копию перед изменением:
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.copy- Отредактируйте файл в любом текстовом редакторе:
sudo vim /etc/netplan/00-installer-config.yaml- Пример простого статического конфига в YAML:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
search: [example.com]
- Примените изменения:
sudo netplan apply- Проверьте текущие адреса:
ip addr
Подсказка: если netplan выдаёт ошибки синтаксиса, используйте sudo netplan try — она применяет конфигурацию временно и откатывает её, если не подтвердить.
IP-адресация на Ubuntu: временные и постоянные методы
Существует два подхода:
- Временные:
ip,ifconfig,route— применяются немедленно, но не переживут перезагрузку. - Постоянные: правка netplan или /etc/network/interfaces, systemd-networkd или NetworkManager.
Временные изменения с ip/ifconfig
Пример временной настройки адреса через ifconfig:
ifconfig eth0 192.168.1.50 netmask 255.255.255.0 upАналог через ip:
sudo ip addr add 192.168.1.50/24 dev eth0
sudo ip link set dev eth0 upЧтобы удалить временный адрес:
sudo ip addr flush dev eth0Установка маршрута по умолчанию
Через route (устарело) или ip:
route add default gw 10.0.0.1 eth0
route -nСовременный эквивалент:
sudo ip route add default via 10.0.0.1 dev eth0
sudo ip route show
Настройка DNS временно и постоянно
Для временной работы можно редактировать /etc/resolv.conf напрямую, но многие системы используют resolvconf или systemd-resolved, и прямое редактирование перезапишут. Пример временной записи:
# vim /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4Если используется resolvconf, /etc/resolv.conf обычно является символической ссылкой на /run/resolvconf/resolv.conf или на systemd-resolved. Узнать состояние можно командой systemctl status systemd-resolved.
Динамическое получение IP (DHCP)
Для включения DHCP в /etc/network/interfaces (старые релизы):
auto eth0
iface eth0 inet dhcpПоднятие интерфейса вручную запускает dhclient:
sudo ifup eth0
sudo ifdown eth0В netplan для DHCP:
ethernets:
eth0:
dhcp4: yesСтатическая IP-настройка
Примеры приведены выше: в старых системах — /etc/network/interfaces; в новых — /etc/netplan/*.yaml. После изменения netplan всегда выполняйте sudo netplan apply.
Конфигурация loopback-интерфейса
Loopback (lo) отвечает за локальные обращения (127.0.0.1). Он поднимается автоматически благодаря строкам в /etc/network/interfaces:
auto lo
iface lo inet loopbackifconfig lo
Разрешение имён (Name Resolution)
Разрешение имён переводит хостнеймы в IP-адреса. На Ubuntu это комбинация нескольких механизмов: /etc/hosts, systemd-resolved, resolvconf и порядок, заданный в /etc/nsswitch.conf.
Настройка DNS-клиента
Если система использует resolvconf, /etc/resolv.conf чаще всего является ссылкой на /run/resolvconf/resolv.conf.
/etc/resolv.conf -> ../run/resolvconf/resolv.confДля статической конфигурации DNS через /etc/network/interfaces (старые релизы) добавьте dns-nameservers и dns-search:
iface eth0 inet static
address 192.168.2.2
netmask 255.255.255.0
gateway 192.168.2.1
dns-search test.com market.test.com support.test.com
dns-nameservers 192.168.2.25 192.168.8.11Порядок поиска доменов (search) влияет на разрешение незавершённых имён при обращении по FQDN или короткому имени.
Статические записи в /etc/hosts
Записи в /etc/hosts имеют приоритет перед DNS-запросами. Пример файла:
127.0.0.1 localhost
127.0.1.1 muo-server
10.0.0.11 server1 server1.test.com vpn
10.0.0.12 server2 server2.test.com mail
10.0.0.13 server3 server3.test.com wwwИспользуйте /etc/hosts для локальной отладки сервисов или когда DNS недоступен.
NSS и /etc/nsswitch.conf
Файл /etc/nsswitch.conf задаёт порядок, в котором система ищет соответствие имени и записи:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4Разбор означенных терминов:
- files — сначала смотрим /etc/hosts
- mdns4_minimal — Multicast DNS (локальная сеть)
- [NOTFOUND=return] — если mdns вернул NOTFOUND, прекращаем дальнейший поиск
- dns — традиционный unicast DNS
- mdns4 — ещё один вариант Multicast DNS
Можно менять порядок для соответствия требованиям сети:
hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4Мосты (Bridging) в Ubuntu
Мост полезен, когда виртуальная машина должна выглядеть на сети как обычный хост с собственным IP. На уровне Linux мост агрегирует пакеты между интерфейсами.
Установка и базовая настройка:
sudo apt install bridge-utilsВ старых системах в /etc/network/interfaces можно создать bridge br0, привязать к нему физический интерфейс и задать IP для br0. В netplan мост настраивается через секцию bridges:
network:
version: 2
renderer: networkd
ethernets:
enp3s0: {}
bridges:
br0:
interfaces: [enp3s0]
addresses: [192.168.1.20/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]После конфигурации поднимите мост командой:
sudo ifup br0
Подсказка: виртуализация (KVM/libvirt) обычно создаёт свои мосты или настраивает бриджинг автоматически — проверьте политики libvirt и netplan/systemd-networkd.
Быстрые команды и шпаргалка (Cheat Sheet)
- Просмотр интерфейсов:
ip addr,ip link,ifconfig -a - Просмотр маршрутов:
ip route show,route -n - Добавить временный адрес:
sudo ip addr add 192.168.1.50/24 dev eth0 - Удалить адрес:
sudo ip addr flush dev eth0 - Поднять/опустить интерфейс:
sudo ip link set dev eth0 up|down - Применить netplan:
sudo netplan apply - Включить DHCP в netplan:
dhcp4: yes - Проверить DNS:
systemd-resolve --statusилиresolvectl status - Посмотреть текущий трафик (интерфейс):
sudo ethtool -S eth0илиsudo iftop -i eth0
Мини-методология для изменений в продакшне
- Оценка: зафиксируйте текущие настройки (
ip addr,ip route,cat /etc/netplan/*,cat /etc/network/interfaces). - Бэкап: сделайте резервные копии конфигов (
/etc/netplan/,/etc/network/interfaces,/etc/hosts,/etc/resolv.conf). - Тест: применяйте изменения в тестовой среде или используйте
sudo netplan try. - Применение: выполняйте изменения в «окне обслуживания» с планом отката.
- Мониторинг: проверяйте доступность сервисов и маршрутов в течение 30–60 минут.
Ролевые чек-листы для команды
Администратор сети:
- Проверить физические подключения и LED индикаторы.
- Сравнить MAC-адреса с документацией.
- Обновить правила udev при необходимости.
Системный администратор:
- Подготовить резервные копии конфигов.
- Протестировать конфигурацию через netplan try.
- Обновить /etc/hosts при необходимости.
DevOps-инженер:
- Сверить промышленные политики безопасности (firewall, iptables/nftables).
- Обеспечить интеграцию с DHCP и внутренним DNS.
Отладка и распространённые ошибки
- Интерфейс не поднимается: проверьте
dmesgиjournalctl -u systemd-networkdдля ошибок драйвера. - Netplan не применяет изменения: проверьте синтаксис YAML (отступы), используйте
sudo netplan --debug apply. - /etc/resolv.conf перезаписывается: найдите, какая служба управляет файлом (resolvconf или systemd-resolved).
- DNS не разрешается только в контейнерах: проверьте конфигурацию сети контейнера и настройки моста.
Безопасность и рекомендации по защите сети
- Минимизируйте публикуемые сервисы на интерфейсах, доступных из интернета.
- Используйте firewalld/ufw или nftables для ограничения доступа по IP/портам.
- Разделяйте управление и рабочий трафик по разным VLAN или интерфейсам.
- Логируйте изменения сетевых конфигураций и храните резервные копии в защищённом хранилище.
Матрица совместимости и советы по миграции
- Ubuntu ≤18.04: часто использует /etc/network/interfaces и ifupdown. ethtool и bridge-utils — стандарт.
- Ubuntu ≥20.04: используется netplan. Генератором конфигурации может быть networkd или NetworkManager.
- Переход с ifupdown на netplan: экспортируйте текущие настройки, переведите в формат YAML и тестируйте через
netplan try.
Совет: оставляйте временные окна отката при миграции сетей. Виртуальные среды (KVM, VMware) иногда требуют дополнительных правил бриджинга.
Когда описанные подходы не работают — примеры и обходы
- Коррупция сетевого менеджера: если NetworkManager конфликтует с netplan, временно назначьте renderer: networkd в YAML или отключите NetworkManager.
- Аппаратная несовместимость: некоторые старые NIC требуют проприетарных драйверов. Ищите в
dmesgи репозиториях производителя. - Контейнеризация: Docker создаёт собственные мосты — убедитесь, что сетевой план не ломает Docker bridge.
Факто-блок: ключевые команды и места конфигурации
- /etc/netplan/*.yaml — основной файл конфигурации в Ubuntu 20.04+
- /etc/network/interfaces — старый формат (Ubuntu 18.04 и ранее или системы с ifupdown)
- /etc/hosts — статические локальные сопоставления имён
- /etc/resolv.conf — DNS-клиент (может быть ссылкой на systemd-resolved)
- ifconfig / ip / route / ethtool / lshw — утилиты для просмотра и временных настроек
Краткий список проверок перед перезагрузкой сети
- Сохранили резервные копии конфигов? (да/нет)
- Проверили синтаксис YAML для netplan? (
netplan try) - Проверили наличие правильных DNS и шлюза? (
ip route,resolvectl status) - Есть план отката (ssh-консоль через другой интерфейс или KVM/IPMI)?
Decision tree для принятия решения о методе конфигурации
flowchart TD
A[Нужна ли постоянная конфигурация?] -->|Да| B{Ubuntu версия >=20.04?}
A -->|Нет| C[Используйте ip/ifconfig для временных настроек]
B -->|Да| D[Используйте netplan YAML и sudo netplan apply]
B -->|Нет| E[Используйте /etc/network/interfaces и ifup/ifdown]
D --> F{Нужен мост?}
E --> F
F -->|Да| G[Добавьте bridge в netplan или bridge-utils в interfaces]
F -->|Нет| H[Настройте интерфейс как обычный ethX]Краткий глоссарий (1-линия)
- ifconfig — утилита для конфигурации сетевых интерфейсов (устаревающая);
- ip — современная утилита управления сетью;
- netplan — YAML-инструмент конфигурации сети в новых Ubuntu;
- ethtool — инструмент для настройки физических свойств NIC;
- bridge-utils — утилиты для управления Linux-bridge;
- resolvconf/systemd-resolved — менеджеры конфигурации DNS.
Итог и рекомендации
Ubuntu Server предлагает гибкие подходы к сетевым настройкам: от простых временных команд до детальной перманентной конфигурации через netplan или /etc/network/interfaces. Всегда делайте резервные копии, тестируйте изменения в нестандартном окне и имейте план отката (например, доступ по KVM/IPMI). Для виртуализированных сред используйте мосты аккуратно и проверяйте совместимость с гипервизором.
Важно помнить: сетевые ошибки легко вывести из строя удалённые серверы. Планируйте изменения и проверяйте все шаги.
Важное: при работе с DNS и /etc/resolv.conf учитывайте, что многие современные системы управляют этим файлом автоматически. Перед постоянными правками определите, какая служба отвечает за DNS в вашей системе.
Краткое резюме в конце:
- Узнайте, какая версия Ubuntu у вас и какой renderer сети используется.
- Используйте netplan в новых релизах и /etc/network/interfaces в старых.
- Делайте бэкапы и тестируйте через
netplan tryили в тестовой среде. - Защитите сервисы через firewall и разделение сетей.