Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
   RSS
Учебник/Эксперимент: UniFi на pfSense, UniFi Network
 
ОБНОВЛЕНО: 18.05.2012

Изменения: 17.05.2012 — я внес изменения в исходники FreeBSD-пакета. Также заменил Java-пакет с Diablo JDK на OpenJDK 6.0. Установка теперь гораздо проще. Всё протестировано и работает на pfSense 2.0.1 Release.

18.05.2012 — внес изменения в конфигурацию .tcshrc по совету Ritz. Также обновил установку Java. С версии 8.1-release в качестве источника пакетов у OpenJDK появились другие требования.

Руководство — UniFi на pfSense

Я поигрался с установкой UniFi на pfSense. Пока тестировал только в VMware и VirtualBox. Следующим шагом закажу плату Alix 2d2 у Netgate и проверю на ней. Чтобы больше людей смогли присоединиться, ниже расскажу, что сделал до сих пор:

1. Установите pfSense. Здесь подробно останавливаться не буду. Если нужна помощь — обращайтесь. Я использую pfSense 2.0.1 RELEASE. Могу также помочь с настройками брандмауэра и другими конфигурациями pfSense. Пока сосредоточусь только на том, как запустить UniFi вместе с pfSense.

2. Включите Secure Shell (SSH) в pfSense. Зайдите в веб-интерфейс (по умолчанию — вашIP), логин: admin, пароль: pfsense. Далее перейдите в System -> Advanced и установите галочку «Enable Secure Shell». Нажмите Save. Убедитесь, что ваш pfSense имеет доступ в интернет.

3. Подготовка и установка MongoDB. Подключитесь по SSH к pfSense с помощью Putty, терминала, Cygwin и т. п. Обратите внимание: pfSense 2.0.1 работает на FreeBSD 8.1 Release. Если у вас версия 1.2.3, введите команду «uname -a», чтобы узнать версию FreeBSD, и подстроитесь под неё. Чтобы упростить задачу, просто установите 2.0.1 и забудьте про это.

Сначала сделаем небольшую подготовку. Выполните команды:

cp /etc/skel/dot.tcshrc /root/.tcshrc  
source ~/.tcshrc  

Спасибо Ritz за эти изменения.

Теперь установим MongoDB:

pkg_add -r mongodb

4. Установка OpenJDK 6.0  
В предыдущих версиях руководства использовался Diablo JDK, сейчас переключился на OpenJDK.

Выполните:  

pkg_add -r openjdk6  

Далее:  

mount -t fdescfs fdesc /dev/fd  

Добавьте в /etc/fstab строку:  

fdesc   /dev/fd         fdescfs         rw      0       0  

Введите затем:  

rehash  

6. Установка UniFi  
Сначала установите unzip:  

pkg_add -r unzip  
rehash  

Зайдите в тему по релизу UniFi и скачайте UniFi.unix.zip. Ссылка находится в самом низу первой страницы под заголовком «UniFi zipped package link». Примите лицензионное соглашение. Файл нужно скопировать на pfSense так же, как мы делали раньше.

Вот как я перемещал файл:

На вашем компьютере:  
nc -l 12345 < UniFi.unix.zip  

На pfSense (0.0.0.0 — IP вашего компьютера):  
nc 0.0.0.0 12345 > UniFi.unix.zip  

Распакуйте UniFi.unix.zip и переместите папку туда, где хотите установить. Я положил в /usr/local/:  

unzip UniFi.unix.zip  
mv UniFi /usr/local/  

UniFi нужно знать, где находится mongod, поэтому удалите стандартную ссылку и создайте новую:  

cd /usr/local/UniFi/bin  
rm mongod  
ln -s /usr/local/bin/mongod mongod  

7. Запуск UniFi  

cd /usr/local/UniFi/lib  
java -jar ace.jar start  

Чтобы запустить UniFi в фоне и закрыть терминал, добавьте & в конце команды или используйте программу типа screen:  

java -jar ace.jar start &  

По какой-то причине запуск занимает очень много времени, я работаю над этим. Терпение — оно всё-таки запустится. Чтобы проверить, можно запустить:  

netstat -an | grep 8443  

Это проверит, слушает ли UniFi порт 8443 — порт веб-интерфейса. Если вывод пуст, значит, программа ещё не запустилась. Даже когда появится прослушивание порта 8443, может пройти минуту-две, прежде чем веб-интерфейс станет доступен. Откройте в браузере: yourip:8443 для входа.

Если вы хотите обращаться к UniFi через WAN-порт pfSense, нужно добавить правило в брандмауэр, разрешающее доступ ко всем нужным портам UniFi: 8443, 8843, 8080, 8880, 8081. Проще всего разрешить TCP и UDP для этих портов.

В будущем хочу добавить мониторинг UniFi и управление процессами напрямую в веб-интерфейс pfSense.

Если есть вопросы — спрашивайте. Как я и сказал в названии, это всё ещё эксперимент, но думаю, будет отличное сочетание для установки UniFi.

Писал быстро, если найдете ошибки — дайте знать.
Страницы: Пред. 1 2
Ответы
 
Итак, я потратил некоторое время, играясь с `truss`, пытаясь понять, почему unifi так долго запускается. Точных ответов нет, но похоже, что возникают проблемы с блокировкой при соединениях через сокеты, когда он проверяет, запущены ли у него уже какие-то экземпляры. Например, он пытается подключиться к порту mongodb и просто виснет, пока, как я предполагаю, не срабатывает какой-то очень долгий таймаут TCP.

Это, конечно, большая хитрость, но мне удалось значительно ускорить запуск, подсовывая unifi несколько "старых" серверных инстансов, чтобы его успокоить. Если вы используете стандартные порты, вот скрипт для этого (используйте на свой страх и риск!):

# Создаем фиктивный уже запущенный HTTP сервер  
# (Он автоматически завершится после получения запроса)  
nc -l 8080 &

# Создаем (один или несколько?) фиктивных уже запущенных mongodb серверов  
# Возвращает код выхода 0, если получена корректная команда на отключение,  
# код выхода 100, если уже существует лок-файл mongodb у unifi  
/usr/local/UniFi/bin/mongod --dbpath /usr/local/UniFi/data/db --port 27117  
while [ $? -eq 0 ]
do  
   sleep 2 # Даём unifi шанс запустить свой собственный mongodb  
   /usr/local/UniFi/bin/mongod --dbpath /usr/local/UniFi/data/db --port 27117  
done  

Возможно, запуск пойдёт ещё быстрее, если получится выяснить, почему ещё вот это появлялось:  
connect(78,{ AF_INET 23.21.93.68:80 },16) ERR#60 'Operation timed out'  
(Похоже на сервер обновлений, но непонятно, почему возникают проблемы с подключением — я могу подключиться вручную без проблем.)

В общем, надеюсь, это кому-то поможет!
Страницы: Пред. 1 2
Читают тему (гостей: 1)