Ubuntu. Настройка сети

03.11.2023

Теги: CLILinuxUbuntuКонфигурацияЛокальнаяСетьНастройка

Есть несколько способов настройки сети в современных версиях Ubuntu. В настоящее время используют Network Manager, Systemd Networkd и Netplan. В прошлом за настройку отвечал файл конфигурации /etc/network/interfaces.

Файл /etc/network/interfaces

Интерфейсы, настроенные с помощью файла /etc/network/interfaces, можно включать и выключать с помощью команд ifup и ifdown.

$ sudo ifdown enp7s0
$ sudo ifup enp7s0

При внесении больших изменений в сеть — например, при добавлении виртуальных интерфейсов — можно повторно инициализировать сеть, перезапустив службу

$ sudo systemctl restart networking.service

При использовании DHCP файл /etc/network/interfaces будет совсем простым

iface lo inet loopback 

auto eth0
iface eth0 inet dhcp

Директива iface описывает сетевой интерфейс, inet означает семейство интернет-протоколов (IPv4), lo означает виртуальный сетевой интерфейс, которому мы назначаем ip-адрес 127.0.0.1. Директива auto eth0 предписывает автоматически включить сетевой интерфейс eth0 во время загрузки.

При назначении статического ip-адреса файл /etc/network/interfaces будет таким

iface lo inet loopback 

auto eth0
iface eth0 inet static
address 192.168.1.100 
netmask 255.255.255.0 
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4

Есть возможность выполнить команду или скрипт перед или после включения-выключения интерфейса

pre-up command
post-up command

pre-down command
post-down command

Служба systemd-networkd

Перед настройкой и активацией systemd-networkd.service потребуется отключить применение сетевых настроек из файла /etc/network/interfaces. Для этого достаточно просто переименовать данный конфигурационный файл.

$ sudo mv /etc/network/interfaces /etc/network/interfaces.save

Файлы конфигурации systemd-networkd.service находятся в директории /etc/systemd/network и могут быть трех видов

  • *.link — конфигурация физических параметров интерфейсов (имя, MAC, MTU и т.д.)
  • *.network — конфигурация сети (IP-адрес, DHCP, маршруты, DNS и т.д.)
  • *.netdev — для настройки виртуальных интерфейсов (VLAN, мосты, туннели, VPN и т.п.)

Файлы *.link в обязательном порядке создавать необходимости нет. Они нужны, когда необходимо изменить физические параметры интерфейсов. Например, если не устраивает системное именование интерфейсов, управляемое udev, то можно прописать новое правило именования интерфейса, отталкиваясь от его MAC-адреса или адреса на шине PCI.

Пример конфигурационного файла /etc/systemd/network/90-nic1-port0.link, в котором изменяется имя интерфейса с определённым MAC адресом

[Match]
MACAddress=04:01:50:23:1f:02
 
[Link]
Name=nic1-port0

Пример конфигурационного файла /etc/systemd/network/80-lan0-dhcp.network для настройки интерфейса eth0 с помощью DHCP

[Match]
Name=eth0
 
[Network]
DHCP=ipv4
LinkLocalAddressing=no

Опция LinkLocalAddressing поможет избежать появления в системе IPv6 адреса, если есть желание отключить IPv6 в системе полностью.

Обратите внимание на то, что если мы изменили имя интерфейса с помощью *.link файла, как в примере выше, то при последующей настройке этого интерфейса в *.network файле, в директиве Name нужно использовать именно изменённое имя интерфейса.

Пример конфигурационного файла /etc/systemd/network/80-lan0-dhcp.network для настройки IPv4/v6 на всех интерфейсах, имена которых подпадают под маску eth*, с помощью DHCP

[Match]
Name=eth*
 
[Network]
DHCP=ipv4
DHCP=ipv6

Пример конфигурационного файла /etc/systemd/network/50-lan0-static.network для статической настройки интерфейса enp8s0

[Match]
Name=enp8s0
 
[Network]
Description=Local network
Address=192.168.1.20/24
Gateway=192.168.1.1
DNS=192.168.1.1 192.168.2.1
Domains=sub1.holding.com sub2.holding.com
LinkLocalAddressing=no

То есть, для минимальной конфигурации сети, например, с указанием статического ip-адреса на основном интерфейсе сервера, нам достаточно настроить один *.network файл.

Включаем автоматический запуск службы systemd-networkd при старте системы

$ sudo systemctl enable systemd-networkd.service

Запускаем службу

$ sudo systemctl start systemd-networkd

Проверяем статус интерфейсов

$ networkctl list

Проверяем статус настроек сети

$ networkctl status

Проверяем лог службы

$ journalctl -u systemd-networkd.service

Netplan

Netplan — новый уровень абстракции над сетевыми менеджерами. В Ubuntu Server для настроки сети используется systemd-networkd.service, в Ubuntu Desktop для той же цели используется NetworkManager.service, а завтра может появится что-то еще.

Все конфигурационные файлы Netplan находятся в директории /etc/netplan. Во время запуска системы, конфигурация Netplan преобразуется в конфигурацию той службы, которая будет управлять сетью и помещается в каталог /run. По умолчанию в Ubuntu Desktop есть только один конфигурационный файл со следующим содержимым.

$ cat /etc/netlan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

Первые две строчки конфигурации стандартны. Первая указывает, что мы будем иметь дело с сетью, а вторая указывает версию стандарта конфигурации, которая будет использоваться. Третья строка означает, что управление всей сетью передаётся NetworkManager.

Сетевой интерфейс enp0s3 получает все настройки от DHCP-сервера

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes

Переопределим часть настроек, которые приходят от DHCP-сервера

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes
      dhcp4-overrides:
        use-dns: no
        use-domains: no
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

Формат YAML допускает блочный и строчный формат для списков

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes
      dhcp4-overrides:
        use-dns: no
        use-domains: no
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Теперь для интерфейса enp0s3 назначим статический ip-адрес

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.1.10/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

Поиск: CLI • Linux • Ubuntu • Конфигурация • Локальная сеть • Настройка

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.