Проблема с статической маршрутизацией в Ubuntu 18

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

Я мигрирую старую установку Ubuntu на версию 18, но, похоже, возникают проблемы со статической маршрутизацией при использовании разных сетей.

Сначала я попробовал использовать NetPlan. Я настроил ДВА сетевых интерфейса с разными сетями на каждом, но не знаю, связано ли это с ядром (возможно, не хватает какого-то модуля) или это проблема Ubuntu 18 (в этом я сомневаюсь).

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

Вот мой файл конфигурации NetPlan:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens32:
            addresses:
                - 177.185.x.66/29
                - 177.185.x.67/29
                - 177.185.x.68/29
                - 177.185.x.69/29
                - 177.185.x.70/29
            gateway4: 177.185.x.65
            nameservers:
                addresses:
                - 8.8.8.8
                search:
                - mydomain.net
            routes:
                    - to: 0.0.0.0/0
                      via: 177.185.x.65
            optional: true
        ens34:
            addresses:
                - 168.96.x.2/24
            routes:
                    - to: 168.96.x.0/24
                      via: 168.96.x.1

NetPlan работает почти нормально: нет проблем при применении новой конфигурации. Таблица маршрутизации выглядит нормально:

default via 177.185.x.65 dev ens32 proto static 
168.96.x.0/24 via 168.96.x.1 dev ens34 
168.96.x.0/24 dev ens34 proto kernel scope link src 168.96.x.10 
177.185.x.64/29 dev ens32 proto kernel scope link src 177.185.x.66

Но я могу пинговать только сеть 177.185.x.64/29. Другая не отвечает.

Когда я изменяю маршрут по умолчанию на вторичную сеть (168.96.x.0/24), другая сеть перестает отвечать.

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

Любая помощь будет очень ценна.

Заранее спасибо.

С уважением,
Рафаэль

Во-первых, пакет ifupdown устарел и больше не будет работать. Так что лучше избегать его.

Во-вторых, похоже, вы не поняли, что я вам писал раньше в моей теме: использование таблицы маршрутизации.

Как упоминалось здесь, у любой операционной системы есть только один возможный шлюз. То же самое касается маршрутизаторов или любых других устройств. Если вы хотите несколько шлюзов, вам нужна дублирующая система, потому что метаданные любых передаваемых по сети пакетов не могут упоминать несколько шлюзов. Именно поэтому нам нужны разные таблицы маршрутизации. И я не вижу в вашем файле строки с созданием другой таблицы маршрутизации. Вот почему вы не получаете подтверждения поступающих пакетов на втором интерфейсе… всё довольно просто. Пакеты приходят, они просто не могут быть подтверждены, потому что не могут.

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

  routes:
   - to: 0.0.0.0/0
     via: 192.168.3.1
     metric: 100
     table: 101

Это создание маршрутизирующей политики + конкретная таблица, прикрепленная к ней.

  routing-policy:
   - from: 192.168.3.0/24
     table: 101

Это создание правила, которое указывает на необходимость регистрировать все входящие пакеты и отправляемые пакеты в этой таблице.

Кроме того, я бы настоятельно посоветовал вам составить вектор/таблицу ваших статических адресов вместо списка. То есть что-то вроде [.../..,.../..,.../..]. Снова, как в моем примере.

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

Проблемы со статической маршрутизацией в Ubuntu 18: Подробное руководство по настройке

При миграции на Ubuntu 18 возникают проблемы со статической маршрутизацией, особенно при использовании нескольких сетевых интерфейсов (NIC) на разных сетях. Рассмотрим вашу конфигурацию NetPlan, симптомы проблемы и предложим возможные решения.

Анализ вашей конфигурации

Вы используете NetPlan для конфигурации двух NIC — ens32 и ens34, и ваша конфигурация выглядит следующим образом:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens32:
            addresses:
                - 177.185.x.66/29
                - 177.185.x.67/29
                - 177.185.x.68/29
                - 177.185.x.69/29
                - 177.185.x.70/29
            gateway4: 177.185.x.65
            nameservers:
                addresses:
                - 8.8.8.8
                search:
                - mydomain.net
            routes:
                    - to: 0.0.0.0/0
                      via: 177.185.x.65
            optional: true
        ens34:
            addresses:
                - 168.96.x.2/24
            routes:
                    - to: 168.96.x.0/24
                      via: 168.96.x.1

Согласно вашим наблюдениям, работает только основной маршрут, и вы можете достучаться только до сети 177.185.x.64/29.

Потенциальные причины проблемы

  1. Ограничения одной таблицы маршрутизации: В Linux по умолчанию используется одна таблица маршрутизации, и многие системы допускают только один основной шлюз. Если вы пытаетесь настроить несколько маршрутов с различными сетями и шлюзами, необходимо использовать различные таблицы маршрутизации для выбора соответствующего маршрута в зависимости от источника.

  2. Необходимость создания дополнительных маршрутизаторов: Чтобы направлять трафик по разным интерфейсам и использовать разные шлюзы, вам нужно создать дополнительные таблицы маршрутизации и правила маршрутизации. Для этого следует использовать routing-policy в вашей конфигурации NetPlan.

Решение проблемы

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

  1. Настройка нескольких таблиц маршрутизации. В вашем случае добавьте различные таблицы для различных сетей. Обновите конфигурационный файл NetPlan, добавив следующие строки:
network:
    version: 2
    renderer: networkd
    ethernets:
        ens32:
            ...
            routes:
                - to: 0.0.0.0/0
                  via: 177.185.x.65
                  table: 100
            routing-policy:
                - from: 177.185.x.64/29
                  table: 100
        ens34:
            ...
            routes:
                - to: 168.96.x.0/24
                  via: 168.96.x.1
                  table: 101
            routing-policy:
                - from: 168.96.x.0/24
                  table: 101
  1. Проверка работы маршрутизации. После внесения всех изменений, не забудьте применить конфигурацию командой:
sudo netplan apply
  1. Проверка таблицы маршрутов. Используйте команду ip rule и ip route show table <table_id> для отслеживания маршрутов и проверки, попадают ли пакеты в нужные таблицы.

Заключение

Эти изменения должны помочь вам справиться с проблемами статической маршрутизации в Ubuntu 18, позволяя использовать несколько маршрутов на различных NIC. Создание отдельных таблиц и применение правильной маршрутизации для каждой из сетей должно обеспечить корректное функционирование всех сетевых интерфейсов. Обязательно протестируйте каждую настройку и следите за поведением системы, чтобы гарантировать, что ваша конфигурация соответствует вашим требованиям. Если возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью.

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

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