Приоритет интерфейса диспетчера сетей Linux Red-hat 6

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

У меня есть вопрос относительно RedHat 6 Enterprise Network Manager (NM):

Мой Linux подключен к двум сетевым интерфейсам:

1 – eth0: обычный Ethernet, подключенный к корпоративной LAN

2 – eth1: USB-модем, подключенный к сотовой сети (CDC-ECM)

Интерфейс eth0 постоянно подключен, а интерфейс eth1 не постоянный (подключение может быть временным).

Когда оба подключены, NM отдает предпочтение eth0. Это значит, что маршрут по умолчанию (0.0.0.0) всегда определяется через него.

Я хочу изменить политику NM так, чтобы она отдавала предпочтение eth1. Когда интерфейс eth1 не подключен, маршрут по умолчанию должен идти через интерфейс eth0, а когда eth1 подключен — через eth1.

Я искал в интернете, как это сделать, играл со скриптами NM и файлами ifcfg-eth0 / ifcfg-eth1 (пробовал DEFROUTE и другие опции), но безуспешно.

Может кто-нибудь подсказать, как правильно это сделать с помощью NM?

Редактировать: добавлено решение автора из комментариев:

  • Удалить eth0 (проводной) из NM
    • NM_CONTROLLED=no
  • Оставить eth1 (беспроводной) под контролем.
    • По умолчанию, когда NM_CONTROLLED не указано
  • Установить METRIC=20 для eth1
  • Получается 2 маршрута по умолчанию, где eth1 имеет приоритет

Ответ:

Network Manager может всегда выбирать беспроводное или проводное подключение в качестве основного (основываясь на других вопросах здесь), что, кажется, включает взаимодействия с метрикой маршрута и dhcp, рекламными объявлениями маршрутизатора (где NM следовал метрике 1), состоянием интерфейса и специфическими особенностями RedHat.

Предполагая, что вы его используете: DHCP может сбросить ваш маршрут к «лучшему» по метрике маршрута¹. Более высокие значения метрики являются более «дорогими», поэтому предпочитаются менее затратные метрики. В списке Network Manager здесь отмечено, что метрики dhcp для беспроводных сетей наказываются +100, и разработчики NM утверждают, что NM должен просто выбирать правильный маршрут, но также говорят, что метрики могут быть методом лучшего устройства. Не уверен, что это применимо к вашему eth1, но вы можете это контролировать:

Поменяв числа (10 и 20) из этого ответа для ваших интерфейсов, я получаю:

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
METRIC=20

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
METRIC=10

Этот ответ говорит, что это должно предпочесть беспроводное и выполнить плавное переключение между интерфейсами.

Если вы хотите, чтобы NM выбирал так, как могут намереваться разработчики, ключевые слова интерфейсов GMambaG также рассматриваются в документации RedHat для статических маршрутов, которые отмечают неожиданные проблемы при использовании множественных шлюзов + GATEWAYDEV. Чтобы протестировать это, запустите оба интерфейса и попробуйте возобновить работу после удаления eth1. Если у вас возникнут проблемы (например, прерывистые таймауты), вы сможете восстановиться, удалив ваши изменения и перезапустив сетевые службы:

$ sudo service network restart

Если ничего не поможет, рекламные объявления маршрутизатора (ICMP типы 9 и 10, по моему мнению) могут влиять на ваши таблицы маршрутов; согласуйте с сетевым администратором перед тем, как пытаться их блокировать.

Редактировать: Уменьшена длина текста этого ответа, решение автора размещено выше.

¹ Если вы не используете DHCP, у вас будет ручной шлюз. Эта статья предлагает использовать NM_CONTROLLED=”no”, чтобы предотвратить автоматическое переключение NM на шлюз этого интерфейса.

Red Hat использует последний включенный интерфейс в качестве устройства шлюза по умолчанию.

Чтобы установить eth1 как шлюз по умолчанию, добавьте это в /etc/sysconfig/network:

GATEWAYDEV=eth1

См.: https://access.redhat.com/solutions/41459

Это должно обрабатываться при каждом вызове ifup. Вы можете проверить маршруты с помощью ip route show

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

Для специалистов в области информационных технологий, работающих с Red Hat Enterprise Linux 6 и сталкивающихся с управлением сетевыми интерфейсами посредством Network Manager (NM), важной задачей является корректная настройка приоритета сетевых интерфейсов. Рассмотрим задачу перенастройки приоритета интерфейсов, когда имеется два активных подключения — одно постоянное через LAN и другое временное через сотовую сеть посредством USB-адаптера.

Теория

В стандартной конфигурации Network Manager на Red Hat 6 взаимодействует с несколькими сетевыми интерфейсами, устанавливая приоритеты на основе различных факторов, таких как метрики маршрутов и DHCP. Устройство с приоритетом получает возможность установки маршрута по умолчанию, что определяет, какой интерфейс будет использоваться для исходящего интернет-трафика. Вопрос в том, как поменять политику NM так, чтобы временное подключение (например, сотовая сеть через USB) имело более высокий приоритет, когда доступно, а постоянное LAN-подключение использовалось, когда временное недоступно.

Пример

Предположим, у вас настроена система следующим образом:

  • eth0: стандартное подключение через Ethernet, подключенное к корпоративной локальной сети.
  • eth1: подключение через USB-адаптер, связанный с сотовой сетью.

По умолчанию NM устанавливает eth0 как интерфейс с более высоким приоритетом, если оба интерфейса активны.

Применение

Чтобы изменить настройки приоритета, следуйте этим шагам:

  1. Конфигурация метрик маршрута:
    Метрики маршрута позволяют настроить предпочтительность использования того или иного интерфейса. Ваша цель — установить метрику eth1 ниже, чем для eth0, чтобы устройства принимали решение в пользу eth1, если оно доступно.

    Изменение конфигурационных файлов:

    $ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
    METRIC=20
    $ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
    METRIC=10

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

  2. Исключение контроля NM над eth0:
    Настройте Network Manager так, чтобы он не управлял eth0.

    $ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
    NM_CONTROLLED=no

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

  3. Указание GATEWAYDEV в глобальной конфигурации:
    Если требуется, чтобы eth1 был всегда интерфейсом по умолчанию при наличии двух активных подключений, укажите это в глобальном конфигурационном файле сети.

    $ sudo vi /etc/sysconfig/network
    GATEWAYDEV=eth1

    Это изменение подскажет системе использовать eth1 в качестве основного устройства шлюза при его подключении.

  4. Проверка и тестирование:
    После применения изменений обязательно перезапустите сетевые службы, чтобы настройки вступили в силу:

    $ sudo service network restart

    Проверяйте маршруты с помощью команды:

    $ ip route show

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

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

Следуя этим шагам, вы сможете эффективно управлять сетевыми интерфейсами в Red Hat Enterprise Linux 6 и гарантировать, что более подходящий интерфейс используется по умолчанию, когда это возможно. Настройки, связанные с контролем Network Manager и указанием GATEWAYDEV, являются особенно критичными для успеха данной конфигурации, так как они напрямую влияют на поведение системы при изменении состояния сетевых интерфейсов.

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

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