|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> подсчёт трафика
—> mpd5 + radius + ng_car + Abills
mpd5(pppoe)+radius+ng_car+Abills
Автор: schizoid.
Недавно устанавливал сервер для маленькой домашней сети. Сервер в основном используется для организования доступа в Интернет.
В начале думал взять свою связку (mpd + netams + ipfw + pipe + sh_scripts), но потом захотелось чего-то новенького, свеженького (да и намучено у меня там со скриптами и т.д., долго пришлось бы объяснять что к чему).
И вот остановился на связке:
mpd5 - в качестве pppoe-сервера (кому не нравится pppoe - ставьте pptp, думаю особой разницы в настройке не будет)
radius - как сервер AAA
Abills - в качестве биллинговой системы
ng_car - шейпинг (потому что раньше его не пробовал :) )
Основные настройки брал на официальном сайте Abills'a.
Предполагается, что система у вас уже установлена. В начале на тесте я ставил на FreeBSD 8.0-RC1 #0.
Затем переносил настройки на FreeBSD 7.2-RELEASE #0.
Также у вас должен быть установлен и настроен mysql-server. Я использовал mysql-server-5.0.86 с make-флагами
make WITH_CHARSET=utf8 WITH_COLLATION=cp1251_bin
| Также у вас должно быть собрано ядро с:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options IPFIREWALL_FORWARD
options NETGRAPH
options NETGRAPH_IPFW
options LIBALIAS
options NETGRAPH_NAT
options NETGRAPH_NETFLOW
options NETGRAPH_SPLIT
options NETGRAPH_ECHO
options NETGRAPH_ETHER
options NETGRAPH_TEE
options NETGRAPH_BPF
options NETGRAPH_IFACE
options NETGRAPH_KSOCKET
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_SOCKET
options NETGRAPH_TCPMSS
options NETGRAPH_VJC
| либо загрузить модулем:
Остальное, что нужно mpd он сам загрузит.
И так, приступим.
1. Abills.
# whereis abills
# cd /usr/ports/net/abills
| В портах есть abills-0.41. На сайте сть 0.5-я версия. Я ставил из портов.
Создаем пользователя для абиллса:
use mysql;
INSERT INTO user (Host, User, Password)
VALUES ('localhost','abills', password('sqlpassword'));
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv,
Delete_priv, Create_priv, Drop_priv, Index_priv, Alter_priv,
Lock_tables_priv, Create_tmp_table_priv)
VALUES ('localhost','abills','abills','Y','Y','Y','Y','Y',
'Y','Y','Y','Y','Y');
CREATE DATABASE abills;
flush privileges;
| Загружаем таблицы в базу.
# mysql -D abills < /usr/local/abills/abills.sql
| Правим /usr/local/abills/libexec/config.pl
#DB configuration
$conf{dbhost}='localhost';
$conf{dbname}='abills';
$conf{dbuser}='abills';
$conf{dbpasswd}='sqlpassword';
$conf{ADMIN_MAIL}='info@your.domain';
$conf{USERS_MAIL_DOMAIN}="your.domain";
# используется для шифрования паролей администраторов и пользователей.
$conf{secretkey}="test12345678901234567890";
| При изменении значения в $conf{secretkey} поменяйте его также в файле abills.sql
Вносим в cron периодические процессы /etc/crontab
*/5 * * * * root /usr/local/abills/libexec/billd -all
1 0 * * * root /usr/local/abills/libexec/periodic daily
1 1 * * * root /usr/local/abills/libexec/periodic monthly
| В /usr/local/abills/libexec/config.pl добавляем
2. mpd5
Настройка mpd5 уже не раз обсуждалась, но в кратце повторюсь, для полноты картины так сказать.
Для того, что бы собрать mpd с поддержкой ng_car рекомендуют, что бы модуль ng_car был уже загружен ядром.
# whereis mpd5
# cd /usr/ports/net/mpd5
# make install clean
|
+--------------------------------------------------------------------+
| Options for mpd 5.2 |
| +----------------------------------------------------------------+ |
| | [X] NG_CAR Use ng_car kernel module from port (< 7.0 only)| |
| | [ ] NG_IPACCT Use ng_ipacct kernel module from port | |
| | | |
| | | |
| | | |
| | | |
+-+------v(+)------------------------------------------------------+-+
| [ OK ] Cancel |
+--------------------------------------------------------------------+
|
# cd /usr/local/etc/mpd5
# cp mpd.conf.sample mpd.conf
| После установки правим дефолтный конфиг до такого состояния:
startup:
# configure mpd users
set user admin PASSWD admin
# set user foo1 bar1
# configure the console
set console self 127.0.0.1 5005
set console open
# configure the web server
set web self 0.0.0.0 5006
set web open
default:
load pppoe_server
pppoe_server:
create bundle template B
set ipcp ranges 10.10.10.254/32 10.10.10.0/24
set iface idle 0
set iface enable tcpmssfix
set ipcp no vjcomp
set iface up-script "/usr/local/abills/libexec/linkupdown mpd up"
set iface down-script "/usr/local/abills/libexec/linkupdown mpd down"
set bundle enable compression
set ccp yes mppc
set mppc yes e40
set mppc yes e128
set mppc yes stateless
create link template common pppoe
set link enable multilink
set link action bundle B
set link disable pap eap
set link enable chap
load radius
set pppoe service "*"
create link template em0 common
set link max-children 1000
set pppoe iface em0
set link enable incoming
set link no pap eap
set link yes chap-md5
set link keep-alive 20 60
set link enable incoming
set link no acfcomp protocomp
radius:
set radius server 127.0.0.1 PASSWD 1812 1813
set radius retries 3
set auth acct-update 300
set auth enable radius-auth
set auth enable radius-acct
set radius enable message-authentic
| Обращаем внимание на слудющие строки:
Они понадобятся для настройки Abills'a.
set user admin PASSWD admin
set console self 127.0.0.1 5005
| em0 - интерфейс, на котором слушает mpd5 (pppoe)
create link template em0 common
set link max-children 1000
set pppoe iface em0
set link enable incoming
| PASSWD - пароль для подключения к радиус-серверу.
set radius server 127.0.0.1 PASSWD 1812 1813
| Не забываем также про ТАБуляцию, свойственную mpd.
3. FreeRadius. Пробовал freeradius2, но с ним у меня что-то не срослось. Интерфейс поднимался и через несколько секунд падал. Я не победил, по-этому переполз на 1-й.
# whereis freeradius
# cd /usr/ports/net/freeradius
# make install clean
|
+--------------------------------------------------------------------+
| Options for freeradius 1.1.7_4 |
| +----------------------------------------------------------------+ |
| |[ ] KERBEROS With Kerberos support | |
| |[ ] HEIMDAL With Heimdal Kerberos support | |
| |[ ] LDAP With LDAP database support | |
| |[X] MYSQL With MySQL database support | |
| |[ ] PGSQL With PostgreSQL database support | |
| |[ ] UNIXODBC With unixODBC database support | |
| |[ ] FIREBIRD With Firebird database support (EXPERIMENTAL) | |
| |[ ] SNMP With SNMP support | |
| |[ ] EDIR With Novell eDirectory support | |
| |[ ] NOPERL Do not require perl (use only if necessary) | |
| |[X] EXPERIMENTAL Build experimental modules | |
| +----------------------------------------------------------------+ |
| |
+--------------------------------------------------------------------+
| После успешной установки правим конфиги радиуса:
# cd /usr/local/etc/raddb
| файл users
DEFAULT Auth-Type = Accept
Exec-Program-Wait = "/usr/local/abills/libexec/rauth.pl"
| файл acct_users
DEFAULT Acct-Status-Type == Start
Exec-Program = "/usr/local/abills/libexec/racct.pl"
DEFAULT Acct-Status-Type == Alive
Exec-Program = "/usr/local/abills/libexec/racct.pl"
DEFAULT Acct-Status-Type == Stop
Exec-Program = "/usr/local/abills/libexec/racct.pl"
| в файл clients.conf прописываем пароль для доступа к радиус-серверу, тот что мы указывали в mpd.conf
client 127.0.0.1 {
secret = PASSWD
}
| В файле radiusd.conf
Нужно создать функции для преавторизации и поставторизации в секции 'modules'
exec pre_auth {
wait = yes
program = "/usr/local/abills/libexec/rauth.pl pre_auth"
input_pairs = request
output_pairs = config
}
exec post_auth {
wait = yes
program = "/usr/local/abills/libexec/rauth.pl post_auth"
input_pairs = request
output_pairs = config
}
| Комментируем использование модулей 'chap' и добавим 'pre_auth' в разделе 'authorize'
authorize {
preprocess
# chap
# counter
# attr_filter
# eap
# suffix
files
# etc_smbpasswd
# sql
mschap
pre_auth
}
| Для оповещения о неавторизированых пользователях. Внесите в секцию 'post-auth'
post-auth {
Post-Auth-Type REJECT {
post_auth
}
}
| Создаем словарь для мпд dictionary.mpd:
VENDOR mpd 12341
ATTRIBUTE mpd-rule 1 string mpd
ATTRIBUTE mpd-pipe 2 string mpd
ATTRIBUTE mpd-queue 3 string mpd
ATTRIBUTE mpd-table 4 string mpd
ATTRIBUTE mpd-table-static 5 string mpd
ATTRIBUTE mpd-filter 6 string mpd
ATTRIBUTE mpd-limit 7 string mpd
ATTRIBUTE mpd-input-octets 8 string mpd
ATTRIBUTE mpd-input-packets 9 string mpd
ATTRIBUTE mpd-output-octets 10 string mpd
ATTRIBUTE mpd-output-packets 11 string mpd
ATTRIBUTE mpd-link 12 string mpd
ATTRIBUTE mpd-bundle 13 string mpd
ATTRIBUTE mpd-iface 14 string mpd
ATTRIBUTE mpd-iface-index 15 integer mpd
ATTRIBUTE mpd-input-acct 16 string mpd
ATTRIBUTE mpd-output-acct 17 string mpd
ATTRIBUTE mpd-drop-user 154 integer mpd
| в файле dictionary добавляем строку:
4. Добавляем нужные модули perl. Также проверьте пусть к бинарнику перла. К примеру в 8-ке он лежит уже не в /usr/bin/perl , а в /usr/local/bin/perl. По-этому я делал симлинк:
# ln -s /usr/local/bin/perl /usr/bin/perl
|
# cd /root
# perl -MCPAN -e shell
o conf prerequisites_policy ask
install DBI
install DBD::mysql
install Digest::MD5
install Digest::MD4
install Crypt::DES
install Digest::SHA1
install Bundle::libnet
install Time::HiRes
quit
| 5. Настриваем apache
Добавляем
Include /usr/local/abills/misc/apache/abills_httpd.conf
| И сгенерим сертификаты:
# /usr/local/abills/misc/sslcerts.sh apache
| Имейте ввиду, нужно что бы Common Name (eg, YOUR name) []: совпадал с именем вашего сервера (hostname).
Стартуем apache.
Если ставите apache22 и в логах ругань на
[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter
|
то добавьте в /boot/loader.conf
6. Настраиваем Abbils.
Заходим на https://your.host:9443/admin/
Выбираем русский язык.
Теперь нужно сконфигурировать сервер доступа NAS
Идем в Система -> Сервер доступа
ID 1
IP 127.0.0.1
Название: NAS
Radius NAS-Identifier:
Описание:
Тип: mpd5:MPD 5.xx
Авторизация: SQL
External Accounting:
Alive (sec.): 60
Отключено:
:Управление:
IP:PORT: 127.0.0.1:5005 (тот, что настраивали в mpd.conf)
Пользователь: admin (тот, что настраивали в mpd.conf)
Пароль: PASSWD (тот, что настраивали в mpd.conf)
RADIUS Параметры (,)
| Теперь добавляем ему пул адресов, которые будут выдаваться клиентам при подключении к ВПН-серверу.
Заходим в IP POOLs
Название: first
FIRST IP: 10.10.10.1
Количество: 253
Приоритет: 0
| Если нужно больше, увеличиваем сеть или создаем еще пулы. Их будем указывать в тарифном плане.
Теперь настроим хотя бы один тарифный план: Система -> Internet -> Тарифные планы -> Добавить
Тут настраиваем по вкусу, при этом указываем пул-адресов (IP Pool:) и RADIUS Parameters (,).
RADIUS Parameters (,) - это собственно и есть параметры передаваемые радиусом системе ng_car.
Сюда для примера добавим:
mpd-limit+="in#1=all rate-limit 1024000 192000 384000",
mpd-limit+="out#1=all rate-limit 1024000 192000 384000"
| где первая цифра (rate-limit) собственно ограничение скорости при закачке
вторая - (normal burst) - какую полосу отдать за 1 секунду
третья - (extended burst) за первые полторы секунды
Формулы расчета burst (Cisco like rate-limit):
normal burst = configured rate * 3 / 16
extended burst = 2 * normal burst
| Теперь добавим пользователя Клиенты -> Логины -> Добавить
Затем привязываем к нему тарифный план. Далее исходя из тарифного плана (предоплата/постоплата) смотрим, нужно ли ему для успешной авторизации деньги на счету, и если нужны, то добавляем. Далее активируем пользователя.
Запускаем mpd, radius (предварительно добавив параметры запуска в rc.conf)
Проверяем, может ли пользователь авторизироваться в радиусе:
# radtest testuser testpassword 127.0.0.1:1812 0 PASSWD 0 127.0.0.1
| если ему выдался ИП и т.д., то все ок.
Для логирования mpd, добавляем следующее в /etc/syslog.conf
!mpd
*.* /var/log/mpd.log
| Создаем файл, даем права и рестартуем syslog
# touch /var/log/mpd.log
# chmod 600 /var/log/mpd.log
# /etc/rc.d/syslogd restart
| 7. Настроим ipfw и nat
Укажу минимальный набор правил для доступа пользователей в интернет:
rl1 - внешняя сетевая карта
rl0 - внутреняя сетевая карта
192.168.1.0/24 - локальная сеть
${eip} - Внешний IP-адрес
table(1) - содержит созданные вами пулы адресов
Фаервол по-умолчанию закрытый.
ipfw nat 100 config if rl1
allow ip from any to any via lo0
ipfw add allow ip from 192.168.1.0/24 to 192.168.1.0/24 via rl0
ipfw add allow ip from 'table(1)' to 'table(1)'
ipfw add nat 100 ip from 'table(1)' to any
ipfw add nat 100 ip from any to ${eip}
ipfw table 1 add 10.10.10.0/24
| Пробуем настроить соединение в Windows:
1. На рабочем столе откройте Мой компьютер, в нем откройте Панель управления. Здесь открывайте Сетевые подключения.
2. В пункте меню Файл выберете Новое подключение...
3. Нажимайте Далее
4. Выбирайте Подключится к Интернет и нажимайте Далее
5. Выбирайте Установить подключение вручную и нажимайте Далее
6. Выбирайте Через высокоскоростное соединение, запрашивающее имя пользователя и пароль и нажимайте Далее
7. В поле Имя поставщика услуг введите название соединения, INET. Нажимайте Далее
8. В поля Имя пользователя и Пароль вводите имя и пароль для входа в Интернет соответственно, и нажимайте Далее
9. Установите пункт Добавить ярлык подключения на рабочий стол и нажимайте Готово
10. Для подключения к интернет нажимайте Подключение.
Дальше проверяем работу интернета, скорость закачки. Если что-то не так смотрим логи.
Литература:
http://abills.net.ua/wiki/doku.php/abills:index
http://mpd.sourceforge.net/doc/mpd.html
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=21162.
размещено: 2009-12-19,
последнее обновление: 2010-01-11,
автор: schizoid
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat
Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills
Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS
Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
2009-11-13, gx_ua
fusefs-ntfs
Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
2009-11-12, Morty
LiveCD
Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
2009-09-27, lissyara
Samba как PDC
Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
2009-08-30, terminus
ipfw nat
Подробное руководство по ipfw nat, сложные случаи конфигурации.
2009-08-24, levantuev
HotSpot
Установка Hotspot системы в общественное заведение.
2009-08-18, lissyara
diskless
Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
2009-07-29, BAV_Lug
Видеонаблюдение
Настройка бюджетного варианта видеонаблюдения на удаленном объекте
2009-07-22, Cancer
OpenLDAP адресная книга
Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
|
Комментарии пользователей [39 шт.]