1

Я использую последнюю версию Raspbian, и мое устройство подключено к 2 локальным сетям, каждая из которых имеет шлюз в Интернет. (Устройство подключается к одной локальной сети с помощью кабеля Ethernet, а к другой - через USB - мобильный телефон с привязкой USB).

Похоже, что это просто работает из коробки, потому что я могу получить доступ к Интернету, и потому что таблица маршрутизации была настроена автоматически после подключения кабелей:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    202    0        0 eth0
default         192.168.42.129  0.0.0.0         UG    205    0        0 usb0

Однако мне интересно, сможет ли устройство по-прежнему иметь доступ к Интернету, если шлюз в одной из локальных сетей случайно сломается? У меня установлен пакет iproute2, но я ничего не знаю о том, как он работает, и действительно не нашел хорошего ответа в Интернете. Благодарю.

2 ответа2

2

Ваши шлюзы имеют другую метрику, поэтому, даже если у вас есть два маршрута по умолчанию, вы всегда будете использовать только один из них. Это хорошо, потому что обычные интернет-протоколы (TCP, UDP) не являются многодомными: их нельзя использовать для формирования одного соединения с использованием нескольких локальных и / или удаленных IP-адресов при маршрутизации по разным путям.

Таким образом, вы не можете использовать два подключения к Интернету одновременно, если не выполняете какое-либо распределение нагрузки с использованием статических критериев. Что нетривиально настроить.

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

2

у вас есть 2 метрики. 202 будет использоваться для маршрутизации трафика. 205 будет в случае неудачи. У вас есть флаги UG: Up & Gateway. Если U исчезнет, это означает, что ваш шлюз не работает. Это будет вниз, если сок между вашим рашпилем и роутером или чем-то посередине сломается. Если маршрутизатор глючит или его интернет-линия не работает, то трафик будет перенаправлен в тупик.

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

Например: скрипт с "ping -I usb0" для Google, и другой с -I eth0 для Google. Если тот, у кого более низкая метрика, активен и не может связаться с Google, измените его или резко отключите его. (метрики: ip route добавить $ {адрес}/$ {маску} через $ {шлюз} метрика $ {число}).

Если вы измените метрику, вы все равно можете попробовать пинговать и восстанавливать соединение, когда пинг удовлетворяет.

Используйте очень медленный пинг, и пусть у него будет 3 или 4 ошибки до переключения.

Это не серебряная пуля для вашей проблемы, но это крутой сценарий для создания некоторых классных и простых сценариев :) :).

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