Установка NoDeny: відмінності між версіями
Sv (обговорення | внесок) |
Sv (обговорення | внесок) |
||
Рядок 358: | Рядок 358: | ||
Создаем клиентскую учетную запись, после чего устанавливаем в значение «Всегда онлайн» параметр «Авторизация» - это позволит клиенту получить доступ в интернет без авторизации вначале тестирования. Также добавляем ip и услугу «1 Мбит». | Создаем клиентскую учетную запись, после чего устанавливаем в значение «Всегда онлайн» параметр «Авторизация» - это позволит клиенту получить доступ в интернет без авторизации вначале тестирования. Также добавляем ip и услугу «1 Мбит». | ||
<p></p> | |||
=Запуск ядра NoDeny+= | =Запуск ядра NoDeny+= |
Версія за 09:09, 7 серпня 2015
Вступление
Устанавливаем по такой схеме:
- Сначала настраиваем сервер так, чтобы он работал без NoDeny, т.е. предоставлял абонентам доступ в интернет: выполнял функции NAT, маршрутизации и локального DNS
- Настроим веб-интерфейс NoDeny
- Настроим серверные скрипты NoDeny
Установка и настройка сервера
Устанавливаем операционную систему
Загружаем с офсайта образ FreeBSD под архитектуру amd64 или i386 в зависимости от типа процессора вашего сервера. Версию желательно выбирать stable.
При установке можно выбирать рекомендуемые параметры, т.е. на все вопросы нажимать enter. Обращаем внимание на такие вещи:
- На вопрос "Would you like to add users to the installed system now?" отвечаем Yes и создаем пользователя. При этом на вопрос Login Group вводим 0 (ноль) - тогда наш пользователь сможет стать root с помощью команды su
После установки и перезагрузки
Если мы настраиваем тестовый сервер, то скорее всего выбрали получение ip по dhcp. Логинимся на сервер и выясняем какой ip он получил:
ifconfig
Далее удобнее выполнять настройку по ssh. Логинимся по ssh под созданным логином и становимся root-ом:
su
Настраиваем rc.conf
ee /etc/rc.conf
Добавляем в rc.conf
ifconfig_lo0_alias0="inet 1.1.1.1 netmask 255.255.255.255" fsck_y_enable="YES" background_fsck="NO" firewall_enable="YES" gateway_enable="YES" local_unbound_enable="YES"
Копируем следующий текст и выполняем на сервере одним блоком:
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
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
Устанавливаем пакетный менеджер PKGNG
/usr/sbin/pkg
На вопрос отвечаем «y»
pkg2ng
echo 'WITH_PKGNG="yes"' >> /etc/make.conf
echo 'daily_backup_pkgdb_enable="NO"' >> /etc/periodic.conf
cp /usr/local/etc/pkg.conf.sample /usr/local/etc/pkg.conf
pkg update -f
Устанавливаем необходимые программы
Устанавить perl можно довольно быстро
pkg install perl5
Но автор на всякий случай устанавливает из портов, чтобы удостовериться, что perl будет собран с опцей «THREADS - Build threaded perl» - не забудьте проверить это когда будет выведен список опций:
cd /usr/ports/lang/perl5.20/
make install clean
Ставим необходимые приложения
pkg install bash subversion mc-light sudo
Назначаем bash дефолтным для учетной записи root:
pw usermod root -s /usr/local/bin/bash
Загружаем 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
Игнорируем следующие ошибки:
No ALTQ support in kernel ALTQ related functions disabled
Настраиваем локальный dns
ee /var/unbound/unbound.conf
В секцию server добавляем строки
interface: 1.1.1.1 interface: 127.0.0.1 access-control: 0.0.0.0/0 allow
Проверяем корректность конфига:
unbound-checkconf
Должны получить в ответ:
unbound-checkconf: no errors in /var/unbound/unbound.conf
Стартуем dns:
/etc/rc.d/local_unbound restart
Проверяем
drill @1.1.1.1 nodeny.com.ua
Смотрим внимательно в ответ - в нем должен присутствовать ip адрес nodeny.com.ua
Проверяем, что клиенты получают доступ в интернет
На данном этапе сервер может выполнять свои функции без NoDeny, т.е. давать абонентам доступ в интернет. Пробуем с клиентского компьютера пропинговать 8.8.8.8. Если не пингуется, на сервере запускаем tcpdump (где fxp1 - интерфейс на вышестоящего провайдера):
tcpdump -ifxp1 -p -n icmp
Если пакеты, идущие на 8.8.8.8, идут от ip клиента, значит nat у нас не работает. Смотрим pf.conf все ли мы верно там указали.
На клиентском компьютере в качестве DNS устанавливаем 1.1.1.1 (наш локальный). Проверяем ping ya.ru
Настраиваем NoDeny
Устанавливаем MySQL-сервер
pkg install mysql56-server
Создаем конфиг
ee /etc/my.cnf
Редактируем my.cnf
[mysqld] skip-networking character-set-server=utf8 init-connect="SET NAMES utf8" query_cache_size=64M long_query_time=5 slow_query_log=1 slow_query_log_file=/var/db/mysql/slow.log collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8
Стартуем mysql-сервер
/usr/local/etc/rc.d/mysql-server forcestart
Устанавливаем пароль root в mysql. Если мы настраиваем боевой сервер, то вместо «password 'hardpass'» необходимо использовать ключ «-p» и ввести пароль с консоли - таким образом в истории bash не будет храниться пароль.
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;
Выходим:
exit;
Устанавливаем Web-сервер
pkg install apache24
Автозапуск
echo apache24_enable=YES >> /etc/rc.conf
Подправим конфиг
sed -i '' '1 s/.*/LoadModule cgi_module libexec\/apache24\/mod_cgi.so/' /usr/local/etc/apache24/httpd.conf
echo 'ServerName 0.0.0.0:80' >> /usr/local/etc/apache24/httpd.conf
Стартуем
apachectl start
Открываем в браузере
http://10.0.0.1/
Если не получаем приветствующего сообщения «It works!» - смотрим логи
tail /var/log/httpd-error.log
Установка веб-интерфейса NoDeny+
pkg install p5-DBD-mysql p5-Crypt-Rijndael net/p5-Net-ARP p5-JSON p5-JSON-XS
ln -s /usr/local/bin/perl /usr/bin/perl 2> /dev/null
По умолчанию во FreeBSD путь к cgi-bin и корню www: /usr/local/www/apache24/. Следующие команды удалят cgi-bin и data (www корень), после чего создадут символические линки на папки cgi-bin и htdocs внутри /usr/local/nodeny/
rm -fR /usr/local/www/apache24/cgi-bin
rm -fR /usr/local/www/apache24/data
ln -s /usr/local/nodeny/cgi-bin/ /usr/local/www/apache24/cgi-bin
ln -s /usr/local/nodeny/htdocs/ /usr/local/www/apache24/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+, то заходим в настройки и устанавливаем в «да» параметр «установите "да" если путь к изображениям корректен».
Изменяем следующие настройки:
- Тарификация → Денежная еденица
- Объекты. Внесите несколько основных улиц вашей сети.
- Доп.поля. Удалите поля, которые не потребуются для данных ваших клиентов и добавьте нужные. Например, если вам необходимо поле «Город», то вам необходимо создать запись:
- Имя поля: Город
- Имя поля в бд: _adr_city
- Тип поля: выпадающий список
- Тип объекта: city
- После этого, вам необходимо зайти в настройках в раздел «Объекты» и внести несколько городов, установив параметр «Тип» в значение «city».
Переходим по ссылке с логином текущего администратора в верхнем меню, в нашем случае «admin». Далее по ссылке «Администраторы» и меняем пароль своей учетке, а также выдаем все привилегии.
Создаем клиентскую учетную запись, после чего устанавливаем в значение «Всегда онлайн» параметр «Авторизация» - это позволит клиенту получить доступ в интернет без авторизации вначале тестирования. Также добавляем ip и услугу «1 Мбит».
Запуск ядра NoDeny+
Ядро NoDeny+ работает в фоне и выполняет следующие функции: обработка авторизаций, сбор статистики трафика, управление услугами и т.д. Конфиги находятся в файлах /usr/local/nodeny/kernel/*.cfg. Обязательный параметр run - указывает будет ли плагин запущен при старте ядра или нет. Если run установлен в 0, то плагин можно запустить только указав его в параметрах командной строки при запуске ядра.
Получим список всех плагинов
cd /usr/local/nodeny
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 &
Настройка авторизации клиентов
На этом этапе необходимо определиться с технологией подключения и авторизации абонентов. Наиболее распространено:
- ipoe + dhcp: удобен для абонентов - не нужно ничего настраивать на компьютере. Однако низкая безопасность т.к. злоумышленник может подделать свой мак-адрес и пользоваться интернетом за чужой счет
- ipoe + dhcp + option82: удобен для абонентов - не нужно ничего настраивать на компьютере. Хорошая безопасность. Однако требует установки управляемых свичей и их настройку.
- pppoe: относительно сложен для клиентов. Безопасность лучше чем при dhcp. Небольшое уменьшение пропускной способности внутри сети из-за пересылки дополнительных данных в pppoe протоколе.