PFSense and Ubiquiti

Есть замечательные точки достура - Ubiquiti UniFi AP.

Все у них замечательно, кроме одного - хотят они контроллера и пытаются к нему подключаться каждые 15 минут. И если не находят, то отключаются на минуту-полторы.

А контроллером должна быть выделенная машина, сервер то есть. И сервер должен быть либо под Windows, либо MacOS. Кроме того, на сервере должна стоять Java, не ниже 1.6. Вот такая вот загогулина.

Порешил, что надо в pfSense ставить Jail, в Jail втыкать mongod и службу ubnt, ибо она оказалась доступной на форуме Ubiquiti

Постфактум нашел про установку UniFi на PfSense, но было поздно. Вариант с 6-й джавой с “протекшей” памятью уже работал. Тем не менее, ссылка: https://community.ubnt.com/t5/UniFi-Wireless/Tutorial-UniFi-3-1-4-running-on-pfSense-2-1-RC/td-p/539534

Ставим в Jail

  • Jail поставил согласно описанию в Jails in PFSense
  • Заходим в наш единственный Jail.
    jexec 1 tcsh

  • Чтобы хоть-что-то поставить, там надо настроить резолвер.

    cat >> /etc/resolv.conf
    search chroot.ru
    nameserver 192.168.1.1

  • В этот Jail надо сперва ставить pkg.

    pkg; pkg update

  • Теперь можно ставить mongodb. Дай бог, не какую-то определенную версию, и базовый pkg подойдет.

    pkg install mongodb

  • Оно потащит кучу зависимостей, но уж куда деваться… Соглашаемся поставить 270 мегов:

      	mongodb: 2.6.7
      	v8: 3.18.5
      	python27: 2.7.9
      	libffi: 3.2.1
      	indexinfo: 0.2.2
      	gettext-runtime: 0.19.4
      	python2: 2_3
      	pcre: 8.35_2
      	snappy: 1.1.1_1

  • Оно также напомнит, что стандартная установка Python включает некоторые модули, которые не были поставлены, но они доступны самостоятельно. Это:

    bsddb           databases/py-bsddb
    gdbm            databases/py-gdbm
    sqlite3         databases/py-sqlite3
    tkinter         x11-toolkits/py-tkinter

  • Однако, mongo надо разрешить в /etc/rc.conf:

    sysrc mongod_enable=YES

  • Также нам понадобятся curl, wget и openjdk8-jre; последняя притащит еще 38 пакаджей на 131 Мб. Берем все:

    	openjdk6-jre: b34,1
    	libXtst: 1.2.2_2
    	recordproto: 1.14.2
    	libXi: 1.7.4,1
    	xproto: 7.0.26
    	libXfixes: 5.0.1_2
    	libX11: 1.6.2_2,1
    	libxcb: 1.11
    	libXdmcp: 1.1.1_2
    	libXau: 1.0.8_2
    	libxml2: 2.9.2_2
    	libpthread-stubs: 0.3_6
    	kbproto: 1.0.6
    	fixesproto: 5.0
    	libXext: 1.3.3,1
    	xextproto: 7.3.0
    	expat: 2.1.0_2
    	inputproto: 2.3.1
    	libXpm: 3.5.11_2
    	libXt: 1.1.4_2,1
    	libSM: 1.2.2_2,1
    	libICE: 1.0.9,1
    	open-motif: 2.3.4_2
    	xbitmaps: 1.1.1
    	libXaw: 1.0.12_2,2
    	printproto: 1.0.5
    	libXp: 1.0.2_2,1
    	libXmu: 1.1.2_2,1
    	libXft: 2.3.2
    	libXrender: 0.9.8_2
    	renderproto: 0.11.1
    	fontconfig: 2.11.1,1
    	freetype2: 2.5.5
    	java-zoneinfo: 2014.j
    	png: 1.6.16
    	jpeg: 8_6
    	dejavu: 2.34_4
    	javavmwrapper: 2.5

  • В блоге UniFi, раздел апдейтов https://community.ubnt.com/t5/UniFi-Updates-Blog/bg-p/Blog_UniFi в статье, посвященной последнему апдейту, можно найти ссылку на скачивание архива UniFi для UNIX. Я нашел вот эту ссылку: Версия 3.2.10

Еще пока доступны для загрузки 4.8.20 UniFi 5.0.6 и версия 5.2.9

Различные доступные версии найти можно тут: https://www.ubnt.com/download/unifi Там жмем “See past firmware”. Дальше берем линк https://www.ubnt.com/downloads/unifi/X.X.X/UniFi.unix.zip и вместо X.X.X вставляем цифры версий из списка. Несмотря на то, что анонсирован софт для винды, мака и Убунты, юниксовый софт у тех версий тоже есть, только он не указан явно. Так я нашел версию 5.5.19

Здесь сохранены версии 3.2.10 UniFi 3.2.10 , 4.7.5 UniFi 4.7.5, 4.8.15 UniFi 4.8.15, 5.0.6 UniFi 5.0.6, 5.2.9 UniFi 5.2.9, 5.3.8, 5.4.11 и 5.5.19

  • Скачиваем и разархивируем последнюю (4.8.12) версию :
    cd
    wget https://www.ubnt.com/downloads/unifi/5.5.19/UniFi.unix.zip
    unzip UniFi.unix.zip

    Как вариант, можно ставить старую версию 3.2.10, она поменьше и заточена только под UniFi:

    wget http://www.ubnt.com/downloads/unifi/3.2.10/UniFi.unix.zip

  • Создаем место, где будут жить логи нашего контроллера:

    cd ~/UniFi; mkdir logs; chmod a+r logs

  • Узнаем, где живет mongod:

    which mongod

    По умолчанию - /usr/local/bin/mongod

  • В мануале (readme) написано прописать в файле bin/mongod путь к mongo - но это не работает. Надо делать алиас.

    cd ~/UniFi/bin/ && rm mongod; ln -s /usr/local/bin/mongod mongod

  • Конфиг mongod пишется в YAML - формате и должен лежать в /usr/local/etc/mongodb.conf. Но он не нужен.
  • Создаем место, где будет жить база mongod:

    mkdir -p /data/db

  • Разрешаем запуск mongod и запускаем его:

    sysrc mongod_enable=YES ; service mongod start

  • Монго может не запускаться, причину смотрим через

    tail -40 /var/db/mongodb/mongod.log

  • Капризничало из-за того, что ERROR: listen(): bind() failed errno:13 Permission denied for socket: /tmp/mongodb-27017.sock. Чиним с помощью chmod 1777 /tmp
  • Теперь можно бы и запускать нашу шарманку, но сперва положим ее “по понятиям”:

    cd ~/ && mv UniFi /usr/local/; cd /usr/local/UniFi && java -jar lib/ace.jar start &

  • Однако, если принудительно не ограничивать аппетиты Java8, она сама берет себе 10 гигов оперативы. Посему ограничиваем. При запуске. Следующим образом:

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

  • Например, для запуска UniFi через родительскую машину, делаем в PFSens-e следующий скрипт:

    #!/bin/sh
    JLID=`jls | grep ubnt | awk '{print $1}'`
    jexec $JLID java -Xmx2048m -jar /usr/local/UniFi/lib/ace.jar start &

  • Гасим соответственно

    #!/bin/sh
    JLID=`jls | grep ubnt | awk '{print $1}'`
    jexec $JLID java -jar /usr/local/UniFi/lib/ace.jar stop

Автозапуск UniFi

Чтиво: RC-скрипт

Создаем “по понятиям” сервис UniFi. Для этого по адресу

/usr/local/etc/rc.d/unifi

кладем исполняемый фал следующего содержания:

unifi
#!/bin/sh
# PROVIDE: unifi
# REQUIRE: mongod 
# BEFORE: LOGIN
# KEYWORD: shutdown
. /etc/rc.subr
 
name="unifi"
rcvar=unifi_enable
 
start_cmd="${name}_start"
stop_cmd="${name}_stop"
 
unifi_start()
{
cd /usr/local/UniFi/
/usr/local/bin/java -Xmx768m -Xms768m -jar /usr/local/UniFi/lib/ace.jar start &
}
 
unifi_stop()
{
cd /usr/local/UniFi/
/usr/local/bin/java -jar /usr/local/UniFi/lib/ace.jar stop &
}
 
load_rc_config $name
run_rc_command "$1"

В резуьтате его можно запскать вручную:

service unifi onestart

или прописать в /etc/rc.conf командой

sysrc unifi_enable=YES
embedded/pfsense_and_ubiquiti.txt · Last modified: 2017/10/18 03:42 by rybario
About this template
CC Attribution-Share Alike 4.0 International
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5