ED-IT - Компоненты - check_inet

check_inet - компонент KMUT для стартовой индикации доступности сети на М7. Он пингует default gateway и хост CSO, а результат показывает цветом светодиода питания.

Это не проверка HTTP/API CSO и не постоянный мониторинг канала. В актуальной реализации скрипт работает только первые пять минут после загрузки устройства.

Связи

Что Проверяется

ЦельЧто пингуетсяСмысл
GWIP default gateway из таблицы маршрутовЕсть ли L3 до ближайшего узла
HOSTCHECK_INET_HOST, обычно хост из cso-urlЕсть ли ICMP-доступность CSO

Хост CSO должен быть IPv4 или FQDN без схемы, порта и пути. IPv6 текущей sed-цепочкой не поддерживается.

check_inet_ip=$(echo "$cso_url" | sed 's|https\?://||' | sed 's|:.*||' | sed 's|/.*||')

Жизненный Цикл

Cron вызывает скрипт каждую минуту:

*/1 * * * * /usr/share/kmut/bin/check_inet_monitor 1>/dev/null 2>/dev/null

Но внутри скрипта есть ограничение:

[ "$uptime" -ge 300 ] && echo "uptime is greater than 300" && exit 0

Поэтому ручной запуск после первых пяти минут загрузки не обновит LED и state-файлы. Для проверки логики check_inet после закрытия окна нужно либо перезагрузить устройство, либо вручную проверять маршрут и ping.

Матрица RevB/RevC

ПоведениеrevBrevC
Хранилище параметровflash get/setmib get/set
Фиксация параметровобычно без отдельного commit в примерахнужен mib commit
Pingping -c ... -i "$CHECK_INET_PING_INTERVAL" -W 5ping -c ... -W 5, CHECK_INET_PING_INTERVAL не используется т.к. в утилите такой флаг отсутствует
LED/proc/gpio: g09, g19, r19sysfs LED_PWR_G и LED_PWR_R
Определение платформыотсутствие /sys/class/leds/LED_PWR_Gналичие /sys/class/leds/LED_PWR_G

Параметры

ПараметрРекомендуемоДефолт, если пусто
CHECK_INET_DISABLED2без 2 скрипт сразу выходит
CHECK_INET_HOSTхост/IP из cso-url77.88.8.8
CHECK_INET_CHECK_GW_INTERVAL6060
CHECK_INET_CHECK_HOST_INTERVAL6060
CHECK_INET_PACKET_COUNT11
CHECK_INET_PING_INTERVAL1, только revB1

CHECK_INET_DISABLED=2 - специальный режим нашей проверки. Значения 0, 1 и любые другие значения для KMUT check_inet_monitor означают выключение.

Включение

revB:

check_inet_ip="<IP_или_хост_CSO>"
flash set CHECK_INET_DISABLED 2
flash set CHECK_INET_HOST "${check_inet_ip}"
flash set CHECK_INET_CHECK_GW_INTERVAL 60
flash set CHECK_INET_CHECK_HOST_INTERVAL 60
flash set CHECK_INET_PACKET_COUNT 1
flash set CHECK_INET_PING_INTERVAL 1

revC:

check_inet_ip="<IP_или_хост_CSO>"
mib set CHECK_INET_DISABLED 2
mib set CHECK_INET_HOST "${check_inet_ip}"
mib set CHECK_INET_CHECK_GW_INTERVAL 60
mib set CHECK_INET_CHECK_HOST_INTERVAL 60
mib set CHECK_INET_PACKET_COUNT 1
mib set CHECK_INET_PING_INTERVAL 1
mib commit

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

Индикация LED

HOSTGWLEDСмысл
OKлюбоезелёныйCSO доступен по ICMP
FAILOKжёлтыйшлюз доступен, CSO недоступен
FAILFAILкрасныйнет ICMP-доступности ни до шлюза, ни до CSO

На revC жёлтый получается одновременным включением красного и зелёного каналов (т.е. де-факто оранжевый)

ZTP И Обновление

Обычная ZTP-настройка и RR10-*-os-update выставляют:

  • CHECK_INET_DISABLED=2;
  • CHECK_INET_HOST из cso-url;
  • интервалы 60;
  • CHECK_INET_PACKET_COUNT=1;
  • CHECK_INET_PING_INTERVAL=1.

Ветка VLAN / multi-WAN в inst_settings_vlan сейчас выставляет CHECK_INET_DISABLED=0. После такой настройки наша индикация не стартует, пока вручную не поставить 2.

Подробнее про стенд: ED-IT - Инструкции - Настройка М7 через ZTP-стенд.

Диагностика

Проверять LED и state-файлы имеет смысл в первые пять минут после загрузки:

/usr/share/kmut/bin/check_inet_monitor
cat /tmp/check_inet_gw.state /tmp/check_inet_host.state
cat /tmp/check_inet_gw.stamp /tmp/check_inet_host.stamp

Значения state-файлов: 1 - OK, 0 - FAIL.

После закрытия стартового окна проверять базовые условия напрямую:

ip route | grep default
ping -c 1 -W 5 <IP_шлюза>
ping -c 1 -W 5 <CHECK_INET_HOST>
СимптомЧто проверить
LED/state не меняютсяCHECK_INET_DISABLED != 2 или uptime >= 300
Всегда красныйнет default route, ICMP до GW или ICMP до CSO
Всегда жёлтыйневерный CHECK_INET_HOST или CSO недоступен
HOST = 77.88.8.8CHECK_INET_HOST пустой, сработал дефолт
В HOST попал URLперезаписать только хост/IP
VLAN-установка со стендаinst_settings_vlan выставила CHECK_INET_DISABLED=0

Код

ЧтоГде
Мониторkmut-lua/ALL_RR10/bin/check_inet_monitor
Cronkmut-lua/ALL_RR10/etc/cron.d/root
ZTPM7-stand/DEB/tftpboot/kmut_tftp_configure
Обновление revBM7-stand/DEB/RR10-os-update
Обновление revCM7-stand/DEB/RR10-revC-os-update