У меня есть встроенное устройство с тремя сетевыми соединениями: eth0, wwan0 и wlan0. wwan0 — это лимитное соединение, поэтому я бы предпочел eth0 или wlan0. Проблема в том, что в любой момент времени любой интерфейс может быть подключен, но фактически не иметь доступа к Интернету. По разным причинам любой интерфейс может вообще отсутствовать. В этом случае моя таблица маршрутизации не делает то, что мне нужно. Есть ли лучший способ справиться с этим, чем скрипт, который постоянно проверяет и изменяет таблицу маршрутизации? Часть проблемы заключается в том, что существует слишком много комбинаций и перестановок «доступно», «недоступно», «нет Интернета» и т. д.
решение1
Как вы заметили, есть много возможностей. Есть неясные, например: "есть интернет, но недоступны только тестовые серверы", и они могут быть недоступны, потому что все они вышли из строя или заблокированы правительством. Также возможно, что "половина" интернета доступна через одного провайдера, а "другая половина" недоступна; но у другого провайдера картина "обратная". (Верьте мне или нет, я видел такую ситуацию однажды.) Какую из них вы объявляете "имеющей интернет"?
Это очень сложный вопрос, поэтому существует целая бизнес-ниша для маршрутизаторов SOHO, которые, в той или иной степени, способны принимать решения в различных ситуациях, и их, как правило, не очень легко настроить, чтобы они могли принимать решения.достаточно хорошорешение. Вот почему весь этот бизнес BGP в мире телекоммуникаций.
Итак, как видите, нет, вы не можете сделать намного лучше и эффективнее, чем скрипт. Я не знаю, зачем вам это нужно, но для настольной/конечной пользовательской машины, я думаю, что автоматизация этого вообще не стоит. Для маршрутизатора Linux я бы сделал стандартную конфигурацию раздельного доступа с RPDB и маршрутами по умолчанию через каждое соединение с высокими метриками, в порядке предпочтения, а затем скрипт будет устанавливать или обновлять только маршрут по умолчанию с низкой метрикой на основе пингов, скажем, пяти географически распределенных контрольных точек, тщательно отобранных (наиболее доступных или важных).