Приветствую! Продолжаю тему использования старлинка в судовых условиях в связке с микротиком. И в этой статье буду описывать проблемы, которые возникают во время эксплуатации Микротика на судне, а также решения этих проблем.
Как оказалось, использовать MikroTik на судне - это ещё то удовольствие. Вроде бы всё настроил и забыл, но нет. Периодически что-то, да происходит. В моём случае, не имея достаточного опыта работы с ним, начали появляться некоторые проблемы, которые я не предусмотрел заранее.
Настройка микротика. Если вам нужна информация, как настраивать микротик под старлинк, то читайте статью: "Starlink REV4 + Mikrotik. Контроль интернет трафика на судне с помощью Микротика".
В этой статье я не только опишу проблемы и решения, но также постараюсь добавлять её свежими знаниями по мере получения опыта работы с микротиком.
1. RADIUS сервер микротика не отвечает
Итак, первая значительная проблема, которая случилась - это "упал" RADIUS сервер. При попытке подключения интернета, а именно логи́на под своим профилем, выдаёт сообщения "RADIUS server is not responding" или "Web browser did not send challenge response (try again, enable JavaScript". Кроме этого в него невозможно зайти с браузера по IP адресу (выдаёт неправильный логин или пароль).
И здесь я сделал ошибку, перезагрузил микротик, чтобы попытаться восстановить работу радиус сервера. Таким действием я стёр старые логи. Вместо этого нужно было сначала посмотреть логи на наличие ошибок. Оказалось, что у микротика закончилась внутренняя память "Out of disk space!" free-hdd-space: 500.0KiB, при том, что вся память составляет около 16Мб (total-hdd-space: 16.0MiB). И соответственно из-за этого "упал" радиус сервер.
Проверка содержимого файловой системы на наличие больших файлов (команда в терминале):
/file print detail
Можно также просто зайти в файловую систему микротика (раздел Files) и визуально поискать файлы большого размера.
При поиске причины недостаточного объёма внутренней памяти был обнаружен файл logsqldb в каталоге flash/user-manager с размером 2645.0 KiB (около 2.7 Мб). Ниже предлагаю ознакомиться с вариантами решения данной проблемы.
За что отвечает файл logsqldb?
Файл logsqldb в каталоге flash/user-manager накапливает данные логирования работы User Manager, включая историю сессий, авторизаций и других событий. Если в системе не настроено ограничение объёма логов или регулярная их очистка, файл может быстро увеличиваться в размерах, особенно на устройствах с большим количеством пользователей или частыми авторизациями.
Почему файл logsqldb стал таким большим?
- Большое количество пользователей и авторизаций: Если через User Manager проходит много пользователей, и каждый раз записывается информация о сессиях, логах, это быстро заполняет доступное место.
- Долгое время хранения логов: По умолчанию система может не очищать старые логи, поэтому они копятся со временем.
- Ограниченный объем памяти устройства: Устройство имеет всего 16 Мб внутренней памяти, что делает его уязвимым к переполнению из-за таких больших файлов.
- Нет автоматической очистки: MikroTik не очищает логи автоматически. Нужно вручную выполнять очистку или настроить скрипт.
Почему это вызвало сбой RADIUS сервера?
Когда внутреннее хранилище устройства заполнено, RouterOS перестает нормально работать. Некоторые процессы (например, RADIUS, который использует User Manager для авторизации) требуют свободного места для временных файлов или операций записи.
Сообщение Out of disk space! указывает на критическое состояние, при котором многие функции системы могут быть нарушены.
Как настроить автоматическую очистку логов?
Для предотвращения подобной ситуации можно настроить автоматическую очистку логов с помощью скрипта и планировщика. Вот пример:
1. Создайте скрипт для очистки логов:
/system script set clear_user_manager_logs source="
:local logFile [/file find name=\"flash/user-manager/logsqldb\"];
:if ([:len \$logFile] > 0) do={
/file remove \$logFile;
:log info \"User Manager logs cleared to free up disk space.\";
} else={
:log warning \"logsqldb file not found, no action taken.\";
}"
/system script print
/system script run clear_user_manager_logs
/log print where message~"logs"
info: User Manager logs cleared to free up disk space.
Добавьте задачу, которая будет запускать скрипт, например, раз в неделю:
/system scheduler add name="weekly_log_cleanup" interval=1w on-event=clear_user_manager_logs
/system scheduler print
Пример результата:
name="weekly_log_cleanup" start-date=nov/28/2024 start-time=00:00:00 interval=1w on-event=clear_user_manager_logs
6. Измените интервал при необходимости: Если вам нужно запускать скрипт чаще (например, ежедневно), измените интервал:
/system scheduler set weekly_log_cleanup interval=1d
Я использовал данный скрипт, запустил его вручную и RADIUS сервер снова начал работать. Также я настроил планировщик, чтобы чистка производилась автоматически раз в 7 дней.
Ниже предлагаю почитать дополнительные рекомендации для контроля логов и оптимизации базы данных. Всё это используйте осторожно, если точно знаете что делаете.
Дополнительные меры для контроля логов:
Ограничение уровня логирования
Настройте минимально необходимый уровень логирования для User Manager:
/tool user-manager logging set level=critical
Это уменьшит количество записываемых событий.
Регулярная оптимизация базы данных
Для уменьшения размера базы данных рекомендуется периодически выполнять очистку старых сессий и оптимизацию:
/tool user-manager database clear-session
/tool user-manager database clear-log
Мониторинг дискового пространства
Настройте мониторинг, чтобы система предупреждала, если свободное место становится слишком маленьким:
Создайте скрипт:
/system script add name="check_disk_space" source="
:if ([/system resource get free-hdd-space] < 1000) do={
:log warning \"Low disk space on device!\";
}"
Настройте выполнение каждые 10 минут:
/system scheduler add name="disk_monitor" interval=10m on-event=check_disk_space
Эти меры помогут предотвратить переполнение диска в будущем, сохранив работоспособность RADIUS сервера и всей системы.
Убедитесь, что ваша система не имеет конфликтов задач и что скрипты не удаляют важные файлы, проверяя их перед запуском.
В итоге можно сделать вывод, что периодически необходимо следить за размером файловой системы Микротика и предотвращать её переполнение. Можете использовать скрипты или вручную мониторить объем файлов. Кстати, микротик был запущен около двух месяцев назад до возникновения проблемы.
2. Перегрузка Wi-Fi усилителей и роутер Старлинка
Заметил такой момент, что периодически вылетает один Wi-Fi усилитель, который подвязан к роутеру Tp-Link на микротике. Его приходится перезагружать примерно раз в неделю. В основном это происходит из-за перегрузки сети через основной роутер старлинка.
То есть устройство, которое подключено к роутеру старлинка напрямую (без ограничения трафика) и на нём сделать, например, Speed Test, таким образом может "положить" усилитель. Думаю выход здесь один - этого не делать (не перегружать сеть) пока судно находится в переходе на лимитном трафике.
Кстати, если вас интересует процесс установки и настройки старлинка на судне, то рекомендую прочитать статью "Starlink на судне. Опыт эксплуатации глобального интернета на судне".
Пока на этом всё. По мере возникновения проблем с микротиком статья будет пополняться. Если у вас возникли проблемы с микротиком или есть чем поделиться из личного опыта, то пишите в комментариях к статье. Буду очень признателен.
Надеюсь статья была для вас полезной. Спасибо за внимание!
Автор, подскажи пожалуйста, пробовал ли вы или кто из экипажа играть в онлайн игры через старлинк в океане? Любые MMORPG, например танки и тд. Как пинг?
ОтветитьУдалитьЗдравствуйте. Пинг в пределах 30-50, играть в онлайн игры можно. Танки и MMORPG тянет. Единственное, желательно подключаться напрямую к роутеру старлинка без усилителей. На усилителях могут быть просадки.
УдалитьБольшое спасибо
УдалитьЗдравствуйте, все настроил как указано, но изначально после регистрации не получается вводить логин и пароль, radius server is not responding, все четко проверил по инструкции. Но при этом радиус не отвечает.
ОтветитьУдалитьЗдравствуйте. Проверьте эти пункты:
Удалить1. Проверка доступности RADIUS-сервера
• Попробуйте с MikroTik сделать ping на IP-адрес RADIUS-сервера:
/ping [IP-адрес radius-сервера]
Если ping не проходит — MikroTik не видит сервер. Нужно проверить маршруты, шлюз и firewall.
2. Порт и IP в настройках MikroTik
Убедитесь, что вы указали:
• Правильный IP-адрес сервера
• Порт (обычно UDP 1812)
• Shared Secret (он должен совпадать с тем, что указан на RADIUS-сервере)
В MikroTik:
/radius print
Проверьте параметры.
3. Проверьте firewall MikroTik
Если на MikroTik включён firewall, убедитесь, что он не блокирует исходящие подключения к UDP 1812.
Пример команды для разрешения:
/ip firewall filter add chain=output protocol=udp dst-port=1812 action=accept
4. Проверьте RADIUS-сервер
Если вы используете FreeRADIUS или аналог, проверьте его логи — возможно, он не запускается, не слушает нужный порт или есть ошибка в конфиге.
Для FreeRADIUS:
sudo journalctl -u freeradius -f
Или
sudo freeradius -X
для запуска в debug-режиме.
5. Проверьте time synchronization
Если на MikroTik и на RADIUS разное системное время, может не пройти handshake. Убедитесь, что оба устройства синхронизированы по NTP.
6. Проверьте лог MikroTik
На MikroTik выполните:
/log print where message~"radius"
Может быть указана более конкретная причина.
Здравствуйте еще раз, проверил все как вы сказали, но проблема не ушла, в логе пишет -login failed:Radius server is not responding, уже не знаю куда копать.
ОтветитьУдалитьЗдравствуйте. Вот расширенный чеклист:
Удалить1. Убедитесь, что MikroTik реально шлёт запрос на RADIUS
Выполните на MikroTik:
/tool sniffer quick port=1812
Если ничего не отображается — MikroTik вообще не отправляет запрос на порт 1812. Проверьте:
• Включён ли RADIUS в нужном сервисе (например, hotspot):
/radius print
/ip hotspot profile print
В профиле должен быть установлен use-radius=yes
2. Проверьте на стороне RADIUS-сервера — не блокирует ли он IP MikroTik’а
Если это FreeRADIUS — в файле /etc/freeradius/3.0/clients.conf (или clients.d/mikrotik.conf) должен быть блок:
client mikrotik {
ipaddr = [IP MikroTik]
secret = [Ваш Secret]
shortname = mikrotik
}
Если там, скажем, стоит 127.0.0.1, а MikroTik приходит с другого IP — сервер просто игнорирует его.
3. На FreeRADIUS запустите в debug-режиме
sudo freeradius -X
Попробуйте авторизоваться через MikroTik и смотрите, вообще ли что-то приходит. Если вообще тишина — MikroTik не достучался.
⸻
4. Проверьте iptables/firewalld (если сервер на Linux)
Временно отключите firewall:
sudo iptables -F
или
sudo systemctl stop firewalld
И попробуйте снова — если работает, значит надо открыть порт:
sudo iptables -A INPUT -p udp --dport 1812 -j ACCEPT
5. Shared Secret
• Проверьте, что он одинаковый на MikroTik и сервере, и нет лишних пробелов.
6. Проверьте, не мешает ли NAT
Если MikroTik и RADIUS-сервер находятся в разных подсетях, и MikroTik уходит в интернет через NAT — убедитесь, что на сервере разрешён доступ от внешнего IP MikroTik.
Если не поможет — можешь скинуть (можно обрезать чувствительные части):
• radius print
• ip hotspot profile print
• часть clients.conf с RADIUS-сервера
У вас случайно не такая же проблема с памятью микротика, которая описана в этой статье?
УдалитьВроде нет, есть 3 мб свободных еще
Удалитьтеперь пишет "web browser did not send challenge response..." , вот это вбил /tool sniffer quick port=1812 , он мне присылает пустые поля INTERFACE TIME NUM DI SRC-MAC DST-MAC VLAN
ОтветитьУдалитьСообщение “web browser did not send challenge response” говорит о том, что теперь hotspot работает и вызывает login.html, но браузер не возвращает ответ, который ожидает MikroTik. А то, что sniffer пустой — тоже важный знак: MikroTik не шлёт запрос на RADIUS.
УдалитьОбъяснение ошибки:
Ошибка "web browser did not send challenge response" — это типичный баг, когда:
• Hotspot неправильно настроен
• Или в профиле отключён RADIUS
• Или не используется правильная login.html страница
Что проверить:
1. Профиль Hotspot: включён ли RADIUS?
Проверь:
/ip hotspot profile print
Убедись, что параметр:
use-radius: yes
Если no, включи:
/ip hotspot profile set 0 use-radius=yes
(вместо 0 — правильный номер профиля)
2. RADIUS-сервер реально добавлен и активен
/radius print
Убедись, что он включён, service=hotspot, и IP верный.
3. Проверь login.html
На MikroTik должна быть корректная страница входа — лучше использовать стандартную, не кастомную, пока не работает:
/ip hotspot walled-garden
/ip hotspot walled-garden ip
Пока настраиваешь — желательно разрешить доступ к всем внешним адресам, чтобы браузер мог загрузить даже внешний JS/CSS.
4. Попробуй вручную зайти на login.html
Открой браузер и набери:
http://[любой сайт]/
Должен редиректить на http://[gateway]/login
Попробуй авторизоваться вручную.
5. Проверь certificates
Если используешь HTTPS — MikroTik не умеет перехватывать HTTPS корректно без сертификатов, поэтому редирект может ломаться. Пока лучше отключить HTTPS, и использовать HTTP.
6. Проверь лог MikroTik
/log print where message~"hotspot"