Недавно устанавливал сервер для маленькой домашней сети. Сервер в основном
используется для организования доступа в Интернет. В начале думал взять свою
связку (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=cp1251 WITH_COLLATION=cp1251_bin
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.15005
set console open
# configure the web server
set web self 0.0.0.05006
set web open
default:
load pppoe_server
pppoe_server:
create bundle template B
set ipcp ranges 10.10.10.254/3210.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 2060
set link enable incoming
set link no acfcomp protocomp
radius:
set radius server 127.0.0.1 PASSWD 18121813
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.15005
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 18121813
Не забываем также про ТАБуляцию, свойственную
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 | |
| +----------------------------------------------------------------+ |
| |
+--------------------------------------------------------------------+
4. Добавляем нужные модули perl. Также
проверьте пусть к бинарнику перла. К примеру в 8-ке он лежит уже не в
/usr/bin/perl , а в /usr/local/bin/perl. По-этому я делал
симлинк:
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
accf_http_load="YES"
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.
где первая цифра (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) Проверяем, может ли пользователь авторизироваться в
радиусе:
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. Для подключения к интернет нажимайте
Подключение.
Дальше проверяем работу интернета, скорость закачки.
Если что-то не так смотрим логи.