Сетевые соединения

Добрый день! Из-за проблем с мобильныи интернетом с контроллером происходят чудеса.

Есть основной канал, идущий через роутер с мобильным интернетом (Оператор А), подключение к роутеру по проводу. Есть модем, установленный в контроллер (Оператор Б).

На вики есть статейка, про настройку сетевизнов и настройку адреса сайта, по которому контроллер считает доступность интернета.

Есть самописный скрипт, который отслеживает параметры “network/Ethernet IP Online Status”, “network/GPRS IP Connection Enabled” и “network/GPRS IP Online Status”. По ним он решает подымать VPN для удалённого доступа к контроллеру или нет.

Есть системнный скрипт /usr/share/wb-rules-system/rules/network.js , который рулит этими флажками исходя из доступности хоста 1.1.1.1.

В итоге можем иметь ситуацию коллизий, когда 1.1.1.1 доступен, инет вроде как есть и он хорош, но контроллер считает, что его нет, тк провайдер решил заблокировать доступ к сайту, через который контроллер проверяет наличие интернета. В итоге контроллер решает, что ему нужно поднять GPRS и пытаться работать через него, а оператор Б вообще решил связь положить в этот момент. Очень весело бывает, когда в этот момент тянутся обновления или делаются бэкапы.

Ладно, мы подымаем свой сервис, который нам говорит, что у нас есть доступ в инет и прописываем его в настройках, через веб интерфейс.

Но тут возникает другая ситуация. Оператор А кладёт почти всю сеть, но вот поднятый нами сервис оказывается в зоне доступа, и контроллер считает, что у нас доступ в интернет через основной канал есть. Но флаги доступа в интернет скинуты. При этом интернет, хоть и плохенький через Оператора Б есть в полном объёме. Но контроллер об этом никак не может узнать, тк интернет через модем он потушен из-за “наличия” интернета на основном канале. Тут по крайней мере бэкапы сольются без проблем на тот сервер, где мы подняли страничку проверки доступности интернета. Но вот рулить контроллером остаётся только через СМС.

В итоге из-за несогласованности настроек и выставления соответствующих флагов бывает проблематично рулить контроллером удалённо.

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

И ещё, иногда модем, из-за игр Оператора Б с доступом к сети, переходит в некий статус enabled, в котором он ни на что не реагирует, даже СМС не принимает. Спасает только отправка команды mmcli -m -r .

Добрый день!

Задача достаточно интересная и, я бы сказал, «со звездочкой», особенно учитывая участие третьих лиц, которые могут блокировать соединение.

Для выбора верного типа подключения я рекомендую добавить проверку нескольких хостов одновременно. Например, если из пяти выбранных узлов доступны хотя бы три — считать связь рабочей. Это исключит ложные срабатывания при падении одного конкретного ресурса.

Также прошу уточнить: используете ли вы наше решение Wiren Board Cloud? На мой взгляд, это один из самых простых и надежных способов получения удаленного доступа к контроллеру и управления им.

WB Cloud пока не использую. Но опять таки, в случае вот таких коллизий доступ через облако можно потерять. Как раз сейчас часть сети в отвале и роутинг до wirenboard.cloud не проходит.

Но для выбора верного типа подключения нужна возможность отключения штатных проверок и возможность руления “ручками” типами подключения. Первого нет, на счёт второго пока нет понимания как это правильнее сделать, чтобы не было перезапуска сетевизнов.

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

В качестве временного решения могу порекомендовать следующее:

  1. В основных настройках укажите адрес, который всегда доступен (например, локальный адрес 127.0.0.1).
  2. Всю логику переключения и мониторинга внешних узлов реализуйте с помощью ваших скриптов.

Добрый день!

Подскажите, пожалуйста, удалось ли вам решить проблему?

Добрый день. Пока не было времени этим заниматься.

Вопрос в том, на сколько корректно будет править /usr/share/wb-rules-system/rules/network.js , чтобы там прописать иной адрес для проверки наличия интернета? Просто есть предположение, что при очередном обновлении системы этот скрипт обновится и его нужно будет править заново. Может в нем стоит прописать текстовый контрол, из которого в скрипте будет вычитываться адрес для проверки сетевых соединений?

Идея передана разработчикам, пока в разработку пока не взята.

Особенности обновления конфигурации:

  • Через apt: конфигурация сама по себе не заменится.
  • Через .fit файл или переустановка пакета: в этих случаях произойдет замена конфигурации.

Так же рекомендую делать резервные копии перед каждым обновлением системы.

Добрый день!

Подскажите, пожалуйста, могу ли я еще чем-то помочь?

Пока всё. Но хотелось бы в виртуальном устройстве в ближайшее время увидеть поле с вводом ip адреса для проверки наличия соединения.

1 Like