Нужна помощь в настройке netplan для двух сетевых интерфейсов с статическими IP-адресами на отдельных сетях.

Вопрос или проблема

У меня есть новый сервер с чистой установкой Ubuntu 20.04 LTS. У меня есть один интерфейс, подключенный к нашей основной корпоративной сети со статическим IP-адресом, и теперь мне нужно подключить второй интерфейс к отдельной сетью backline, используя статический IP-адрес.

172.10.1.0/24 <------> [eno1np0:172.1.1.10] [eno2np1:192.168.1.10] <------> 192.168.1.0/24
public-router           server_NIC_1         server_NIC_2                  backline-router

Я много лет настраивал сеть с помощью /etc/network/interfaces и ifconfig, и завис на конфигурации netplan. Я читаю документацию, смотрю примеры и провожу эксперименты без успеха. Вот содержимое /etc/netplan/00-installer-config.yaml:

# Это конфигурация сети, написанная 'subiquity'
network:
  ethernets:
    eno1np0:
      addresses:
      - 172.10.1.10/24
      gateway4: 172.10.1.1
      nameservers:
        addresses:
        - 172.10.1.32
        - 172.10.1.33
        search:
        - mycompany.com
    eno2np1:
      addresses:
      - 192.168.1.10/24
      gateway4: 192.168.1.1
  version: 2

Есть ли мысли о том, что я делаю не так?

  • Джон

IP-адрес второго NIC неправильный. На самом деле он некорректен, так как в нем только три октета:

eno2np1:
  addresses:
  - 192.168.10/24
  gateway4: 192.168.1.1

Думаю, что netplan apply должен поймать такую ошибку.

Если сеть backline не обеспечивает подключение к интернету, вам не следует настраивать для нее строку gateway4:.

Если сеть backline состоит только из одного сегмента 192.168.1.0/24, то вам вообще не нужен шлюз или определение маршрута на интерфейсе сети backline – и на самом деле не следует его указывать.

Если есть другие сегменты сети, к которым можно получить доступ через шлюз сети backline, то вы должны создать более конкретную запись маршрута для них. Например, если есть сегмент сети 192.168.2.0/24, который доступен через шлюз 192.168.1.1, конфигурация для eno2np1 должна выглядеть следующим образом:

eno2np1:
  addresses:
  - 192.168.1.10/24
  routes:
  - to: 192.168.2.0/24
    via: 192.168.1.1

Если есть несколько отдельных сегментов сети, доступных через шлюз backline, вы можете объединить их записи маршрутов, если это не конфликтует с сегментами сети, доступными через интерфейс со стороны публичной сети.

Например, если вы знаете, что у вас есть 30 различных сегментов сети 192.168.*.*/24 в вашей сети backline и в будущем может быть добавлено еще больше, и нет сегментов 192.168.*.*, используемых на публичной стороне, вы могли бы обрабатывать все текущие и будущие сегменты сети backline с помощью одного определения маршрута:

  routes:
  - to: 192.168.0.0/16
    via: 192.168.1.1

В течение многих лет я боролся с linux (особенно с ubuntu), где никогда не удавалось заставить его работать с двумя шлюзами по умолчанию. Обычно я использую мой главный интерфейс с шлюзом и другой интерфейс с добавленными конкретными маршрутами. Эти маршруты необходимы для обратного трафика. Это работает, но немного неудобно поддерживать таблицу маршрутов для всех пунктов назначения.

Я надеялся, что в ubuntu 20.x это поведение изменено, но, похоже, нет.

Ответ или решение

Чтобы правильно настроить сетевые интерфейсы (NIC) на сервере с Ubuntu 20.04 LTS используя netplan, вам нужно учитывать несколько важных моментов, связанных с конфигурацией IP-адресов и маршрутизации для двух разных сетей. Давайте разберем шаги по конфигурации более подробно.

Шаг 1: Исправление ошибки в конфигурации IP-адреса

Первое, на что стоит обратить внимание, это ошибка в конфигурации IP-адреса для второго интерфейса (eno2np1). Ваша текущая конфигурация выглядит следующим образом:

eno2np1:
  addresses:
  - 192.168.10/24
  gateway4: 192.168.1.1

Это неправильный указатель адреса, поскольку в IP-адресе не хватает последнего октета. Исправьте это следующим образом:

eno2np1:
  addresses:
  - 192.168.1.10/24

Шаг 2: Удаление параметра gateway4 для второго интерфейса

Ваша вторая сеть не требует шлюза, поскольку предназначена только для локальной связи между устройствами в сети 192.168.1.0/24 (предполагается, что бэклайн-сеть не имеет доступа к интернету). Следовательно, не следует задавать параметр gateway4 для второго интерфейса. Таким образом, ваша финальная конфигурация будет выглядеть следующим образом:

network:
  version: 2
  ethernets:
    eno1np0:
      addresses:
      - 172.10.1.10/24
      gateway4: 172.10.1.1
      nameservers:
        addresses:
        - 172.10.1.32
        - 172.10.1.33
        search:
        - mycompany.com
    eno2np1:
      addresses:
      - 192.168.1.10/24

Шаг 3: Дополнительные параметры маршрутизации

Если у вас есть необходимость маршрутизировать трафик из второго интерфейса в другие сети (например, 192.168.2.0/24, которая доступна через 192.168.1.1), вы можете добавить маршруты:

    eno2np1:
      addresses:
      - 192.168.1.10/24
      routes:
      - to: 192.168.2.0/24
        via: 192.168.1.1

Если вы ожидаете множество подсетей в своем бэклайн-нетверке, то можно создать более универсальный маршрут, чтобы избежать частых изменений конфигурации:

      routes:
      - to: 192.168.0.0/16
        via: 192.168.1.1

Шаг 4: Применение конфигурации

После внесения всех необходимых изменений в файл конфигурации /etc/netplan/00-installer-config.yaml, вам необходимо применить конфигурацию с помощью команды:

sudo netplan apply

Заключение

Теперь ваш сервер сможет корректно обрабатывать трафик через оба сетевых интерфейса с правильными IP-адресами без конфликта маршрутов. Помните, что важно удалять ненужные параметры, такие как вторичные шлюзы, если сеть не требует их использования. Это упростит вашу конфигурацию и повысит ее надежность. Если у вас возникнут дополнительные вопросы по настройке, не стесняйтесь их задавать.

Оцените материал
Добавить комментарий

Капча загружается...