Как настроить netplan с двумя сетевыми картами с разными статическими IP/шлюзами.

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

наш IT-специалист настроил сеть для нашего сервера Ubuntu 22.04 с:

  • enp1so: карта, которая используется для внешнего мира.
    • она имеет свой статический IP (147.100.157.194 маска подсети 255.255.255.248 /29) и GTW (147.100.157.193)
    • она также должна обрабатывать исходящий трафик (например, для обновлений apt)
  • enp69s0: карта для “управления” сервером (SSH, ограничено VPN)
    • она имеет свой IP (147.100.157.202 маска подсети 255.255.255.248 /29) и GTW (147.100.157.201)
    • используется только для подключения к серверу

Проблема в том, что наш IT-специалист не говорит на языке Linux, а я не говорю на языке сетей.

Я много пытался понять “маршруты”, “таблицы”, “политику маршрутизации”, “от” и “до”.. но это выходит за рамки моего понимания…

Я только понял, что мне нужно настроить yaml файл в /etc/netplan, но все мои усилия привели к некоторым проблемам (если не к потере сервера).

Как мне настроить минимальный yaml файл, который служит вышеуказанным целям?

Будет ли это работать или снова нарушит подключение моего сервера?

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      # PROD карта/IP (только https и NFS)
      dhcp4: no
      addresses:
        - 147.100.157.194/29
      routes:
        - to: default
          via: 147.100.157.193
      nameservers:
          search: [inra.local]
          addresses: [147.100.157.242, 147.100.166.31]
    enp69s0:
      # MGM карта/IP (только SSH из VPN)
      dhcp4: no
      addresses:
        - 147.100.157.202/29

В настоящее время у нас есть следующая неисправная конфигурация. “Неисправная” потому, что сервер доступен, но не может установить соединение с внешним миром (например, для обновлений apt):

Неисправная конфигурация:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
# PROD карта/IP (только https)
      dhcp4: no
      addresses:
        - 147.100.157.194/29
#      gateway4: 147.100.157.193
      routes:
        - to: 0.0.0.0/0
#        - to: 147.100.157.192/29
          via: 147.100.157.193
          table: 100
        - to: 147.100.157.224/29
          via: 147.100.157.193
          table: 100
        - to: default
          via: 147.100.157.193
          table: 100
      routing-policy:
        - from: 147.100.157.194/29
          table: 100
      nameservers:
          search: [inra.local]
          addresses: [147.100.157.242, 147.100.166.31]
    enp69s0:
# MGM карта/IP (только SSH из VPN)
#      activation-mode: off
      dhcp4: no
      addresses:
        - 147.100.157.202/29
#      gateway4: 147.100.157.201
      routes:
#        - to: 147.100.157.200/29
        - to: 0.0.0.0/0
          via: 147.100.157.201
          table: 200
      routing-policy:
        - from: 147.100.157.202/29
          table: 200
      nameservers:
          search: [inra.local]
          addresses: [147.100.157.242, 147.100.166.31]

[EDIT]

Или возможно этот другой вариант (из этой страницы, где написано “Это позволяет клиентам из любой сети подключаться к другой и позволяет ответу поступать с правильного интерфейса.” что меня немного пугает) :

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      # PROD карта/IP (только https)
      dhcp4: no
      addresses:
        - 147.100.157.194/29
      routes:
        - to: default
          via: 147.100.157.193
        - to: 147.100.157.0/29
          via: 147.100.157.193
          table: 100
      routing-policy:
        - from: 147.100.157.0/29
          table: 100          
      nameservers:
          search: [inra.local]
          addresses: [147.100.157.242, 147.100.166.31]
    enp69s0:
      # MGM карта/IP (только SSH из VPN)
      dhcp4: no
      addresses:
        - 147.100.157.202/29
      routes:
        - to: 147.100.157.0/29
          via: 147.100.157.201
          table: 200
      routing-policy:
        - from: 147.100.157.0/29
          table: 200

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

Настройка сети на сервере Ubuntu с помощью Netplan может показаться сложной, особенно когда необходимо корректно управлять несколькими сетевыми интерфейсами с разными статическими IP-адресами и шлюзами. Рассмотрим детально, как настроить Netplan для вашего случая, используя две сетевые карты: enp1s0 для внешнего подключения и enp69s0 для управления сервером через VPN.

Понимание проблемы

Вы хотите задать два сетевых интерфейса на вашем сервере Ubuntu 22.04:

  1. enp1s0: Используется для взаимодействия с внешним миром, имеет статический IP и будет обслуживать исходящий трафик.

    • IP: 147.100.157.194/29
    • Шлюз: 147.100.157.193
  2. enp69s0: Используется для управления сервером через VPN, имеет статический IP, но не должен использоваться для исходящего трафика.

    • IP: 147.100.157.202/29
    • Шлюз: 147.100.157.201

Настройка файла Netplan

Для правильной настройки сети, вам необходимо создать или отредактировать YAML файл в /etc/netplan/, чаще всего это 01-netcfg.yaml, с содержанием, соответствующим вашему сетевому оборудованию и требованиям.

Пример файла конфигурации:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: no
      addresses:
        - 147.100.157.194/29
      gateway4: 147.100.157.193
      nameservers:
          search: [inra.local]
          addresses: [147.100.157.242, 147.100.166.31]
    enp69s0:
      dhcp4: no
      addresses:
        - 147.100.157.202/29

#      ВАЖНО: Общая маршрутизация и политики маршрутизации
  routing:
    policy:
      - from: 147.100.157.202/29
        table: 200

    table:
      200:
        - to: 0.0.0.0/0
          via: 147.100.157.201

Объяснение конфигурации

  1. Сетевая карта enp1s0:

    • Устанавливается статический IP-адрес и основной шлюз для маршрутизации всего исходящего трафика.
    • Указаны DNS-сервера для разрешения имен.
  2. Сетевая карта enp69s0:

    • Она имеет статический IP, но не задан общий шлюз, чтобы избежать использования этого интерфейса для исходящего трафика по умолчанию.
  3. Политики маршрутизации:

    • Созданы политики маршрутизации, которые определяют, что трафик исходящий из сети enp69s0 должен использовать таблицу маршрутизации 200, со своим шлюзом, если требуется.

Применение настроек

После редактирования файла конфигурации Netplan, примените настройки командой:

sudo netplan apply

Убедитесь в том, что внесённые изменения работают как ожидается, проверив сетевые подключения сервером:

  • Выполните команду ip a для проверки применённых IP-адресов.
  • Используйте ip route для проверки настроек маршрутизации.

Завершение

Понимание настроек маршрутизации и корректная их реализация с помощью Netplan поможет вам достичь нужных результатов. Это решение изолирует серверные операции управления и взаимодействие с внешним миром, что улучшает безопасность и управляемость.

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

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

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