2

Задача

Я пытаюсь настроить какое-то «бесперебойное интернет-снабжение» для машины с Linux. По этой причине я использую две восходящие линии: стандартное проводное соединение через eth0 и дополнительно соединение 3G, которое доступно через eth1 . Проводное соединение eth0 должно быть соединением по умолчанию, в то время как соединение eth1 должно использоваться только в случае проблем с соединением через eth0 . Оба интерфейса настроены через DHCP.

Текущая настройка

У меня есть два маршрута по умолчанию через eth0 и eth1 соответственно, и я назначил более высокое значение метрики для eth1 так что eth0 предпочтительнее по умолчанию. В принципе, это работает нормально: при отключении кабеля Ethernet от порта eth0 система непрерывно продолжает использовать eth1 для любого доступа в Интернет, так как она обнаруживает, что кабель eth0 отключен, и, таким образом, может немедленно удалить мертвые записи eth0 из таблица маршрутизации (которая кажется поведением по умолчанию).

Эта проблема

Однако я сталкиваюсь с проблемой, когда проводное соединение напрямую не прерывается на самом интерфейсе eth0 , а в более поздний момент в сети. В этом случае машина Linux, разумеется, не может обнаружить, что какой-то кабель был отключен, сохраняет записи eth0 в таблице маршрутизации, и любая попытка подключения к Интернету завершается неудачно с ошибкой "целевая сеть недоступна".

Итак, есть ли какой-нибудь способ сказать Linux немедленно отказаться от маршрута eth0 если он не может быть использован для достижения целевой сети? И если да, как мне определить, когда соединение eth0 снова станет доступным, чтобы я мог снова переключиться с eth1 на eth0 ? Это вообще возможно?

Большое спасибо за любые подсказки!

1 ответ1

1

Протоколы маршрутизации предназначены для решения этой проблемы во внутренней сети. OSPF и т.д. Находят соседних соседей и внедряют систему «поддержания активности» - при этом, если они не получают подтверждение сохранения активности, они предполагают, что маршрут не работает, и переписывают таблицы маршрутизации в реальном времени.

Если вы управляете чем-то, кроме eth0 , подумайте о настройке чего-либо подобного. Я думаю, что quagga - это пакет / программное обеспечение, которое вы, возможно, захотите изучить. Вероятно, есть более простые решения, которые не включают протоколы маршрутизации.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .