ED-IT - Компоненты - check_inet
check_inet - компонент KMUT для стартовой индикации доступности сети на М7. Он пингует default gateway и хост CSO, а результат показывает цветом светодиода питания.
Это не проверка HTTP/API CSO и не постоянный мониторинг канала. В актуальной реализации скрипт работает только первые пять минут после загрузки устройства.
Связи
- Устройства/М7/index
- Устройства/М7/ED-IT - Инструкции - Настройка М7 через ZTP-стенд
- Устройства/М7/ED-IT - Инструкции - Прошивка М7 через os_update
Что Проверяется
| Цель | Что пингуется | Смысл |
|---|---|---|
| GW | IP default gateway из таблицы маршрутов | Есть ли L3 до ближайшего узла |
| HOST | CHECK_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
| Поведение | revB | revC |
|---|---|---|
| Хранилище параметров | flash get/set | mib get/set |
| Фиксация параметров | обычно без отдельного commit в примерах | нужен mib commit |
| Ping | ping -c ... -i "$CHECK_INET_PING_INTERVAL" -W 5 | ping -c ... -W 5, CHECK_INET_PING_INTERVAL не используется т.к. в утилите такой флаг отсутствует |
| LED | /proc/gpio: g09, g19, r19 | sysfs LED_PWR_G и LED_PWR_R |
| Определение платформы | отсутствие /sys/class/leds/LED_PWR_G | наличие /sys/class/leds/LED_PWR_G |
Параметры
| Параметр | Рекомендуемо | Дефолт, если пусто |
|---|---|---|
CHECK_INET_DISABLED | 2 | без 2 скрипт сразу выходит |
CHECK_INET_HOST | хост/IP из cso-url | 77.88.8.8 |
CHECK_INET_CHECK_GW_INTERVAL | 60 | 60 |
CHECK_INET_CHECK_HOST_INTERVAL | 60 | 60 |
CHECK_INET_PACKET_COUNT | 1 | 1 |
CHECK_INET_PING_INTERVAL | 1, только revB | 1 |
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 1revC:
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
| HOST | GW | LED | Смысл |
|---|---|---|---|
| OK | любое | зелёный | CSO доступен по ICMP |
| FAIL | OK | жёлтый | шлюз доступен, CSO недоступен |
| FAIL | FAIL | красный | нет 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.8 | CHECK_INET_HOST пустой, сработал дефолт |
| В HOST попал URL | перезаписать только хост/IP |
| VLAN-установка со стенда | inst_settings_vlan выставила CHECK_INET_DISABLED=0 |
Код
| Что | Где |
|---|---|
| Монитор | kmut-lua/ALL_RR10/bin/check_inet_monitor |
| Cron | kmut-lua/ALL_RR10/etc/cron.d/root |
| ZTP | M7-stand/DEB/tftpboot/kmut_tftp_configure |
| Обновление revB | M7-stand/DEB/RR10-os-update |
| Обновление revC | M7-stand/DEB/RR10-revC-os-update |