Похоже, что на эту тему много вопросов, но ясных ответов нет. Проблема: когда у провайдера нет интернета, пользователи просто не понимают этого. Они подключаются, но ничего не происходит — страница входа не появляется. Есть, казалось бы, хорошие решения по уведомлению пользователей о статусе, например http://wiki.mikrotik.com/wiki/Notify_your_customers_internet_is_down,_monitor_connectivity, но проблема в том, что без публичного интернета пользователи не перенаправляются на эту страницу входа, которая должна выводить уведомления. Большинство других вариантов предлагают создавать DNS-записи, что не имеет смысла, потому что страница входа полностью рабочая, если зайти на неё вручную по IP или hostname, а DNS-запись автоматически создаётся при настройке hotspot. У кого-нибудь есть чёткие предложения, почему для редиректа на страницу входа hotspot нужен интернет и как это изменить? Есть много приложений, где hotspot можно использовать без интернета. Пожалуйста, помогите, знатоки RouterOS.
Единственное, чего я не нашёл — это добавление TTL для статического DNS. Если его не указать, установится значение 1 день, и когда ваш хотспот снова будет в сети, это может создать проблемы.
electravis, vardas, если вы ещё следите за этой веткой, удалось ли вам в итоге найти решения, которые хорошо и надёжно работают для большинства клиентов, включая Android? Я новичок в mikrotik и мне нужно сделать примерно то, что описано здесь, но не хочу начинать, если это вообще реально сделать надёжно. J
Хорошо, вот что мы сделали: если интернета нет, пользователя перенаправляет на обычную HTML-страницу, которую выдает Tik. Похоже, что это работает на всех устройствах, которые мы тестировали.
Сначала у нас есть статическая DNS-запись, которая отключена 0 XR ... 10.200.20.1 10s
Далее у нас есть правило netwatch, которое либо отключает её при наличии интернета, либо отключает при его отсутствии: 0 X host=8.8.8.8 timeout=3s interval=10s since=nov/16/2015 03:46:30 status=unknown up-script=/ip dns static disable numbers=0 down-script=/ip dns static enable numbers=0
Потом вам нужны две папки в файлах: hotspot — когда вы онлайн, и hotspot — когда оффлайн.
И, наконец, ещё одно правило netwatch: host=192.168.9.250 timeout=2s interval=10s since=dec/17/2015 08:50:10 status=up up-script=ip hotspot profile set Support html-directory=hotspot-support-online down-script=ip hotspot profile set Support html-directory=hotspot-support-offline
Создайте папку с названием maintenancePage и положите туда ваш html с файлами страницы обслуживания. Никаких внешних ссылок, достаточно простой html-страницы с парой картинок. Добавьте фиктивное разрешение DNS (в зависимости от версии ROS один из вариантов не сработает):
/ip dns static add address=1.2.3.4 comment=MAINTENANCE disabled=yes name=".*" ttl=10s /ip dns static add address=1.2.3.4 comment=MAINTENANCE disabled=yes regexp=".*" ttl=10s
Добавьте Netwatch, который будет включать эти записи, менять каталог Хотспота и выгонять всех, чтобы заставить их пройти повторную авторизацию:
/tool netwatch add down-script="{ /ip dns static enable [/ip dns static find where comment~\"MAINTENANCE\"]; /ip hotspot profile set [/ip hotspot profile find where html-directory~\"NORMALDIRECTORY\"] html-directory=\"maintenancePage\"; /ip hotspot active remove [/ip hotspot active find]; /radius disable [/radius find]; }" host=REMOTEHOSTTOBEPINGED timeout=2s up-script="{ /ip dns static disable [/ip dns static find where comment~\"MAINTENANCE\"]; /ip hotspot profile set [/ip hotspot profile find where html-directory~\"maintenancePage\"] html-directory=\"NORMALDIRECTORY\"; /radius enable [/radius find]; }"
Если у вас есть кастомные настройки на устройстве — подстройте скрипт под себя.
Спасибо, Muqatil, за ответ. Сейчас пытаюсь внедрить твоё решение, но кажется, что скрипты down/up не работают. У меня есть две папки: «hotspot_office» — когда интернет работает, и «hotspot_test» — когда провайдер не работает. Однако ни html_directory, ни DNS не меняются, когда провайдер падает. Посмотри мои скриншоты: Netwatch host: Когда провайдер не работает: Провайдер в сети: