Установка и настройка Nodeny Блог +Прошивка и разработка+ - Установка и настройка Nodeny

Блог +Прошивка и разработка+

Подробная установка и настройка биллинговой системы Nodeny (ноудени) на операционную систему FreeBSD.
Пароль
Регистрация
Yandex Google Вконтакте Mail.ru Twitter Loginza WebMoney

Установка и настройка Nodeny

Дата публикации: 12.12.2016г.
Рейтинг 4.29 Голосов: 287

Установка и настройка NODENY (FreeBSD)

Установка и настройка Nodeny

Установка и настройка NODENY (FreeBSD) 2016-12-12 install-nodeny-freebsd 200 300 200 300 Блог +Прошивка и разработка+ Рейтинг 4.29 / 5 287

Установка и настройка Nodeny

Поделится: Поделиться В Контакте Поделиться в Моем Мире@Mail.Ru Добавить в Одноклассники Поделиться в Facebook

Установка и настройка Nodeny

Устанавливаем ОС

Загружаем с офсайта образ FreeBSD 10 или 11 под архитектуру amd64 или i386 в зависимости от типа процессора вашего сервера.


Я вам покажу пару вариантов установки и сборки Freebsd и Nodeny.

Можно использовать такой вариант установки

  • Выбираем тип установки Standard
  • В FDISK Partition Editor нажимаем «a», т.е. системе выдаем в пользование полный диск
  • В Boot Manager выбираем Standard
  • При разметке диска, установщик выделяет бОльшую его часть разделу /usr, а в нашем случае необходимо место для раздела /var, поскольку там будет хранится база данных, создаем
      1G    /
      1G    swap
      1G    /tmp
      10G   /usr
      xxxG  /var
    
    Если же наша установка тестовая, то можно выбрать стандартный вариант, нажав «a»
  • В меню конфигураций выбираем Minimal
  • После установки, инсталятор задаст несколько вопросов, вам стоит обратить внимание на:
    • Would you like to enable SSH login? - выбирайте yes, чтобы можно было зайти по ssh на сервер
    • Соглашайтесь на вопрос создания юзера: укажите свой логин, введите группу 0 (ноль), пароль
    • Введите пароль root.
    Остальные параметры по умолчанию, за исключением того, что не нужно включать inetd, а также ставить какие-либо пакеты

Или можно

  • Выбираем Install
  • Идет выбор раскладки, оставляем первое значение по-умолчанию
  • Далее указываем имя сервера. Я назвал его nodeny
  • Теперь предстоит выбрать состав установки. Можно ничего не выбирать, а все, что нужно, поставить потом отдельно. Но по моему опыту, дерево портов ports и исходные коды системы src чаще всего нужны, поэтому выбираем их
  • После этого установщик нам сообщает, что установочных файлов на данном диске нет, их надо загрузить из интернета и следующим шагом предлагает настроить сетевой интерфейс. Сделаем это. Выбираем сетевую карту, которая смотрит в интернет. Дальше нам предлагают ввести настройки IPv4 для этого интерфейса, соглашаемся
  • У меня настройки приходят по DHCP, поэтому на следующем шаге я соглашаюсь с тем, что принимаю настройки по DHCP
  • Следующим шагом предлагается настроить IPv6. Нам это не нужно, отказываемся
  • Далее появляется экран с настройками DNS сервера. Указываем свой или google dns 8.8.8.8 и 8.8.4.4
  • На следующем этапе нам нужно выбрать, как разбивать жесткий диск. Обычно это самая трудная и не понятная новичкам процедура. Мы не будем вдаваться в подробности этого процесса, выберем самый простой — автоматическая разбивка всего диска, 1-й пункт
  • Указываем, что хотим использовать весь диск
  • На следующем шаге оставляем все параметры по-умолчанию и выбираем Finish
  • В окне с подтверждением соглашаемся с тем, что делаем, выбирая Commit
  • Дальше начинается автоматический процесс разбивки диска и установки Freebsd. Дожидаемся его окончания, которое будет обозначено предложением задать пароль root. Делаем это
  • Далее нас спрашивают, установлены ли часы системы в соответствии с гринвичем, или нет.Выбираю Yes и указываем страну и область где находится сервер.
  • После выбора часового пояса, нужно указать, какие службы будут запущены. Нам пригодятся ssh и ntpd
  • Затем нам предложат добавить пользователей к системе. Отказываемся, сделаем это позже по мере необходимости. На этом установка закончена. Мы оказываемся в меню установщика, где можем внести еще какие-то изменения в установку. Но нам это не нужно. Выбираем Exit и жмем Ok
  • Перезагружаемся. На этом установка системы окончена

После первой перезагрузки логинимся по ssh под нашим логином и становимся root-ом:

su

Чтоб работал IPDIVERT и IPFIREWALL нужно будет пересобрать ядро FreeBSD

Для этого нам понадобится сделать пару действий и подождать 30-40 минут

для AMD64:

cd /usr/src/sys/amd64/conf

для i386:

cd /usr/src/sys/i386/conf

Файл будет называться GENERIC

Скопируем этот файл в ту же папку с другим именем, например BLOG-ZMAP:

cp GENERIC BLOG-ZMAP

Открываем файл ZMAP-BLOG

mcedit BLOG-ZMAP
находим строку ident GENERIC
исправляем её на ident BLOG-ZMAP

и пишем в самом конце
options IPDIVERT
options IPFIREWALL
И ОБЯЗАТЕЛЬНО ДЕЛАЕМ ПУСТУЮ СТРОКУ В КОНЦЕ ФАЙЛА

Все теперь можно собирать ядро

Переходим в папку:
cd /usr/src
и собираем
make buildkernel KERNCONF=BLOG-ZMAP
.... ждем приблизительно 30 минут....
после того, как ядро будет собрано, устанавливаем его
make installkernel KERNCONF=BLOG-ZMAP

Все на этом ядро собрано останется нам только перезагрузить.... после перезагрузки нам нужно будет подключить монитор и разрешить в SSH подключение так как ipfw заблокирует (к примеру разрешить всем ipfw add 1 allow ip from any to any)

Настраиваем rc.conf

ee /etc/rc.conf

Редактируем rc.conf

hostname="nodeny.com.ua"
defaultrouter="1.2.3.1"
ifconfig_fxp0="inet 10.0.0.1 netmask 255.255.255.0"
ifconfig_fxp1="inet 1.2.3.4 netmask 255.255.255.0"
ifconfig_lo0_alias0="inet 1.1.1.1 netmask 255.255.255.255"
fsck_y_enable="YES"
background_fsck="NO"
sshd_enable="YES"
firewall_enable="YES"
gateway_enable="YES"
named_enable="YES"

background_fsck="NO" отключает проверку дисков в бекграунде и делает при старте, fsck_y_enable="YES" говорит "yes" на все вопросы при проверке.

1.1.1.1 - виртуальный ip, который автор настраивает на всех своих серверах на интерфейсе lo0. Этот ip клиенты указывают в своих настройках в качестве dns сервера, сервера авторизации и т.д.

Интерфейс fxp1 смотрит на шлюз вышестоящего провайдера с ip 1.2.3.1.

Интерфейс fxp0 смотрит в сеть клиентов.

Добавляем в файлы:

echo '/sbin/ipfw add 100 allow ip from any to any' > /etc/rc.firewall
echo pf_load=\"YES\" >> /boot/loader.conf
echo pf_enable=\"YES\" >> /etc/rc.conf
echo ipfw_load=\"YES\" >> /boot/loader.conf
echo ipdivert_load=\"YES\" >> /boot/loader.conf
echo dummynet_load=\"YES\" >> /boot/loader.conf

DNS-сервер

echo 'nameserver 8.8.8.8' > /etc/resolv.conf

Обновляем систему:

Обновляем и устанавливаем:

freebsd-update fetch
freebsd-update install

Обновляем и устанавливаем дерево портов

portsnap fetch
portsnap extract

Ставим perl, обязательно выбирая опцию 'THREADS - Build threaded perl'

cd /usr/ports/lang/perl5.14/
make install clean
pkg_add -r bash 
pkg_add -r subversion
pkg_add -r mc-light
rehash 2> /dev/null

Назначаем bash дефолтным для учетной записи root:

pw usermod root -s /usr/local/bin/bash

Команда bash

echo 'WITHOUT_X11=yes' >> /etc/make.conf
echo 'WITHOUT_GUI=yes' >> /etc/make.conf

Загружаем NoDeny+

cd /usr/local
svn co svn://nodeny-plus.com.ua/release nodeny

Настраиваем nat

cp /usr/local/nodeny/etc/pf.conf /etc/
ee /etc/pf.conf
В первой строке указываем интерфейс, который смотрит на вышестоящего провайдера.
pfctl -N -f /etc/pf.conf

Пробуем с клиентского компьютера получить доступ в интернет через наш сервер. Пингуем с него 8.8.8.8.

Если не пингуется

tcpdump -ifxp1 -p -n icmp

Если пакеты, идущие на 8.8.8.8 идут от ip клиента, значит nat у нас не работает. Смотрим pf.conf все ли мы верно там указали.

На клиентском компьютере в качестве DNS устанавливаем опять же ip 8.8.8.8 (DNS от Google). Проверяем ping ya.ru

Настраиваем локальный DNS

Команды bash

echo named_enable=YES >> /etc/rc.conf
ee /etc/namedb/named.conf

Редактируем named.conf

    listen-on { 127.0.0.1; 1.1.1.1; };

Команда bash

/etc/rc.d/named forcerestart

На клиентском компьютере в качестве DNS устанавливаем 1.1.1.1.

Настраиваем сбор статистики трафика

pkg_add -r ipcad
echo ipcad_enable=YES >> /etc/rc.conf
cp /usr/local/nodeny/etc/ipcad.conf /usr/local/etc/
ipcad -d
ipfw add 10 divert 1 ip from any to any not via lo0
rsh 0 show ip acco

Фаервол с блокировкой не авторизованных клиентов

Команды bash

cp /usr/local/nodeny/etc/rc.firewall /etc/
ee /etc/rc.firewall

Редактируем rc.firewall, меняем внешний интерфейс

ifOut='fxp1'

Команда bash

reboot

После перезагрузки проверяем, что все модули подгрузились.

С клиентского компьюетра пингуем ya.ru. Адрес Яндекса получаем, но ping не идет

Если ip Яндекса не получен: не работает локальный DNS либо неправильно настроен фаервол либо у клиента в качестве DNS указан не 1.1.1.1.

Если ping идет - фаервол не загружен

Выполняем

ipfw table 100 add 0.0.0.0/0

Пинг должен пойти. В противном случае

ps ax | grep ipcad
ipfw show

Выполняем

rsh 0 show ip acco

Получаем таблицу, по которой видна информация по трафику между клиентом и Яндексом.

Устанавливаем MySQL-сервер

Устанавливаем mysql 5.5

pkg_add -r mysql55-server

Создаем конфиг

cp /usr/local/share/mysql/my-huge.cnf /etc/my.cnf
ee /etc/my.cnf

Редактируем my.cnf, секция [mysqld]

skip-character-set-client-handshake
skip-name-resolve

Стартуем mysql-сервер

/usr/local/etc/rc.d/mysql-server forcestart

Устанавливаем пароль root в mysql

mysqladmin -u root password 'hardpass'

Автозапуск при старте системы

echo mysql_enable=YES >> /etc/rc.conf

Создаем структуру БД NoDeny+

mysql -u root --password='hardpass'

Команды mysql

create database nodeny;
use nodeny;
source /usr/local/nodeny/bill.sql;

Устанавливаем Web-сервер

Устанавливаем apache 2.2 или 2.4

pkg_add -r apache22

Автозапуск

echo apache22_enable=YES >> /etc/rc.conf
echo /sbin/kldload accf_http >> /etc/rc.local

Стартуем

apachectl start

Открываем в браузере

http://10.0.0.1/

Если не получаем приветствующего сообщения «It works!» - смотрим логи

tail /var/log/httpd-error.log

Устанавливаем модули perl:

Ставим все модуля которые нам потребуются

cd /usr/ports/databases/p5-DBD-mysql && make install clean
cd /usr/ports/security/p5-Crypt-Rijndael && make install clean
cd /usr/ports/converters/p5-JSON && make install clean
cd /usr/ports/converters/p5-JSON-XS && make install clean

Завершаем установку NoDeny+

По умолчанию во FreeBSD путь к cgi-bin и корню www: /usr/local/www/apache22/. Следующие команды удалят cgi-bin и data (www корень), после чего создадут символические линки на папки cgi-bin и htdocs внутри /usr/local/nodeny/

rm -fR /usr/local/www/apache22/cgi-bin
rm -fR /usr/local/www/apache22/data
ln -s /usr/local/nodeny/cgi-bin/ /usr/local/www/apache22/cgi-bin
ln -s /usr/local/nodeny/htdocs/ /usr/local/www/apache22/data

Подключим модули (-x), установим владельца и права на файлы (-w), создадим стартовый конфиг (-m), создадим суперадмина (-p):

cd /usr/local/nodeny
perl install.pl -x
perl install.pl -w=www
perl install.pl -m
perl install.pl -p admin=12345

Входим в админку под логином admin и паролем 12345

http://10.0.0.1/cgi-bin/stat.pl

Если в левом верхнем углу появится эмблема NoDeny+, то заходим в настройки и устанавливаем в «да» параметр «установите "да" если путь к изображениям корректен»

Переходим по ссылке с логином текущего администратора в верхнем меню, в нашем случае «admin». Далее по ссылке «Администраторы» и меняем пароль своей учетке, а также выдаем все привилегии.

Изменяем следующие настройки

  • Тарификация → Денежная еденица
  • Объекты. Внесите несколько основных улиц вашей сети.
  • Доп.поля. Удалите поля, которые не потребуются для данных ваших клиентов и добавьте нужные. Например, если вам необходимо поле «Город», то вам необходимо создать запись:
    • Имя поля: Город
    • Имя поля в бд: _adr_city
    • Тип поля: выпадающий список
    • Регулярное выражение: city
    После этого, вам необходимо зайти в настройках в раздел «Объекты» и внести несколько городов, установив параметр «Тип» в значение «city».

Создаем клиентскую учетную запись, после чего устанавливаем в значение «Всегда онлайн» параметр «Авторизация» - это позволит клиенту получить доступ в интернет без авторизации вначале тестирования. Также добавляем ip и услугу «1 Мбит».

Запуск ядра NoDeny+

Ядро NoDeny+ работает в фоне и выполняет следующие функции: обработка авторизаций, сбор статистики трафика, управление услугами и т.д. Конфиги находятся в файлах /usr/local/nodeny/kernel/*.cfg. Обязательный параметр run - указывает будет ли плагин запущен при старте ядра или нет. Если run установлен в 0, то плагин можно запустить только указав его в параметрах командной строки при запуске ядра.

Получим список всех плагинов

perl nokernel.pl -L

Напротив названия модуля 1 означает, что модуль будет запускаться автоматически при старте ядра.

Запускаем ядро со стандартным набором модулей

perl nokernel.pl

Если на консоль не вывело никаких ошибок - ядро успешно запустило все модули.

Запускаем скрипт управления фаерволом

perl noserver.pl -v

Если на консоль не вывело никаких ошибок - ставим в автозагрузку:

echo '/usr/bin/perl /usr/local/nodeny/nokernel.pl -d &' >> /etc/rc.local
echo '/usr/bin/perl /usr/local/nodeny/noserver.pl -d &' >> /etc/rc.local

Запускаем скрипты в фоне

perl /usr/local/nodeny/nokernel.pl -d &
perl /usr/local/nodeny/noserver.pl -d &

Печать

Комментарии (0)

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Copyright © 2016 zmap
    Использование любых материалов сайта возможно только с разрешения автора.