
Статья в разработке
Используемое ПО
OS FreeBSD 6.2 stable или выше
MySQL 5.X или выше
Perl 5.X с DBI DivertSocket NetPacket
Squid 3.0 или выше
OpenVPN + OpenSSL
Apache + php + perl
phpmyadmin
ну и немного мозгов :)
все указанное ПО распространяется бесплатно! кроме мозгов, мозги развиваются самостоятельно...
задача: настроить сервер с организацией авторизованного доступа через прокси сервер и OpenVPN как варианты подключения (OpenVPN туннель так же моно использовать для авторизованной раздачи интернета через wifi) к Интернету. Производить подсчет трафика каждого пользователя. Иметь возможность отключить доступ в реальном режиме. Ограничивать ширину канала на пользователя (фиксированно для категории пользователя). Вести базу пользователей и статистику трафика.
как опция надежности - програмный зеркальный raid
решение:
шаг 1 - пересборка ядра с нужными опциями
правим конфиг ядра
cd /usr/src/sys/i386/conf
cp GENERIC YADRO
редактируем YADRO
поддержка многопроцессорной платформы (в 7ке и выше включено по дефолту)
options SMP
включение поддержки фаервола ipfw в ядре плюс фичи диверта и управления скоростью
#фаервол в ядро
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=500
#диверт сокеты
options IPDIVERT
#управление скоростью
options DUMMYNET
options IPFIREWALL_FORWARD
#данная опция в 7ке и выше включена по дефолту
options TCP_DROP_SYNFIN
для работы openvpn
options IPSEC
#в freebsd 6.2
options IPSEC_ESP
#в freebsd 7.X
device crypto
cd /usr/src
make buildkernel KERNCONF=YADRO
пьем чай))) собирается долго, хотя на amd 64 x2 5400+ минут за 20-30 собирается ... если все собралось то
make installkernel KERNCONF=YADRO
можно еще чайку...
далее
shutdown -r now
после перезагрузки смотрим
uname -v
если видим название своего ядра то на этом шаг заканчиваем
шаг 2 - установка MySQL
шаг 3 - установка Apache + php + mysql + phpmyadmin
шаг 3 - установка Squid
шаг 4 - установка OpenVPN
шаг 5 - установка модулей perl
шаг 5 - конфигурирование ipfw
в /etc/rc.conf
firewall_enable="YES"
firewall_script="/etc/ipfw.sh"
в /etc/ipfw.sh
фаервол, самое главное и самое первое правило это
#!/bin/sh
#открытый localhost
ipfw add 1 allow all from any to any via lo0
рекомендую ставить его первым, потому что правила в цепочке проверяются по очереди и я ранее не придавая этому значения столкнулся с перегрузкой процессора при обмене двух братских прокси squid общающихся через localhost
шаг 6 - настройка natd
шаг 7 - самое основное, perl скриптинг и сращивание кирпичиков
примеры реализации: сервер реализован в моей локальной сети для малого бизнеса, работает больше года, постоянно модифицируется и дорабатывается в зависимости от возникающих задач








