Настройка сети на Ubuntu Server: полный справочник

Изучая администрирование серверов Ubuntu, важно уметь настраивать сеть через командную строку. Это включает понимание Ethernet-интерфейсов, IP-адресации, мостов (bridging), разрешения имён и инструментов диагностики. Это руководство даёт практические инструкции и шаблоны, которые подходят для Ubuntu 18.04, 20.04 и более новых версий.
Основные понятия
- Ethernet-интерфейс: физический или виртуальный интерфейс сети (например, eth0, enp0s3, ens3). Короткая инфо-строка: логическое имя интерфейса привязано к аппаратному MAC-адресу через udev или к системным правилам.
- IP-адресация: статическая или динамическая (DHCP). Статическая конфигурация сохраняется в конфигурационных файлах, временная — через ip/ifconfig.
- Netplan: современный инструмент Ubuntu для генерации конфигураций back-end’ов (systemd-networkd или NetworkManager) из YAML-файлов в /etc/netplan/.
- /etc/network/interfaces: традиционный механизм конфигурации сетей на Debian/Ubuntu; всё ещё используется на старых системах или при специфических настройках.
- DNS и NSS: разрешение имён управляется resolvconf / systemd-resolved, /etc/resolv.conf, /etc/hosts и /etc/nsswitch.conf.
Важно: всегда создавайте резервные копии файлов конфигурации перед изменениями.
Управление Ethernet-интерфейсами на Ubuntu
Ethernet-интерфейс — это аппаратный или виртуальный адаптер, позволяющий подключиться к сети. Современные Ubuntu используют предсказуемые имена интерфейсов (enp…, ens…, eno…) вместо старых eth0, eth1, но оба варианта встречаются.
Просмотр доступных интерфейсов
Чтобы увидеть список интерфейсов, используйте ip или ifconfig:
ip link show
# или (на системах с ifconfig)
ifconfig -a | grep -E "^([a-zA-Z0-9]+)"Пример вывода может содержать строки с именами интерфейсов и статусом.
Подробная информация об устройстве
Команда lshw показывает свойства аппаратных устройств, драйверы и возможности сетевого контроллера:
sudo lshw -class networkУправление логическими именами интерфейсов через udev
Файл /etc/udev/rules.d/70-persistent-net.rules (если присутствует) позволяет жестко назначать логические имена интерфейсам по MAC-адресу. Пример записи может выглядеть так:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="eth0"Шаги:
- Узнайте MAC через ip link show или lshw.
- Отредактируйте правила udev, замените NAME на желаемое имя.
- Перезагрузите систему или перезапустите udev, чтобы применить изменения.
Важно: современные дистрибутивы чаще используют предсказуемые имена и systemd/udev, так что файл 70-persistent-net.rules может отсутствовать.
Конфигурация Ethernet-интерфейсов в Ubuntu 18.04 и ранее
На старых системах основной файл конфигурации — /etc/network/interfaces. Для просмотра или временной настройки параметров используется ethtool.
Просмотр и изменение настроек с помощью ethtool
ethtool показывает auto-negotiation, режим дуплекса и скорость порта:
sudo apt update && sudo apt install ethtool
sudo ethtool eth0Изменения, сделанные через ethtool, временные. Чтобы сделать их постоянными, добавьте соответствующую команду в последовательность запуска, например в /etc/network/interfaces или в системный unit.
Пример добавления команды в /etc/network/interfaces для постоянной настройки (фрагмент):
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
post-up /sbin/ethtool -s eth0 speed 1000 duplex full autoneg onПримечание: в примере выше используется параметр speed 1000 (Мбит/с). Подставляйте значения, совместимые с оборудованием.
Конфигурация Ethernet-интерфейсов в Ubuntu 20.04 и новее
Начиная с 18.04/20.04, Ubuntu использует Netplan. Его конфигурации находятся в /etc/netplan/ и представляют собой YAML-файлы, которые генерируют настройки для systemd-networkd или NetworkManager.
Основные команды и порядок действий:
- Посмотрите файлы в папке /etc/netplan:
ls /etc/netplan
# Пример вывода: 00-installer-config.yaml- Создайте резервную копию файла перед правками:
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.copy- Отредактируйте YAML-файл любым редактором:
sudo vim /etc/netplan/00-installer-config.yamlПример статической конфигурации Netplan:
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: no
addresses: [192.168.10.10/24]
gateway4: 192.168.10.1
nameservers:
search: [example.com, corp.example.com]
addresses: [192.168.10.53, 8.8.8.8]- Примените изменения:
sudo netplan apply- Проверьте текущие адреса и состояние интерфейсов:
ip addr
ip routeСовет: при отладке используйте sudo netplan –debug apply, чтобы увидеть ошибки в YAML и процесс применения.
IP-адресация: временные и постоянные настройки
Инструменты ip, ifconfig и route позволяют временно изменить сетевые параметры. Эти изменения пропадают после перезагрузки, если не сохранены в конфигурационных файлах.
Временная настройка IP
Добавление адреса временно:
sudo ip addr add 192.168.10.55/24 dev ens3Удаление адреса:
sudo ip addr del 192.168.10.55/24 dev ens3Команда ifconfig (устаревшая, но всё ещё используемая):
sudo ifconfig eth0 192.168.10.55 netmask 255.255.255.0 upУстановка маршрута по умолчанию
sudo ip route add default via 192.168.10.1 dev ens3
# или старый вариант
sudo route add default gw 192.168.10.1 eth0Проверка таблицы маршрутов:
route -n
ip route showDNS для временных конфигураций
Файл /etc/resolv.conf управляется systemd-resolved или resolvconf. Для быстрой временной проверки можно редактировать /etc/resolv.conf вручную, но изменения могут быть перезаписаны.
# vim /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4Если вы используете systemd-resolved, предпочтительнее изменять настройки через Netplan или через systemd-resolved конфигурации.
Сброс временных настроек
Чтобы убрать все адреса на интерфейсе:
sudo ip addr flush dev ens3Обратите внимание: это не изменяет /etc/resolv.conf, его нужно очистить отдельно при необходимости.
Динамическая (DHCP) и статическая адресация
На системах с /etc/network/interfaces пример для DHCP:
auto eth0
iface eth0 inet dhcpАктивировать или деактивировать интерфейс вручную:
sudo ifup eth0
sudo ifdown eth0На Netplan для DHCP достаточно указать dhcp4: true:
network:
version: 2
ethernets:
ens3:
dhcp4: trueДля статической конфигурации в /etc/network/interfaces:
auto eth0
iface eth0 inet static
address 192.168.2.2
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 192.168.2.25 192.168.8.11
dns-search test.com market.test.com support.test.comКонфигурирование loopback-интерфейса
Loopback-интерфейс lo обычно настроен автоматически и присутствует в /etc/network/interfaces:
auto lo
iface lo inet loopbackРазрешение имён (DNS) и NSS
Разрешение имён в Linux — процесс преобразования имён хостов в IP-адреса и обратно. На Ubuntu это сочетание нескольких механизмов: /etc/hosts, локальные и сетевые резолверы, systemd-resolved и конфигурация NSS (/etc/nsswitch.conf).
Настройка DNS-клиента
В современных системах /etc/resolv.conf может быть символической ссылкой на /run/systemd/resolve/stub-resolv.conf или на /run/resolvconf/resolv.conf. При использовании resolvconf изменения из /etc/network/interfaces или DHCP-клиента обновляют /etc/resolv.conf автоматически.
Пример настройки DNS в /etc/network/interfaces (если используется resolvconf):
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Порядок поиска доменов влияет на разрешение незавершённых имён; сначала будет использоваться test.com, затем market.test.com и т.д.
Статические хосты
Файл /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Эта строка означает: сначала проверить /etc/hosts (files), затем Multicast DNS (mdns4_minimal) и при NOTFOUND остановиться, иначе продолжить с dns, затем mdns4. Порядок можно менять под нужды сети.
Мостирование (Bridging)
Мост (bridge) полезен для объединения нескольких интерфейсов в один уровень L2, например при размещении виртуальных машин, которым нужен прямой доступ в сеть.
Установка и базовая настройка:
sudo apt update && sudo apt install bridge-utilsДля старых систем /etc/network/interfaces пример конфигурации:
auto br0
iface br0 inet static
address 192.168.50.10
netmask 255.255.255.0
gateway 192.168.50.1
bridge_ports eth0
bridge_stp off
bridge_fd 0Запустить мост:
sudo ifup br0На Netplan мост создаётся через ключ bridges:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
bridges:
br0:
interfaces: [eth0]
addresses: [192.168.50.10/24]
gateway4: 192.168.50.1
nameservers:
addresses: [192.168.50.2]Проверка мостов:
\nbridge link brctl show
Примечание: при использовании KVM/QEMU мосты обычно нужны, чтобы виртуальные машины получили IP в той же сети, что и хост.
Когда настройки сетей не работают: типичные ситуации и причины
- Неправильный формат YAML в Netplan. Симптом: netplan apply выдаёт ошибку. Решение: sudo netplan –debug apply.
- Конфликт имени интерфейса (udev присваивает другое имя). Проверьте ip link show и udev-правила.
- /etc/resolv.conf переписывается systemd-resolved. Проверьте, куда указывает /etc/resolv.conf.
- DHCP-сервер не отвечает. Проверьте связь с сервером и логи DHCP-клиента (journalctl -u systemd-networkd или dhclient).
- Аппаратная несовместимость скорости/дуплекса. Посмотрите ethtool и логи dmesg.
Чек-листы по ролям
Чек-лист для системного администратора:
- Снять резервную копию конфигурационных файлов: /etc/netplan/*, /etc/network/interfaces, /etc/hosts, /etc/resolv.conf
- Проверить текущую конфигурацию: ip addr, ip route, ss -tun
- Применить изменения в тестовой среде при возможности
- Применить изменения и мониторить логи: journalctl -u systemd-networkd -f
Чек-лист для сетевого инженера:
- Проверить таблицы маршрутизации и правила фаервола
- Убедиться в согласованности VLAN/MTU на всех узлах
- Проверить ARP и MAC-таблицы на коммутаторах
Чек-лист для DevOps-инженера:
- Версионировать конфигурации (git)
- Автоматизировать netplan apply через CI при тестировании
- Подготовить rollback-скрипт
Runbook при потере сетевого доступа
- Подключитесь к консоли или KVM (если доступно). Если сеть полностью недоступна, дистанционно откатить изменения невозможно.
- Проверить состояние интерфейсов:
ip link
ip addr
ip route- Проверить логи сетевых сервисов:
journalctl -u systemd-networkd -b --no-pager
journalctl -u NetworkManager -b --no-pager- Откатить изменения:
- Если был изменён /etc/netplan/00-installer-config.yaml, заменить на резервную копию и выполнить sudo netplan apply.
- Если использовались /etc/network/interfaces, восстановить из копии и выполнить sudo ifdown
&& sudo ifup .
- Если ничего не помогает, перезагрузите систему чисто через консоль и проверьте исходные состояния.
Критерии приёмки
- Сеть поднимается автоматически после перезагрузки без ручного вмешательства.
- Интерфейс получает IP в нужном диапазоне и маршрут по умолчанию корректен.
- Разрешение имён работает для внутренних и внешних ресурсов.
- Логи не содержат критических ошибок сетевых демонов.
Шпаргалка команд и приёмы диагностики
- Просмотр интерфейсов: ip addr, ip link
- Маршруты: ip route, route -n
- DNS: systemd-resolve –status, cat /etc/resolv.conf
- L2 и мосты: brctl show, bridge link
- Аппаратная информация: sudo lshw -class network
- Настройки порта: sudo ethtool eth0
- Файлы конфигурации: /etc/netplan/*.yaml, /etc/network/interfaces, /etc/hosts, /etc/nsswitch.conf
- Применение Netplan: sudo netplan apply, sudo netplan –debug apply
Миграция с /etc/network/interfaces на Netplan
- Сохраняем текущие файлы:
sudo cp /etc/network/interfaces /etc/network/interfaces.bak
sudo cp -r /etc/network/interfaces.d /etc/network/interfaces.d.bak- Создаём файл /etc/netplan/01-migrate.yaml с эквивалентными настройками (см. пример выше).
- Применяем: sudo netplan try — это позволит протестировать настройки и автоматически откатить через таймаут, если соединение потеряется.
- Если всё OK, sudo netplan apply.
Альтернативные подходы
- NetworkManager: удобен на десктопах и в динамичных окружениях, где часто меняются сети.
- systemd-networkd: лёгкий и быстрый для серверов, хорошо интегрируется с Netplan.
- Конфигурация через cloud-init: используется в облачных образах для первоначальной настройки сетей.
Безопасность и приватность
- Ограничьте доступ по SSH только с доверенных адресов и используйте ключи.
- Не храните секреты (пароли, ключи API) в открытых конфигурационных файлах.
- Минимизируйте открытые порты и применяйте политики firewall (ufw, iptables/nftables).
- При использовании DHCP учтите, что адреса могут измениться; привязывайте важные сервисы к DNS-именам или резервным адресам.
Когда этот подход не подходит
- В сетях с централизованным управлением конфигурацией (SDN) ручные настройки на хостах могут конфликтовать с политиками контроллера.
- Если на узлах используется собственный конфиг-менеджер, применяющий свои правила, ручные изменения будут перезаписаны.
Модель принятия решений (Mermaid)
flowchart TD
A[Начальная задача: изменить сеть] --> B{Изменение локальной или глобальной?}
B -->|Локальная| C[Использовать ip/netplan try]
B -->|Глобальная| D[Согласовать с сетью/инженером]
C --> E{Тест пройден?}
E -->|Да| F[Применить изменения и мониторить]
E -->|Нет| G[Откатить и отладить]
D --> FШаблоны и примеры
- Пример netplan для DHCP + static DNS:
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: true
nameservers:
addresses: [8.8.8.8, 192.168.10.53]- Пример static + bridge (Netplan):
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
bridges:
br0:
interfaces: [eth0]
addresses: [10.10.0.10/24]
gateway4: 10.10.0.1
nameservers:
addresses: [10.10.0.2]Контрольные тесты и критерии приёмки
- Тест 1: Перезагрузить сервер. Ожидаемый результат: сеть поднимается без ручного вмешательства.
- Тест 2: Пропинговать gateway и публичный IP (например, 8.8.8.8). Ожидаемый результат: успешный отклик.
- Тест 3: Разрешение имён внутреннего FQDN. Ожидаемый результат: корректный IP согласно /etc/hosts или DNS.
- Тест 4: Проверка службы после применения ethtool-изменений, если они важны: скорость и дуплекс совпадают с ожиданием.
Краткое резюме
- Netplan — основной инструмент для Ubuntu 20.04 и новее; /etc/network/interfaces всё ещё используется на старых инсталляциях.
- Временные изменения делаются через ip, ifconfig и ethtool; постоянные — через конфигурационные файлы.
- /etc/hosts, /etc/resolv.conf и /etc/nsswitch.conf управляют порядком и механикой разрешения имён.
- Всегда делайте резервные копии и используйте netplan try для безопасного применения изменений.
Important: перед массовыми изменениями на продакшн-серверах согласуйте план с командой сетевых инженеров.
Notes: этот справочник покрывает практические и проверяемые шаги без привязки к конкретному облачному провайдеру.
Похожие материалы
Создать Wi‑Fi хотспот на Linux — linux-wifi-hotspot
Восстановление данных с неисправного жёсткого диска
Camera Control на iPhone 16 — руководство
Стриминг видео из Dropbox на любой компьютер
Умный MP3 дверной звонок на ESPHome