Вопрос или проблема
У меня есть новый сервер с чистой установкой 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-адресами без конфликта маршрутов. Помните, что важно удалять ненужные параметры, такие как вторичные шлюзы, если сеть не требует их использования. Это упростит вашу конфигурацию и повысит ее надежность. Если у вас возникнут дополнительные вопросы по настройке, не стесняйтесь их задавать.