Протостатическая метрика для перекрывающихся префиксов

Кто-нибудь, пожалуйста, поясните, как Centos 8 устанавливает метрику маршрута в следующей ситуации.

У меня есть два vlan в системе, каждый из которых имеет соответствующий префикс маршрута, определенный в / etc / sysconfig / network-scripts / route-vlanXX. ip route show дает следующее:

[user@hostname ~]$ ip r show to match 192.168.56.252
default via 10.210.104.1 dev net proto dhcp metric 350 
192.168.56.0/24 via 192.168.1.1 dev vlan23 proto static metric 416 
192.168.56.0/24 via 192.168.1.33 dev vlan24 proto static metric 417 

Как вычисляются значения 416 и 417? Я не устанавливаю это явно. протостатическая метрика явно отличается от настройки метрики . Есть ли еще какое-то отличие, кроме того факта, что один создается автоматически, а другой явно задается?

1
задан 11 March 2021 в 13:02
1 ответ

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

Документация, которая более или менее отвечает на ваш вопрос, находится там (из документации RHEL8, все еще предшествующей CentOS8 сегодня):

20.8. Как NetworkManager управляет несколькими шлюзами по умолчанию

Хотя в этой документации описывается только несколько шлюзов (т. е. несколько маршрутов по умолчанию, также известных как маршруты 0.0.0.0/0), NetworkManager внутренне назначает метрику каждому настраиваемому интерфейсу. Эта метрика затем применяется к маршрутам с этим интерфейсом.

Причина в том, что вы не можете добавить в одну и ту же таблицу маршрутизации (обычно main) два одинаковых маршрута, если что-то вроде метрики не различает их (даже если автоматические маршруты LAN, добавленные ядром, могут быть в таком виде они все равно не сработают). Здесь это предотвращает ошибку при ручной настройке дважды маршрута к 192.168.56.0/24.Метрика должна быть другой (иначе необходимо использовать политику маршрутизации и несколько таблиц маршрутизации).

Таким образом, когда NetworManager не задан явно, он делает несколько вариантов выбора и предположений для метрики, используемой для интерфейса. Хотя эта метрика является внутренней для каждого интерфейса для NM, фактической метрики интерфейса нет, есть только метрики маршрута (и метрики адреса, которые используются для протоядра. маршрутов).

  • никакая метрика не была явно настроена. Базовое значение метрики для интерфейса VLAN — 400

    . Если вы задали шлюз по умолчанию без значения метрики, NetworkManager автоматически устанавливает значение метрики в зависимости от типа интерфейса.

    Тип подключения Значение показателя по умолчанию
    [...] [...]
    VLAN 400

    Для этого NetworkManager присваивает значение по умолчанию для этого типа сети первое активированное соединение

  • уже было предыдущим интерфейсом с метрикой 400. Выберите следующее: 401

    и установите увеличенное значение для каждого другого соединения того же введите в порядке их активации. Например, если два Ethernet соединения со шлюзом по умолчанию существуют, NetworkManager устанавливает метрику из 100 на маршруте к шлюзу по умолчанию соединения, которое вы сначала активируйте. Для второго подключения NetworkManager устанавливает 101.

  • полоскание, повтор. пока не будут достигнуты метрики 416 и 417 для vlan23 и vlan24

Только по этой метрике я могу заключить, что интерфейс net является интерфейсом Team.


Итак, в конце концов, этот параметр в /etc/sysconfig/network-scripts/route-vlan23:

192.168.56.0/24 via 192.168.1.1 dev vlan23

не просто интерпретируется чем-то похожим на:

ip route add $(cat /etc/sysconfig/network-scripts/route-vlan23)

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

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

ip route add $(cat /etc/sysconfig/network-scripts/route-vlan23)
ip route add $(cat /etc/sysconfig/network-scripts/route-vlan24)
RTNETLINK answers: File exists

Что касается proto, это любое значение от 0 до 255, как определено в /etc/iproute2/rt_protos. или эквивалентный ему символ. Маршруты LAN, установленные ядром, используют протоядро. Инструменты часто выбирают static при установке значения (и, очевидно, DHCP выбирает dhcp).

Я могу себе представить, что демону маршрутизации будет легче отслеживать, какие динамические маршруты обрабатываются им самим (и соответствующим протоколом), и он не будет касаться статических маршрутов.

Например:

ip route show proto ospf
1
ответ дан 21 May 2021 в 16:13

Теги

Похожие вопросы