Вопрос или проблема
В настоящее время я использую Fedora Server 23 и ищу способ сохранить команды, такие как:
ip route add default via 10.0.2.1 dev ens32 table EXAMPLE_TABLE
ip rule add from 10.1.2.50 lookup EXAMPLE_TABLE prio 1000
или через nmcli (в идеале), или каким-либо другим, аналогично, разумным способом.
Я видел примеры с помещением в файл route-ifname, но, похоже, они не выполняют правило по умолчанию правильно.
Если вы выполните ip route show table EXAMPLE_TABLE
после перезагрузки, вы поймете, что оно не сохраняется – по крайней мере, в моем опыте.
Любые идеи по этому поводу были бы замечательны, спасибо.
Самый простой способ, который я знаю, чтобы сохранить маршрут по умолчанию, – добавить пункт назначения маршрута по умолчанию в файл /etc/sysconfig/network-scripts/ifcfg-<device>
в качестве значения для GATEWAY. Это создает маршрут по умолчанию каждый раз, когда интерфейс активируется, другие маршруты сохраняются через файлы route-<device>
в той же директории.
rules
, которые необходимо сохранить, следует поместить в:
/etc/sysconfig/network-scripts/rule-lo
routes
, которые необходимо сохранить, следует поместить в:
/etc/sysconfig/network-scripts/route-lo
Вы, наверное, заметили, что я предлагаю использовать файлы rule-lo и route-lo независимо от того, для какого устройства вы сохраняете соответствующую конфигурацию, как если бы правила и маршруты были для интерфейса loopback. Некоторое время назад я наблюдал на CentOS 7.8, возможно, ту же проблему, которую вы наблюдаете здесь, когда правила PBR, сохраненные в своих соответствующих файлах устройств, игнорировались, но все правила, сохраненные в *-lo, выполнялись. Жаль, что я не могу пролить больше света на причины, почему так было, но я не исследовал ситуацию дальше в то время. Некоторые логи указывали на то, что за это несет ответственность NetworkManager-dispatcher.
Для полноты ответа, маршрутизирующие таблицы идентифицируются по своим номерам. Если вы хотите ссылаться на таблицу по имени, необходимо создать сопоставление имен. Например, чтобы ссылаться на таблицу с номером 100 по имени “EXAMPLE_TABLE”:
echo '100 EXAMPLE_TABLE' | sudo tee -a /etc/iproute2/rt_tables
Ответ или решение
Для решения задачи сохранения конфигураций маршрутизации и правил политической маршрутизации (Policy Based Routing) на Fedora Server 23, необходимо учесть ряд нюансов, особенно используя iproute2. Задача требует понимания не только как установить конфигурации, но и как обеспечить их устойчивость после перезагрузки системы.
Шаги для устойчивой конфигурации PBR
-
Определение именованных таблиц маршрутизации:
Чтобы воспользоваться именем таблицы маршрутизации, создайте его отображение с номером таблицы. Для этого отредактируйте файл/etc/iproute2/rt_tables
:echo '100 EXAMPLE_TABLE' | sudo tee -a /etc/iproute2/rt_tables
Это позволяет использовать человекочитаемые имена, вместо чисел, что упрощает сопровождение и конфигурацию.
-
Конфигурация маршрутов:
Для сохранения маршрутов, их необходимо добавить в специальные файлы внутри/etc/sysconfig/network-scripts/
. В случае, если стандартные файлы для каждого интерфейса не работают, как ожидается, попробуйте использоватьroute-lo
:echo 'default via 10.0.2.1 dev ens32 table EXAMPLE_TABLE' | sudo tee /etc/sysconfig/network-scripts/route-lo
-
Конфигурация правил:
Аналогично маршрутам, сохраните правила в файлеrule-lo
:echo 'from 10.1.2.50 lookup EXAMPLE_TABLE' | sudo tee /etc/sysconfig/network-scripts/rule-lo
Применение данных файлов к интерфейсу
lo
, даже если правило касается другого интерфейса, может решить проблемы неисполнения настройки. Это может быть связано с поведением NetworkManager или NetworkManager-dispatcher. -
Использование NetworkManager и nmcli:
Для интеграции с NetworkManager, стоит проверить, предлагают ли его версии поддержку для посредства сохраниения подобной конфигурации. Например, параметры могут быть добавлены напрямую в конфигурационные файлы интерфейсов, такие как/etc/sysconfig/network-scripts/ifcfg-ens32
, используя параметры вродеGATEWAY
.
Заключение
При решении задачи устойчивой конфигурации маршрутизации на Fedora Server 23, предложенные методы обеспечивают надёжное сохранение правил и маршрутов. Интеграция с NetworkManager пока может быть ограничена, поэтому выделенные файлы для сохранения маршрутов и правил являются оптимальным решением. Testing и поиск возможных обновлений может выявить улучшения в NetworkManager, если это будет необходимо.
Такое подход к сохранению конфигураций маршрутизации и правил позволяет эффективно управлять сетевой конфигурацией и адаптировать решения под специфические сценарии использования.