Новости
Семь Чёрных пятниц на неделе — и все в Serverspace!
Serverspace Black Friday
AK
Aleksandr Komarov
28 мая 2021
Обновлено 8 августа 2022

Как настроить несколько сетевых интерфейсов в Ubuntu 18.04

Linux Ubuntu Сети

Для корректной работы нескольких сетевых интерфейсов с публичными IP адресами на Ubuntu 18.04 одновременно не достаточно просто прописать базовые параметры для них в Netplan. Ведь при этом все пакеты будут уходить с сервера через шлюз по умолчанию, а значит и доступности сервера по всем его IP адресам не будет. Это минус маршрутизации на основе адреса получателя. Здесь мы добавим необходимые настройки в Netplan для корректной работы нескольких сетевых интерфейсов в Ubuntu 18.04.

Отключение автонастройки Netplan

При создании сервера Ubuntu 18.04 в Serverspace или добавлении к нему новых сетевых интерфейсов из панели управления происходит автоматическая настройка параметров подключений. Кроме того, во время перезагрузки системы файл конфигурации Netplan тоже перезаписывается актуальными параметрами. Поэтому любые его изменения, сделанный в ручном режиме, будут потеряны. Чтобы этого избежать, можно отключить данную функцию. Для начала убедитесь, что Вы добавили необходимое количество сетевых адаптеров к серверу, а затем создайте файл:
nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
Со следующим содержимым:
network: {config: disabled}
После сохранения файла функция автоматической настройки сетевых интерфейсов будет отключена.

Маршрутизация для несколько сетевых интерфейсов

Задача обеспечения доступности сервера через несколько сетевых подключений и IP адресов будет решена с использованием маршрутизации на основе политик, а именно на основе адреса отправителя. Таким образом, каждый пакет будет отправлен с сервера через тот же адрес, через который и попал на него. В первую очередь нужно создать таблицы маршрутизации для данной цели, а для этого нужен пакет iproute2. Если он отсутствует в системе, необходимо его установить:

apt-get install iproute2

Теперь откройте файл:

nano /etc/iproute2/rt_tables

В его конец необходимо добавить столько таблиц, сколько сетевых интерфейсов настраивается. Одна таблица - это отдельная строка, состоящая из двух чисел, разделенных пробелом. Первое число - это приоритет, а второе - это имя таблицы. Например:

50 50
51 51
52 52

Таким образом, мы добавим 3 таблицы. Теперь пришло время добавить настройки маршрутизации в Netplan, откройте его конфиг по пути /etc/netplan/ с расширением .yaml (имя файла может отличаться в Вашей системе):

nano /etc/netplan/50-cloud-init.yaml

Netplan чувствителен к форматированию в файле конфигурации. Очень важно соблюсти правильное количество пробелов и не использовать табуляции, иначе результат не пройдёт проверку. Корректный пример приведен ниже. В нём показан блок настроек для одного интерфейса (enp0s5), такие же блоки Вы увидите в конфиге для каждого из подключений. В каждый из блоков надо добавить настройки routes и routing-policy, а остальные настройки оставить как есть. Расшифровка добавляемых значений:

  • to - IP подсети назначения любой - 0.0.0.0/0
  • via - IP шлюза текущего сетевого подключения
  • table - имя одной из добавленных в rt_tables таблиц. Должно совпадать в routes и routing-policy каждого подключения. Но для разных интерфейсов - разные таблицы.
  • from - IP адрес данного интерфейса
  • priority - можно не менять

network:
version: 2
ethernets:
enp0s5:
addresses:
- 11.22.33.44/24
gateway4: 11.22.33.1
match:
macaddress: 00:99:88:77:66:55
mtu: 1500
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
- 8.8.4.4
search: []
set-name: enp0s5
routes:
- to: 0.0.0.0/0
via: 11.22.33.1
table: 50
routing-policy:
- from: 11.22.33.44
table: 50
priority: 300

После завершения редактирования конфигурации, убедимся в ее корректности:

netplan generate

Если вывод пустой, значит всё сделано верно. Если же есть ошибки, Вы увидите нечто подобное:

/etc/netplan/50-cloud-init.yaml:24:1: Invalid YAML: tabs are not allowed for indent:
- to: 0.0.0.0/0
^

В данном примере обнаружены табуляции. После исправления ошибок и успешного прохождения проверки примените изменения:

netplan apply

Теперь сервер будет доступен по всем настроенным таким образом IP адресам.

Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
050000 г. Алматы пр. Сейфуллина, д. 502
+7 (777) 555-36-66
ООО «ИТГЛОБАЛКОМ ЛАБС»