ED-IT - Компоненты - netctl
netctl - компонент KMUT на М7, который возвращает сетевые настройки устройства к сохранённому эталону.
Он следит не за доступностью сети, а за расхождением между текущими параметрами в flash и файлом:
/usr/share/kmut/etc/network/interfacesСвязи
- Устройства/М7/index
- Устройства/М7/ED-IT - Инструкции - Настройка М7 через ZTP-стенд
- Устройства/М7/ED-IT - Инструкции - Прошивка М7 через os_update
- Устройства/М7/ED-IT - Инструкции - Изменение сетевых настроек М7 на установленном устройстве
Ключевое Ограничение
В актуальном исходнике netctl работает через команды flash get/set. Поэтому восстановление сетевых настроек предназначено для RR10 revB.
На revC файл /usr/share/kmut/etc/network/interfaces может создаваться ZTP-стендом или RR10-revC-os-update, но netctl не умеет применить его через mib. Для revC этот файл сейчас полезен как снимок настроек, а не как рабочий механизм восстановления.
Матрица RevB/RevC
| Поведение | revB | revC |
|---|---|---|
| Файл-эталон создаётся ZTP/update | да | да |
netctl save применяет сохранённые параметры | да | нет, потому что исходник использует flash |
| Табличные параметры | поддержаны через delall + add | файл может содержать WAN/IP_ROUTE-параметры, но netctl их не применяет через mib |
| Риск при ручном изменении сети | старые параметры вернутся при следующей сверке | автоматический возврат через netctl не ожидается |
Файл-Эталон
Файл содержит строки вида:
ИМЯ_ПАРАМЕТРА=значениеКомментарии и пустые строки игнорируются. Если файл пустой, восстанавливать нечего.
Обычная ZTP-настройка и os_update заполняют файл автоматически, но после стенда или обновления его всё равно нужно проверить:
cat /usr/share/kmut/etc/network/interfacesАвтоматический Запуск
Сверка запускается cron в начале каждого 12-го часа:
0 */12 * * * /usr/share/kmut/bin/netctl save 1>/dev/null 2>/dev/nullРежим кнопки запускается при старте:
/usr/share/kmut/bin/netctl monitor &Точка подключения:
kmut-lua/ALL_RR10/etc/rcS.d/S19_network_monitorЧто Делает netctl save
- Проверяет, что файл-эталон существует.
- Валидирует имена параметров: каждый параметр из файла должен существовать во flash.
- Сравнивает текущие значения flash с файлом.
- Если всё совпадает, ничего не меняет.
- Если есть расхождение, записывает значения из файла обратно во flash.
- После применения выполняет
reinitCli -e 3.
Автоматический запуск не пишет stdout/stderr в журнал: cron отправляет вывод в /dev/null. Поэтому ошибки валидации видны только при ручном запуске.
Табличные Параметры
Если значение содержит запятые, netctl считает параметр табличным. Для таких параметров он:
- отбрасывает цифры в конце имени, чтобы получить базовое имя;
- перед применением очищает весь набор через
flash set <base> delall; - затем добавляет строки из файла через
flash set <base> add ....
Из-за этого неполный файл-эталон может удалить отсутствующие в нём маршруты или записи WAN. Не дописывать табличные параметры вручную без проверки на стенде.
Кнопка Очистки
netctl monitor опрашивает GPIO36 раз в секунду. Удержание кнопки не менее одной секунды очищает только файл:
/usr/share/kmut/etc/network/interfacesЭто не сброс устройства и не возврат сети к заводским настройкам. Текущие IP-адреса, маршруты и DNS остаются как были. После очистки netctl save перестаёт возвращать старую конфигурацию, потому что эталон пуст.
Ручная Проверка
Перед ручным запуском убедиться, что есть консоль или запасной канал доступа: reinitCli -e 3 может оборвать текущую SSH-сессию.
cat /usr/share/kmut/etc/network/interfaces
ip route | grep default
/usr/share/kmut/bin/netctl saveЕсли после запуска сеть изменилась неожиданно, первым делом сравнить текущие параметры с содержимым /usr/share/kmut/etc/network/interfaces: именно этот файл был источником применённых значений.
Изменение Сети На Установленном RevB
Процедура изменения сети вынесена отдельно: ED-IT - Инструкции - Изменение сетевых настроек М7 на установленном устройстве.
Ключевое правило для revB: изменить только текущие параметры недостаточно. Нужно обновить и файл-эталон, иначе netctl вернёт старые значения при ближайшей сверке.
Код
| Что | Где |
|---|---|
netctl | kmut-lua/ALL_RR10/bin/netctl |
| Cron | kmut-lua/ALL_RR10/etc/cron.d/root |
Старт monitor | kmut-lua/ALL_RR10/etc/rcS.d/S19_network_monitor |
| Заполнение файла на ZTP | M7-stand/DEB/tftpboot/kmut_tftp_configure |
| Заполнение файла при update revB | M7-stand/DEB/RR10-os-update |
| Заполнение файла при update revC | M7-stand/DEB/RR10-revC-os-update |