UBUNTU 18.04 Сервер: несколько правил маршрутизации netplan, но работает только одно.

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

UBUNTU SERVER 18.04 LTS с 2 GE NICs

eno1: 172.22.1.1/20
eno2: 10.11.1.34/30

netplan yaml:

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses: [ 172.22.1.1/20 ]
      gateway4: 172.22.0.1
      nameservers:
          addresses:
          - "172.22.0.53"
      routing-policy:
        - to: 172.22.224.0/19
          table: 211
          priority: 10
        - to: 192.168.201.0/24
          table: 200
          priority: 20
      routes:
        - to: 0.0.0.0/0
          via: 172.22.0.254
          table: 211
        - to: 0.0.0.0/0
          via: 172.22.0.1
          table: 200

    eno2:
      addresses: [ 10.11.1.34/30 ]
      routing-policy:
        - from: 10.11.1.34
          table: 222
          priority: 8
        - to: 10.128.0.0/16
          table: 222
          priority: 5
      routes:
        - to: 0.0.0.0/0
          via: 10.11.1.33
          table: 222

Когда я применяю конфигурацию, перезапускаю сеть или использую netplan apply, работает только одна из этихrouting-policies:

Когда я использую netplan apply:

  1. eno1:

    • В первый раз работает только первая routing-policy.
    • Во второй раз работает только вторая routing-policy.
    • В третий раз работает только первая routing-policy.
  2. eno2

    • Каждый раз работает только вторая routing-policy.

Я написал файл yaml так, как сказано в примерах netplan.io.

Я не уверен, что это сработает.

Вот мое предложение для netplan yaml:


network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses: [ 172.22.1.1/20 ]
      gateway4: 172.22.0.1
      nameservers:
          addresses:
          - "172.22.0.53"
      routing-policy:
        - from: 172.22.1.1
          to: 172.22.224.0/19
          table: 221
        - from: 172.22.1.1
          to: 192.168.201.0/24
          table: 201
      routes:
        - to: 0.0.0.0/0
          via: 172.22.0.254
          table: 221
        - to: 0.0.0.0/0
          via: 172.22.0.1
          table: 201
        - to: 172.22.224.0/19
          via: 172.22.0.254
        - to: 192.168.201.0/24
          via: 172.22.0.1
    eno2:
      addresses: [ 10.11.1.34/30 ]
      routing-policy:
        - from: 10.11.1.34
          table: 222
      routes:
        - to: 0.0.0.0/0
          via: 10.11.1.33
          table: 222
        - to: 10.128.0.0/16
          via: 10.11.1.33

Ниже приведенное работало для меня на системе с двумя сетевыми картами, каждая из которых использует разные шлюзы, интерфейсы и IP:

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses: 
        - 172.22.1.1/20
      dhcp4: no
      dhcp6: no
#      addresses: [ 172.22.1.1/20 ]
#      gateway4: 172.22.0.1
      nameservers:
          addresses: [172.22.0.53]
#          - "172.22.0.53"
      routes:
        - to: 0.0.0.0/0
          via: 172.22.0.254
          table: 200
          metric: 100
#          table: 211
        - to: 0.0.0.0/0
          via: 172.22.0.1
          table: 200
          metric: 100
        - to: 172.22.1.0/20
          via: 172.22.0.1
          table: 200
          on-link: true
      routing-policy:
        - to: 172.22.224.0/19
          table: 200
#          table: 211
          priority: 10
        - to: 192.168.201.0/24
          table: 200
          priority: 20

    eno2:
      addresses:
        - 10.11.1.34/30
      dhcp4: no
      dhcp6: no
      nameservers:
          addresses: [???.???.???.???]
#      addresses: [ 10.11.1.34/30 ]
      routes:
        - to: 10.11.1.0/30
          via: 10.11.1.33
          table: 222
          on-link: true
        - to: 0.0.0.0/0
          via: 10.11.1.33
          table: 222
          metric: 100
          on-link:true
      routing-policy:
        - from: 10.11.1.34
          table: 222
          priority: 8
        - to: 10.128.0.0/16
          table: 222
          priority: 5

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

sudo netplan --debug apply

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

При работе с сервером Ubuntu 18.04 LTS и использованием сетевой конфигурации Netplan, вы можете столкнуться с проблемой, при которой правила маршрутизации не функционируют так, как ожидается. Давайте подробнее рассмотрим ваш конфигурационный файл и предложим возможные решения.

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

Вы указали, что у вас есть два сетевых интерфейса (NIC): eno1 и eno2, и в каждом из них настроены свои правила маршрутизации. Несмотря на это, при применении конфигурации через netplan apply, наблюдается, что работают только некоторые из указанных правил.

Конфигурация Netplan

Ваш первоначальный файл конфигурации выглядит следующим образом:

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses: [ 172.22.1.1/20 ]
      gateway4: 172.22.0.1
      nameservers:
          addresses:
          - "172.22.0.53"
      routing-policy:
        - to: 172.22.224.0/19
          table: 211
          priority: 10
        - to: 192.168.201.0/24
          table: 200
          priority: 20
      routes:
        - to: 0.0.0.0/0
          via: 172.22.0.254
          table: 211
        - to: 0.0.0.0/0
          via: 172.22.0.1
          table: 200

    eno2:
      addresses: [ 10.11.1.34/30 ]
      routing-policy:
        - from: 10.11.1.34
          table: 222
          priority: 8
        - to: 10.128.0.0/16
          table: 222
          priority: 5
      routes:
        - to: 0.0.0.0/0
          via: 10.11.1.33
          table: 222

Анализ конфигурации

  1. Конфликты между маршрутами и маршрутной политикой: Ваша текущая конфигурация содержит маршруты и политику маршрутизации для таблиц, которые могут конфликтовать между собой. Указание нескольких маршрутов по умолчанию (0.0.0.0/0) в разных таблицах может привести к тому, что только один из них будет обработан.

  2. Приоритеты маршрутной политики: Приоритеты определяют, какие правила будут применены первыми. Если два правила направляют трафик к одной и той же сети, может возникнуть путаница, какое правило должно быть применено.

  3. Отсутствие явных маршрутных записей: Для интерфейсов можно добавить явные маршруты к вашим сетям, что поможет избежать проблем с определением направлений трафика.

Рекомендации по исправлению

Вот предложенная улучшенная версия вашей конфигурации:

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses: 
        - 172.22.1.1/20
      nameservers:
          addresses: 
            - "172.22.0.53"
      routing-policy:
        - from: 172.22.1.1
          to: 172.22.224.0/19
          table: 211
          priority: 10
        - from: 172.22.1.1
          to: 192.168.201.0/24
          table: 200
          priority: 20
      routes:
        - to: 172.22.0.0/20
          on-link: true
        - to: 0.0.0.0/0
          via: 172.22.0.254
          table: 211
        - to: 0.0.0.0/0
          via: 172.22.0.1
          table: 200

    eno2:
      addresses: 
        - 10.11.1.34/30
      routing-policy:
        - from: 10.11.1.34
          table: 222
          priority: 8
        - to: 10.128.0.0/16
          table: 222
          priority: 5
      routes:
        - to: 10.11.1.0/30
          on-link: true
        - to: 0.0.0.0/0
          via: 10.11.1.33
          table: 222

Проверка конфигурации

Для диагностики возможных ошибок вы можете использовать команду:

sudo netplan --debug apply

Эта команда предоставит вам более детальную информацию и позволит выявить проблемы в вашей конфигурации.

Заключение

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

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

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