-----
Все разработки опробованы на компактном сервере Favourite IS на основе ОС UNIX,
предназначенном для предоставления Интернет-доступа и Интернет-сервисов.
Ссылка в Интернет: http://is.nnz.ru
Взять сервер Favourite IS на тестирование. Mail to: Boginsky@nnz.ru <mailto:Boginsky@nnz.ru.>
-----
Биллинг для домашней сети, FreeBSD + FreeNIBS + Mpd
Постановка задачи:
Дано: Имеется локальная сеть и канал в Интернет.
Надо:
1. Отдавать людям Интернет за деньги
2. Иметь несколько тарифов
3. Обеспечить пристойный уровень безопасности.
Варианты
1. Авторизация по MAC/IP.
Эта система наиболее проста в реализации, но, к сожалению, полностью
дискредитировала себя, потому что подмена MAC-адреса делается
сравнительно просто, в частности в моей ДС было зафиксировано
несколько случаев подмены и MAC и IP.
К тому же, если удаленный хост находится за роутером, то вместо его
MAC-адреса отображается MAC роутера, и это еще больше затрудняет
использование этого метода авторизации.
2. Авторизация Логин/Пароль на Прокси-сервере
Неплохой метод авторизации, который удачно работает во многих
корпоративных сетях, где пользователям разрешены HTTP и FTP, и имеется
корпоративный почтовый сервер.
Но, для ДС этот метод мало подходит, потому что людям нужно принимать
почту, играть в игры и так далее, а ограничивать людей, которые платят
за трафик - это не наш метод.
3. Подключение через шифрованный VPN-канал.
Стандарт, который получил наибольшее распространение в коммерческих ДС
прежде всего из-за высокого уровня безопасности. Между пользователем и
сервером организуется шифрованный туннель, внутри которого передается
информация и считается трафик.
Моя статья - Именно про последний вариант, и про то, как я реализовал
его в своей ДС с использованием только open-source софта.
Выбор софта
Клиент:
У среднего клиента стоит Windows XP/2000/98.
Выбираем то, что ему (клиенту) проще настраивать - то есть входящее в
операционную систему стандартное "Подключение к виртуальной частной
сети".
Это означает, что мы будем использовать протокол PPTP с авторизацией
через MS-CHAP.
Сервер
На сервере будет стоять FreeBSD 5.3 - по понятным причинам =)
Но можно делать и под Linux, используя PoPToP вместо MPD...
1. VPN-сервер: MPD (Multi-link PPP daemon for FreeBSD) http://www.dellroad.org/mpd/
Умеет (с официального сайта):
- Multi-link PPP capability
- PAP, CHAP, and MS-CHAP authentication - Аутентификация по протоколу MS-CHAP
- PPP compression and encryption - Поддержка шифрования
- Point-to-Point Tunnelling Protocol (PPTP) - Поддержка PPTP
- PPP over Ethernet (PPPoE)
- RADIUS authentication support - Поддержка RADIUS.
Обратите внимание на последнюю строчку - RADIUS authentication
support.
Именно RADIUS мы будем использовать для управления VPN-сервером MPD.
2. RADIUS-сервер и биллинговая система
В качестве биллинговой системы выбран FreeNIBS
(http://nibs.is.kh.ua/), бесплатный биллинг, представляющий из
себя модуль для RADIUS-сервера FreeRadius (http://www.freeradius.org/).
Соответственно, сразу решилась проблема выбора RADIUS-сервера =)
В качестве базы данных FreeNIBS может использоваться MySQL и
PostgreSQL, я выбрал MySQL по причине лучшего с ней знакомства.
3. Web-Интерфейс для управления
Для FreeNIBS есть 3 варианта web-интерфейса: родной, идущий в одном
архиве с исходниками; Расширенный интерфейс WebNIBS
(http://webnibs.sourceforge.net/); Проект MaBill (http://www.mabill.ru/).
Первый слабоват и требует виртуальных доменов, третий излишне накручен
и сложен, выбираем WebNIBS.
Установка и настройка FreeNIBS
Ставим FreeRadius из портов, в нашем случае FreeRadius-1.0.1
# cd /usr/ports/net/freeradius/
# make patch
Мы получили распакованные исходники в /usr/ports/net/freeradius/work/freeradius-1.0.1/
Качаем версию FreeNIBS для Freeredius 1.0.1:
http://nibs.is.kh.ua/src/freeradius_nibs/f...s-1.0.1.tar.bz2
Распаковываем и получаем 2 каталога: /raddb и /src
Их содержимое надо скопировать в одноименные подкаталоги в исходниках
Freeradius:
/usr/ports/net/freeradius/work/freeradius-1.0.1/raddb/ и
/usr/ports/net/freeradius/work/freeradius-1.0.1/src/
После этого компилируем Freeradius:
# cd /usr/ports/net/freeradius/work/freeradius-1.0.1/
# ./configure
# make
# make install
Установили. Теперь надо поставить то, что требуется для работы системы
и все правильно настроить.
Ставим MySQL из портов:
# cd /usr/ports/databases/mysql40-server/
# make install clean
Меняем пароль root, создаем базу данных freenibs и пользователя
freenibs@localhost с паролем Pass.
Для создания структуры базы данных находим в исходниках freenibs в
подкаталоге /src/modules/rlm_nibs/drivers/rlm_nibs_mysql/ файл
nibs_mysql.sql и импортируем его в MySQL:
# cat ./nibs_mysql.sql | mysql -p
Настройка FreeNIBS
Идем в каталог /usr/local/etc/raddb/ и настраиваем конфигурационные
файлы Freeradius и FreeNIBS:
Для начала своим любимым способом ставим apache с поддержкой php.
Затем качаем архив http://webnibs.sourceforge.net/nibs.tgz, и
распаковываем его в /usr/local/www/data/nibs или в другое любимое вами
место.