Рано или поздно во всех компаниях возникает вопрос расширения зоны покрытия wi-fi сети. Самый просто вариант — покупаем еще одну точку доступа и создаем еще одну сеть. Вариант подходит тем, у кого все сотрудники «стационарны» и не перемещаются из зоны действия одной сети в другую.
Вариант второй: покупаем точку той же модели, что и предыдущая и настраиваем wi-fi repeater. Выглядит просто, но на деле приходится сталкиваться с различными проблемами.
Вариант третий: купить точки Ubiquiti UniFi. Их прелесть в том, что сами точки, по сути, просто передатчики. Вся логика вынесена в отдельную программу-контроллер, которая может быть установлена на windows, linux, mac os. Таким образом, расширяется сеть путем установки новых точек доступа и добавления их в контроллер.
Но если бы все было так просто, этой заметки не появилось бы в моем блоге. Всем админам хочется сделать систему максимально автономной и не требующей вмешательства в случае перезагрузок. По умолчанию, unifi controller запускается в виде обычного приложения. Т.е. после каждой перезагрузки, необходим ручной запуск — иначе новые устройства не смогут подключиться (старые будут работать). К счастью, производитель предусмотрел вариант запуска приложения в качестве сервиса. Согласно мануалу необходимо выполнить:
1. Закройте UniFi, если он запущен.
2. Добавьте в переменную PATH путь к Java. Путь будет таким C:\Program Files (x86)\Java\jre6\bin или C:\Program Files\Java\jre6\bin (либо jre7, в случае использования java 7).
3. Запустите с правами администратора командную строку (cmd.exe) и перейдите в директорию с файлами UniFi (cd «%userprofile%/Ubiquiti Unifi»).
4. Выполните java -jar lib\ace.jar installsvc
5. Запустите сервис.
А вот здесь, если у вас windows server 2008 r2, можно добавить пункт 6 — убедитесь, что сервис не стартует с «говорящей» ошибкой
The unifi controller service terminated with service-specific error: the operation completed successfully.
Проблема заключается в использовании 64-битной версии java. С ней запустить сервис, по какой-то причине, не удается. Для решения этой проблемы, необходимо доустановить jre x86 и изменить в переменной окружения PATH путь к java на директорию, содержащую версию x86 — C:\Program Files (x86)\Java\jre6\bin или C:\Program Files (x86)\Java\jre7\bin. После этого сервис запустится без ошибок.
Еще один вопрос, который может возникнуть — фильтрация MAC-адресов. Многие компании применяют этот метод в качестве одного из способов ограничения доступа в wi-fi сеть. По какой-то причине, разработчики UniFi не включили этот функционал в возможности контроллера. Но он доступен в виде дополнения от команды тестировщиков UniFi — unifi-lab-master.
Качаем дополнение, скачиваем Python 2.7 x86-64, если у вас windows x64 (не 3 ветку!), устанавливаем и добавляем в переменную PATH путь к нему — C:\Python27 по умолчанию. Качаем cURL с поддержкой SSL. Распаковываем его и кладем в директорию со скриптами unifi-lab. Редактируем, при необходимости, конфигурационный файл unifi_lab_production.ini и запускаем unifi_lab.py. В файл unifi_lab_mac_auth.list вносим мак-адреса устройств, которым разрешено подключение к сети (по одному в каждой строке). Файл перечитывается постоянно, поэтому изменения вступают в силу сразу после сохранения.
Для того, чтобы не запускать скрипт вручную, его можно конвертировать в exe при помощи py2exe. После этого создаем задание в планировщике на запуск программы при старте системы, настраиваем его на запуск вне зависимости от входа пользователя и снимаем галочку «Stop the task if it runs longer than 3 days».
Теперь перезагрузки будут не страшны — все запустится автоматически.