Загружаем с офсайта образ FreeBSD 8.4 или 9.2 под архитектуру amd64 или i386 в зависимости от типа процессора вашего сервера.
1G / 1G swap 1G /tmp 10G /usr xxxG /var
su
ee /etc/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
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
freebsd-update fetch freebsd-update install
portsnap fetch
portsnap extract
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
pw usermod root -s /usr/local/bin/bash
echo 'WITHOUT_X11=yes' >> /etc/make.conf echo 'WITHOUT_GUI=yes' >> /etc/make.conf
cd /usr/local svn co svn://nodeny-plus.com.ua/release nodeny
cp /usr/local/nodeny/etc/pf.conf /etc/ ee /etc/pf.conf
pfctl -N -f /etc/pf.conf
tcpdump -ifxp1 -p -n icmp
Если пакеты, идущие на 8.8.8.8 идут от ip клиента, значит nat у нас не работает. Смотрим pf.conf все ли мы верно там указали.
На клиентском компьютере в качестве DNS устанавливаем опять же ip 8.8.8.8 (DNS от Google). Проверяем ping ya.ru
echo named_enable=YES >> /etc/rc.conf ee /etc/namedb/named.conf
listen-on { 127.0.0.1; 1.1.1.1; };
/etc/rc.d/named forcerestart
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
cp /usr/local/nodeny/etc/rc.firewall /etc/ ee /etc/rc.firewall
ifOut='fxp1'
reboot
Если 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
pkg_add -r mysql55-server
cp /usr/local/share/mysql/my-huge.cnf /etc/my.cnf ee /etc/my.cnf
skip-character-set-client-handshake skip-name-resolve
/usr/local/etc/rc.d/mysql-server forcestart
mysqladmin -u root password 'hardpass'
echo mysql_enable=YES >> /etc/rc.conf
mysql -u root --password='hardpass'
create database nodeny; use nodeny; source /usr/local/nodeny/bill.sql;
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/
tail /var/log/httpd-error.log
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
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
cd /usr/local/nodeny perl install.pl -x perl install.pl -w=www perl install.pl -m perl install.pl -p admin=12345
Ядро 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 &
На этом этапе необходимо определиться с технологией подключения и авторизации абонентов. Наиболее распространо: