
SYS.net.ruЗаписки системного администратора
|
|
Аккаунт |
Главная »
Документы »
Установка PPPoE сервера для провайдинга
Установка PPPoE сервера для провайдингаПривет ! Давно ничего не писал, но был сильно занят изготовлением и наполнением веб-сайтов. Новый год опять же :) Недавно ко мне обратился человек с инетерсным предложением. У него был (у единственного) в здании интернет, причем интернет был почти бесплатный и быстрый. И хотел данный человек его продавать другим конторам и людям в оргранизации. Интернет к нему попадал по 100 Мбитной витой паре. В дополнение ко всему у него установлен сервер на Gentoo, ессно моей установки :) Я подумал-подумал и решил, что человеку нужно провайдить интернет, те раздавать его другим людям и ессно считать трафик и взимать деньги. В дополнение ко всему интернет должен быть безопасным (ессно для моего заказчика, проблемы подключенных пользователей меня не сильно заботят :) В качестве протокола передачи я выбрал PPPoE. Вы спросите почему ? Почему не простой vpn ? Отвечу - PPPoE отличается от VPN тем, что позволяет в 1 изернет сегменте устанавливать PPP соединение без выдачи IP адресов поддержки. Те соединение полностью зависит от введенного логина и пароля юзера. Теперь другая проблема: Найти простое и фреварное решение для управления провайдингом. Тут наверное особенно думать не стоит - radius (сервер занимающийся AAA для PPP подобных клиентов). В качестве системы управления использовал freeNIBS. Эта система базируется на freeradius и почитать о ней можно http://nibs.net.ua/ Вообчем-то данный документ пересказывает установку freenibs и PPPoE сервера. Буду рассказывать ессно про Gentoo, но думаю не вызовет труда перекрутить и под другие версии Linux. Все файлы и данные помещенные в статье можно использовать для текущей версии FreeNIBS. В процессе кроме указанных в документе пакетов понадобиться apache2 с установленным mod_php и mysql в качестве базы данных. В качестве дополнительных утилит необходимо наличие sudo. Итак.. начали... 1. Качаем исходники пакета FreeRadius файл freeradius-1.0.1.tar.gz и "FreeNIBS" файл freenibs-0.0.3-bf3_freeradius-1.0.1.tar.bz2 . 2. Распаковываем FreeRadius в какую-нибуть папку и сверху с замещением файлов кладем FreeNibs. 3. Заходим в папку с исходниками, компилим и инсталируем FreeRadius: # cd freeradius-1.0.1 # ./configure --prefix=/opt/freeradius # make # make install 4. Правим пароли для NAS сервера, тут надо объяснить, что такое NAS сервер. Допустим для DialUp. Есть клиенты, которые конектсятся по какому-нить протоколу (в нашем случаем PPP), телефонные линии на стороне провайдеры втыкнуты в NAS сервера (у крутых провайдеров это DialUp сервера, навроде Cisco, у провов поменьше - модемы втыкнутые в компы). И вот все эти NAS сервера при появлении клиенты его логин и пароль берут у Radius сервера (у одного), а уж он свои данные хранит в MySQL (или круче) базе данных. Для радиуса, любой NAS сервер является клиентом и следовательно можно давать разные полномочия для разных NAS серверов или групп серверов. Все эти клиенты и пароли их доступа прописываются в файле _/opt/freeradius/etc/raddb/client.conf_ . По умолчанию там есть только запись для localhost, т.к. мы будем ставить PPPoE сервер на локальную машину, то именно он то нам и понадобиться. client 127.0.0.1 {
secret = SUPER_PAROL
далее файл с настройкамиВ дополнение при наличии нескольких NAS серверов можно поправить и файл _/opt/freeradius/etc/raddb/huntgroups_ - в котором описываются права групп NAS серверов. 5. Правим и настраиваем файл _/opt/freeradius/etc/raddb/nibs.conf_ на предмет доступа к MySQL серверу: nibs { # Database type
# Current supported are: rlm_nibs_mysql, rlm_nibs_postgresql,
driver = "rlm_nibs_mysql"# SQL Server configuration server = "localhost" port = "3306" login = "freenibs" password = "пароль2" # Database configuration nibs_db = "freenibs"
#kill_program = "${sbindir}/userkill %{User-Name} %{NAS-IP-Address} %{Client-IP-Address} %{NAS-Port} %{Framed-IP-Address}"
kill_program = "${sbindir}/pppkill ppp%{NAS-Port}"6. Настроим доступ системы к библиотекам, в генту это делается простой модификацией файла /etc/env.d/00basic. Добавим в определение переменной LDPATH путь к библиотекам радиуса: LDPATH="/usr/local/lib:/opt/freeradius/lib" и выполним env-update 7. Настраиваем базу данных, те заносим в нее необходимые таблицы. Для этого обратимся опять к исходникам. Поправим файл nibs_mysql.sql, на предемет пароля доступа к базе freeradius сервером. И занесем информацию в MySQL. cd freeradius-1.0.1/src/modules/rlm_nibs/drivers/rlm_nibs_mysql mysql -uroot -p < nibs_mysql.sql Команда создаст отдельную базу в MySQL и пользователя с заданным паролем (в нашем случаем "пароль2") 8. Настроим Apache для интерфейсов управления и администрирования. В качестве Админа, я не стал использовать стандартный (идущий в поставле FreeNIBS), а использовал WebNIBS. Которых хоть и похож на FreeNibs, но более безглючный. Так как все равно мы установили радис в /opt то и остальные продукты тоже поставим туда же. Создадим директории для PHP скриптов mkdir /opt/prov mkdir /opt/prov/admin mkdir /opt/prov/admin/wwwroot mkdir /opt/prov/admin/wwwlog mkdir /opt/prov/stat mkdir /opt/prov/stat/wwwroot mkdir /opt/prov/stat/wwwlog chown apache:apache /opt/prov -R echo AddDefaultCharset Windows-1251 > /opt/prov/admin/wwwroot/.htaccess В директорию /opt/prov/admin/wwwroot выложим скрипты из поставки WebNIBS, котрый можно скачать у меня: файл nibs.tgz . Добавим в настройки апача 2 виртуальных хоста для администрирования и для доступа к статистике соот-но: <VirtualHost 192.168.50.1> php_admin_flag engine On php_admin_flag safe_mode Off php_admin_flag register_globals On ServerName adm.myhost.ru ErrorLog /opt/prov/admin/wwwlog/error.log CustomLog /opt/prov/admin/wwwlog/access.log combined DocumentRoot /opt/prov/admin/wwwroot <Directory "/opt/prov/admin/wwwroot"> AllowOverride all Options FollowSymlinks Includes Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost 192.168.50.1> php_admin_flag engine On php_admin_flag safe_mode Off php_admin_flag register_globals On ServerName stat.myhost.ru ErrorLog /opt/prov/stat/wwwlog/error.log CustomLog /opt/prov/stat/wwwlog/access.log combined DocumentRoot /opt/prov/stat/wwwroot <Directory "/opt/prov/stat/wwwroot"> AllowOverride all Options FollowSymlinks Includes Order allow,deny Allow from all <Directory> </VirtualHost> Ессно хосты admin.myhost.ru и stat.myhost.ru должны быть прописаны в ДНС и ссылаться на наш хост. chown apache:apache /opt/prov -R 9. Настроим теперь наши скрипты на доступ к mysql и вообче на работу :) define("SUDO_RADRELOAD",true);
#samples for RAD_RELOADCMD
#define("RAD_RELOADCMD","/usr/bin/sudo -u root /usr/bin/killall -HUP radiusd & /usr/local/bin/sudo -u root /usr/local/etc/raddb/restart.sh");Полностью заменим файл /opt/prov/stat/wwwroot/.htaccess на приведенный ниже: AddDefaultCharset koi8-r php_value include_path ".:/opt/prov/stat/wwwroot/include:/opt/prov/stat/wwwroot/menu:/opt/prov/stat/wwwroot/lists:/opt/prov/stat/wwwroot/templates" php_flag engine On php_flag safe_mode Off php_flag register_globals On php_flag magic_quotes_gpc Off ErrorDocument 404 /missing.php
define("USE_CARDS","0");Добавим в sudo разрешение апачу не релоад радиуса (правим /etc/sudoers ): apache ALL=(ALL) NOPASSWD: /opt/freeradius/sbin/rc.radiusd Выполним легкое исправление MySQL таблицы для адаптации к WebNIBS: ALTER TABLE `packets` ADD `crypt_method` TINYINT(1) NOT NULL; 10. Зайдем на наш админский веб-сервера: http://admin.myhost.ru и убедимся что нас пускает и можно перемещаться по разделам и создавать пакеты и пользователей. 11. Теперь расскажу основы использования FreeNibs. У нас есть клиенты, например фирма, где есть несколько людей которые могут конектиться к интернету, у каждого свой пароль. Деньги можно класть как на фирму(пакет), так и каждому ее клиенту(пользователь). Следовательно в нашем случае для PPPoE нужно создать контору и в ней уже создать 1 пользователя. 12. Установим пакет PPP, с поддержкой radius сервера: USE="radius" emerge net-dialup/ppp 13. Установим PPPoE сервер: emerge net-dialup/rp-pppoe 14. Настроим PPPoE сервер с помощью создания файла /etc/ppp/pppoe-server-options : # PPP options for the PPPoE server # LIC: GPL mtu 1472 mru 1472 require-pap refuse-chap default-asyncmap proxyarp ktune lcp-echo-interval 20 lcp-echo-failure 2 ms-dns 192.168.50.1 plugin radius.so nobsdcomp noccp noendpoint noipdefault noipx novj receive-all 192.168.50.1:192.168.50.2 В данном файле адрес 192.168.50.1 будет выделен серверу, а адреса начиная с 192.168.50.2 буду выделяться клиентам. #Server Name or Client/Server pair Key #---------------- --------------- #portmaster.elemental.net hardlyasecret #portmaster2.elemental.net donttellanyone 127.0.0.1 SUPER_PAROL 14. Запустим радиус и PPPoE сервер: pppoe-server -I eth0 -L 192.168.50.1 -R 192.168.50.2 /opt/freeradius/sbin/rc.radiusd start Если все получилось верно и нет ошибок (я эти действия выполнял почти как робот) - то у нас появился PPPoE сервер на eth0 интерфейсе сетевой карты. 15. Настраиваем Windows клиентов. Качаем "драйвер PPPoE" - файл raspppoe_098.zip . Устанавливаем в свойствах сетевой карты как дополнительный протокол. Запускам входящий в ZIP исполнимый файл, который и находит наш PPPoE сервер :) Давим создать соединение на рабочем стол, закрываем программу. Видим что на рабочем столе появилось соединение, соединяемся с помощью него и радуемся жисти :) Снимаем деньги отчисляем процент автору прекрасной вещи называемой http://nibs.net.ua/ . |
Copyright © 1999-2012 by SYS.NET.RU | История изменений | |