Настройка бесперебойного доступа к сети с помощью утилиты Pinger на роутерах irzOS

#irzOS #роутеры #r0 #r2 #r10 #r50
Статья справедлива для версий irzOS 1.1 и выше.

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

Настройка осуществляется утилитой Pinger, которая выполняет две основные функции:

  1. Мониторинг доступности: утилита периодически отправляет запросы к указанному целевому хосту (например, к публичному DNS-серверу), используя различные протоколы (ICMP, TCP, HTTP, ARP). Это позволяет отслеживать состояние критически важных каналов.

  2. Динамическое управление маршрутизацией (Failover): при ухудшении качества связи (превышение порогов задержки или потерь пакетов) утилита автоматически увеличивает метрику проблемного маршрута и переключается на резервный, который в этом случае оказывается более приоритетным.

Перед настройкой Pinger

Первоначальная настройка происходит в разделе /mobile → modem.

mobile modem modem1
Описание параметров

Поле

Описание

SIM Slots

Доступные сим-карты

Primary SIM

Основная сим-карта, которая будет являться приоритетной для подключения (только для одномодульных роутеров)

Primary Timeout

Время в секундах, по истечении которого модем переключится с резервной сим-карты обратно на основную

Connect Timeout

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

Metric

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

Default Route

Маршрут по умолчанию

Автоматическое изменение метрики (Metric) применяется исключительно к тем интерфейсам, которые настроены как маршрут по умолчанию (Default Route).

 

Пример настройки для одномодульного роутера при использовании двух сим-карт

В одномодульном роутере стоят две сим-карты с выходом в интернет. Проводное подключение к интернету (WAN) не используется. Таким образом, modem1 является единственным интерфейсом, который настроен как маршрут по умолчанию.

Чтобы при потере соединения на одной сим-карте роутер автоматически переключался на вторую, необходимо:

  1. В разделе /mobile → modem настроить интерфейс modem1: задать параметры Primary SIM, Primary Timeout, Connect Timeout.

  1. Настроить Pinger на адрес 77.88.8.8 (публичный DNS-сервер Яндекс) по протоколу ICMP, чтобы проверить доступ к интернету на текущей сим-карте (см. п. Общая настройка Pinger).

Логика работы

  1. При запуске сотового модуля начинается отсчет Connect Timeout (в примере 360 секунд). В это время модем пытается установить соединение, используя сим-карту, назначенную в Primary SIM.

  2. После получения роутером адреса от оператора и активации интерфейса SIM-карты начинается проверка через Pinger:

    • Если проверка проходит успешно, Primary SIM и дальше используется для подключения к интернету, Connect Timeout выключается.

    • Если проверки не проходят и их количество (подряд) достигает числа, заданного в поле Retries, сотовый модуль перезагружается. Далее он заново пытается установить соединение в течение времени, которое задано в Connect Timeout. Под установлением соединения в данном случае понимается регистрация в сети оператора и успешная проверка Pinger.

    • Если Primary SIM так и не установила соединение за отведенное время, происходит переключение на вторую сим-карту (для нее также запускается Connect Timeout). Когда вторая сим-карта успешно установит соединение, начнется отсчет Primary Timeout, по истечении которого произойдет автоматическое переключение на Primary SIM.

Настройка в CLI

/mobile modem modem1
  debug		false
  defaultroute	true
  disabled	false
  metric	101
  modem-connect-timeout	360
  modem-primary-sim		sim1
  modem-primary-sim-timeout	3600
  modem-sim-slot		sim1,sim2
  mtu		1500
  peerdns	true
  apply

 

Пример настройки для двухмодульного роутера при использовании двух сим-карт

  1. В разделе /mobile → modem настроить два интерфейса modem1 и modem2, которые заданы как маршруты по умолчанию. Для них необходимо указать разные метрики:

    • modem1 – Metric 204

    • modem2 – Metric 205

  1. Настроить Pinger для каждого интерфейса отдельно на адрес 77.88.8.8 (публичный DNS-сервер Яндекс) по протоколу ICMP в формах /service → pinger → modem1 и /service → pinger → modem2 (см. п. Общая настройка Pinger).

Логика работы

  1. При запуске сотовых модулей начинается отсчет Connect Timeout (для каждого модуля свой). В это время роутер пытается установить соединение на обеих сим-картах.

  2. После того, как сим-карты получат адреса от операторов, и на роутере активируются соответствующие интерфейсы SIM, на каждом из них начинается отдельная проверка Pinger:

    • Если проверка проходит успешно, метрика интерфейса уменьшается на 100 и Connect Timeout выключается. В примере, если результаты проверок Pinger на обеих сим-картах будут положительными, метрики примут значения 104 (modem1) и 105 (modem2). Приоритетным будет считаться маршрут через modem1.

    • Если после ряда удачных проверок на какой-то из сим-карт происходит сбой (например, пропадает интернет) и проверка Pinger не проходит, метрика интерфейса возвращается к своему исходному значению. Приоритетным становится маршрут с меньшей метрикой.

    • Если первая проверка была неудачной – метрика интерфейса никак не изменится.

    • Если количество неудачных проверок (подряд) достигает числа, заданного в поле Retries, сотовый модуль перезагружается и заново пытается подключиться к сети. Также перезагрузка модуля происходит при истечении Connect Timeout, если соединение так и не было установлено.

Настройка в CLI

/mobile modem modem1
  debug		false
  defaultroute	true
  disabled	false
  metric	204
  modem-connect-timeout	360
  modem-primary-sim		sim1
  modem-primary-sim-timeout	3600
  modem-sim-slot		sim1,sim2
  mtu		1500
  peerdns	true
  apply
/mobile modem modem2
  debug		false
  defaultroute	true
  disabled	false
  metric	205
  modem-connect-timeout	360
  modem-primary-sim		sim1
  modem-primary-sim-timeout	3600
  modem-sim-slot		sim1,sim2
  mtu		1500
  peerdns	true
  apply

 

Пример настройки при использовании сим-карты и проводного подключения

  1. Роутер подключен к интернету по основному каналу (modem1 – мобильная сеть) и резервному (port1 – проводное соединение). Оба интерфейса заданы как маршрут по умолчанию, для них необходимо указать разные метрики:

    • modem1 – Metric 101

    • port1 – Metric 100

  1. Настроить Pinger на адрес 77.88.8.8 (публичный DNS-сервер Яндекс) по протоколу ICMP (см. п. Общая настройка Pinger).

Логика работы

  • Если проверка проходит успешно, метрика интерфейса уменьшается на 100 (если назначенная метрика изначально была меньше 100 – ничего не происходит, но использование данной конфигурации не рекомендуется). В примере при успешной проверке метрика примет значение 1. Приоритетным будет считаться маршрут через modem1.

  • Если первая проверка была неудачной – метрика интерфейса никак не изменится.

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

Настройка в CLI

/mobile modem modem1
  debug		false
  defaultroute	true
  disabled	false
  metric	101
  modem-connect-timeout	360
  modem-primary-sim		sim1
  modem-primary-sim-timeout	3600
  modem-sim-slot		sim1
  mtu		1500
  peerdns	true
  apply
/ip interface port1
  defaultroute                   true
  disabled                       false
  metric                         100
  peer-dns                       true
  apply

 

Общая настройка Pinger

  1. Перейти в раздел /service → pinger и нажать Add. В появившемся окне выбрать интерфейс, с которого будут осуществляться проверки, в примере – modem1.

service pinger
  1. В открывшейся форме задать параметры:

service pinger 1
Пример настройки параметров

Поле

Описание

Значение

Type

Тип проверки:

icmp – стандартные ICMP эхо-запросы (ping). Является универсальным методом проверки доступности хостов в сети;
arping (ARP ping) – подходит для проверки доступности устройств в рамках одного L2-сегмента;
tcp* – проверка доступности конкретного TCP-порта на удаленном хосте (клиентская часть);
http – проверка путем отправки HTTP-запроса. Полезна для контроля работы именно веб-трафика

icmp

Host

Список адресов для проверки в формате IP-адресов или доменных имен (в случае tcp-проверки также необходимо указать номер порта через двоеточие)

77.88.8.8

Interval

Интервал между проверками в секундах

по умолчанию

Retries

Число неудачных проверок, после достижения которого утилита осуществляет перезапуск интерфейса, к которому привязан Pinger

по умолчанию

Request Count

Количество пакетов, отправляемых в рамках одной попытки проверки

по умолчанию

Packet Size

Размер пакета проверки в байтах

по умолчанию

RTT** Threshold

Порог round-trip времени, превышение которого считается неудачей. Максимально допустимое значение задержки в миллисекундах

по умолчанию

Loss Threshold

Количество потерянных пакетов, превышение которого считается неудачей, в процентах

по умолчанию

* Для работы tcp-проверки на удаленном хосте должен быть установлен сервер для утилиты Pinger. Инструкция по установке доступна по ссылке.
** RTT (Round-Trip Time) – это время, которое требуется пакету данных для отправки от источника к назначению и возвращения обратно.
  1. Для применения настроек и запуска Pinger нажать Apply.

  2. Статус Result – Succeed на панели со статистикой означает, что проверка прошла успешно.

service pinger 2

Настройка в CLI

/service pinger add interface=modem1
  count		4
  disabled	false
  host		77.88.8.8
  interval	30
  retries	3
  rtt-threshold		500
  size		32
  type		icmp
  apply
Для двухмодульного роутера аналогичные настройки выполняются для modem2.

 

Все настройки навсегда сохраняются в память роутера только после выполнения команды /system → config → commit или нажатия кнопки commit в web-интерфейсе.