Ключевые слова:mpd, radius, auth, aaa, ppp, pptp, mysql, freebsd, (найти похожие документы)
From: Abigor <abigor@isea.ru.>
Date: Mon, 27 Apr 2009 14:31:37 +0000 (UTC)
Subject: Настройке mpd5 в связке с FreeRadius2 и MySQL во FreeBSD
Оригинал: http://inetzlo.ru/2009/04/24/mpd5-freeradius2-mysql/
Когда-то в далеком 2007 году я разместил статью, о настройки связки
mpd + freeradius + mysql на сайте комрада lissyara. Время шло,
все работало отлично, выполняло весь необходимый мне функционал.
Недавно потребовалось перенести эту связку на новый более мощный
сервер. Решено было использовать последние версии используемых
продуктов. mpd5 и freeradius2. Данные программные продукты очень
изменили свой функционал и конфигурационные файлы, из-за этого я решил
сделать набросок статьи. О том как это все дело заставить работать
вмести :).
Сразу хочу оговорить, я не буду писать о том, что надо открыть этот
конфигурационный файл, найти какую-то строчку и поменять на другое
значение. Мне это не надо, мне просто необходима заметка, что надо
сделать, чтоб не забыть :) По этому я просто приведу diff разницу
между исходным конфигурационным файлом и целевым.
Начнем. Вот информация о системе на которой это все делалось:
[root@bender /]# uname -rp
7.1-RELEASE-p5 i386
[root@bender /]#
Порты были обновлены до актуальной версии на день написания статьи
через csup.
Рассказывать как ставить mysql я не буду, описание данного процесса
можно найти на сайте lissyara. По этому сразу перейдем к установки
mpd5.
[root@bender /]# make -C /usr/ports/net/mpd5 install clean
===> Found saved configuration for mpd-5.3
===> Extracting for mpd-5.3
#--- skip ---#
[root@bender /]#
В меню настройки порта mpd5 я ни чего не выбирал. Конфигурационный
файл привел к следующему виду:
#--- mpd5 config
startup:
set user admin pass admin
#<----->set user foo1 bar1
set console self 127.0.0.1 5005
set console open
set web self 10.1.1.200 5006
set web open
default:
load pptp_server
pptp_server:
set ippool add pool1 192.168.1.50 192.168.1.99
create bundle template B
#<----->set iface enable proxy-arp
set iface idle 1800
set iface enable tcpmssfix
set ipcp yes vjcomp
#<----->set ipcp ranges 192.168.1.1/32 ippool pool1
set ipcp dns 10.1.1.6
#<----->set ipcp nbns 192.168.1.4
set bundle enable compression
set ccp yes mppc
#<----->set mppc yes e40
set mppc yes e128
set mppc yes stateless
create link template L pptp
set link action bundle B
set link enable multilink
set link yes acfcomp protocomp
set link no pap chap
set link enable chap
load radius
set link keep-alive 10 60
set link mtu 1460
# set pptp self 1.2.3.4
set link enable incoming
radius:
#<----->set radius config /usr/local/etc/mpd5/radius.conf
set radius server localhost testing123 1812 1813
set radius retries 3
set radius timeout 3
set radius me 127.0.0.1
set auth acct-update 60
set auth enable radius-auth
set auth enable radius-acct
set radius enable message-authentic
Знаки табуляции в mc, я намеренно не стер, пусть будут как
напоминание, что mpd не любит пробелы, и отступы надо делать табом.
Так же чтоб у mpd велся журнал логов, необходимо в /etc/syslog.conf
добавить следующее:
!mpd
*.* /var/log/mpd.log
Создать сам лог файл, поставить на него права RW только для root
пользователя, и перезапустить демона syslogd
[root@bender etc]# touch /var/log/mpd.log
[root@bender etc]# chmod 600 /var/log/mpd.log
[root@bender etc]# /etc/rc.d/syslogd restart
Stopping syslogd.
Starting syslogd.
[root@bender etc]#
Дальше установим сам freeradius2:
[root@bender /]# make -C /usr/ports/net/freeradius2 install clean
===> Found saved configuration for freeradius-2.1.4
===> Extracting for freeradius-2.1.4
#--- skip ---#
[root@bender /]#
В меню настройки порта freeradius2 были выбраны следующие настройки:
[X] USER Run as user freeradius, group freeradius
[X] MYSQL With MySQL database support
Начнем настройку freeradius2, первым дело создадим базу и заполним ее
таблицами, для это сделаем следующее:
[root@bender /]# cd /usr/local/etc/raddb/sql/mysql/
[root@bender mysql]# ls
total 92
drwxr-x--- 2 freeradius freeradius 512 23 апр 14:35 .
drwxr-x--- 6 freeradius freeradius 512 23 апр 14:35 ..
-rw-r----- 1 freeradius freeradius 661 23 апр 14:35 admin.sql
-rw-r----- 1 freeradius freeradius 4533 23 апр 14:35 counter.conf
-rw-r----- 1 freeradius freeradius 14379 23 апр 14:35 dialup.conf
-rw-r----- 1 freeradius freeradius 3927 23 апр 14:35 ippool.conf
-rw-r----- 1 freeradius freeradius 565 23 апр 14:35 ippool.sql
-rw-r----- 1 freeradius freeradius 400 23 апр 14:35 nas.sql
-rw-r----- 1 freeradius freeradius 4322 23 апр 14:35 schema.sql
-rw-r----- 1 freeradius freeradius 1844 23 апр 14:35 wimax.conf
-rw-r----- 1 freeradius freeradius 411 23 апр 14:35 wimax.sql
[root@bender mysql]#
как видите тут уже все готово для нас, надо лишь создать базу, а
пользователя и структуру таблиц, можно просто импортировать. Пароль
для пользователя radius можно задать в файле admin.sql. Приступим к
импорту:
[root@bender mysql]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 71296
Server version: 5.0.75-log FreeBSD port: mysql-server-5.0.75
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database radius;
Query OK, 1 row affected (0.00 sec)
mysql> use radius;
Database changed
mysql> \. admin.sql
Query OK, 0 rows affected (0.00 sec)
mysql> \. schema.sql
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> quit
Bye
[root@bender mysql]#
Как видите, я импортировал только два sql файла с запросами admin.sql
и schema.sql, это сделано по причине того, что я не буду пользоваться
настройками для nas, ippool, wimax. так зачем лишнее в системе?
Внесем следующие изменения в конфигурационные файлы freeradius2. Вот
тут я и буду пользоваться командой diff. Эта команда отлично подходит
для указания изменений в любых файлах, так как отображает оба значения
в исходном и целевом файле и строку в которой необходимо произвести
изменения. Для настройки freeradius2 нам надо внести изменения в 3
файла. Приступим к этой не хитрой операции.
[root@bender etc]# diff raddb.original/radiusd.conf raddb/radiusd.conf
266c266
< ipaddr = *
---
> ipaddr = 127.0.0.1
309c309
< ipaddr = *
---
> ipaddr = 127.0.0.1
436c436
< auth = no
---
> auth = yes
444c444
< auth_badpass = no
---
> auth_badpass = yes
525c525
< proxy_requests = yes
---
> proxy_requests = no
664c664
< # $INCLUDE sql.conf
---
> $INCLUDE sql.conf
676c676
< # $INCLUDE sql/mysql/counter.conf
---
> $INCLUDE sql/mysql/counter.conf
[root@bender etc]#
[root@bender etc]# diff raddb.original/sql.conf raddb/sql.conf
37c37
< #port = 3306
---
> port = 3306
[root@bender etc]#
[root@bender etc]# diff raddb.original/sites-available/default
raddb/sites-available/default
145c145
< files
---
> # files
152c152
< # sql
---
> sql
342c342
< # sql
---
> sql
348c348
< # sql_log
---
> sql_log
369c369
< radutmp
---
> # radutmp
373c373
< # sql
---
> sql
394c394
< # sql
---
> sql
400c400
< # sql_log
---
> sql_log
[root@bender etc]#
Теперь необходимо внести записи о нашем тестовом пользователе:
#--- создаем пользователя test с паролем test1
INSERT INTO `radcheck` VALUES
(1,'test','Cleartext-Password',':=','test1');
#--- создаем группу users с параметрами этой группы
INSERT INTO `radgroupreply` VALUES
(1,'users','Framed-Protocol',':=','PPP');
INSERT INTO `radgroupreply` VALUES
(2,'users','Framed-IP-Netmask',':=','255.255.255.255');
#--- говорим, что пользователю test при подключении будет присвоен ip 192.168.1.60
INSERT INTO `radreply` VALUES
(1,'test','Framed-IP-Address',':=','192.168.1.60')
#--- добавляем пользователя test в группу users
INSERT INTO `radusergroup` VALUES ('test','users',1);
Для внесения данных надо подключиться к mysql от пользователя root или
от другого пользователя, так как пользователь radius не имеет права на
INSERT на данные таблицы.
Запустим freeradius2:
[root@bender etc]# echo 'radiusd_enable="YES"' >> /etc/rc.conf
[root@bender etc]# /usr/local/etc/rc.d/radiusd start
Starting radiusd.
[root@bender etc]#
Проверим, берет ли у нас freeradius2 данные из mysql. Для этого
воспользуемся утилитой radtest, которая идет в комплекте:
[root@bender etc]# radtest test test1 127.0.0.1 0 testing123
Sending Access-Request of id 160 to 127.0.0.1 port 1812
User-Name = "test"
User-Password = "test1"
NAS-IP-Address = 10.1.1.200
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=160,
length=38
Framed-IP-Address = 192.168.1.60
Framed-Protocol = PPP
Framed-IP-Netmask = 255.255.255.255
[root@bender etc]#
Как видите мы получили данные из базы данных. Запустим mpd5 и
попробуем подключиться. Для подключения я использовал клиенскую машину
под управление OC Windows XP.
[root@bender etc]# echo 'mpd_enable="YES"' >> /etc/rc.conf
[root@bender etc]# echo 'mpd_flags="-b"' >> /etc/rc.conf
[root@bender etc]# /usr/local/etc/rc.d/mpd5 start
Starting mpd5.
[root@bender etc]#
Пробуем подключиться, если не проходит, необходимо смотреть логи mpd5
и freeradius2 на предмет ошибок. Если что-то не получается, можно
задавать вопросы мне.
P.S.
1. Ядро для работы mpd5 я не пересобирал, он сам подгрузил все
необходимые модулю для своей работы.
2. Не забываем изменить пароли по умолчанию на более сложные. Так же
настройку подключения клиентов к freeradius2 можно посмотреть в
конфигурационном файле clients.conf
Помогите решить проблемку. При запуске радиуса вроде как ошибок не выдает, но и не запускается. В логах пишет вот что:
Mon Jun 29 18:13:44 2009 : Info: Using deprecated naslist file. Support for this will go away soon.
Mon Jun 29 18:13:44 2009 : Info: Using deprecated clients file. Support for this will go away soon.
Mon Jun 29 18:13:44 2009 : Info: rlm_exec: Wait=yes but no output defined. Did you mean output=none?
Mon Jun 29 18:13:44 2009 : Error: rlm_sql (sql): Could not link driver rlm_sql_mysql: Shared object "rlm_sql_mysql.so" not found, required by "radiusd"
Mon Jun 29 18:13:44 2009 : Error: rlm_sql (sql): Make sure it (and all its dependent libraries!) are in the search path of your system's ld.
Mon Jun 29 18:13:44 2009 : Error: radiusd.conf[14]: sql: Module instantiation failed.
Mon Jun 29 18:13:44 2009 : Error: radiusd.conf[1860] Unknown module "sql".
Mon Jun 29 18:13:44 2009 : Error: radiusd.conf[1789] Failed to parse authorize section.
Т.е. я так понимаю не хочит дружить с MYSQL, к тому же не находит rlm_sql.
стоит freeradius 1.1.7, mysql 5.1
Все настроил по этой статье, все отлично, все работает кроме одного.
Пинг от клиента к серверу идет и от сервера к клиенту, а когда подключаю еще клиента они друг друга пинговать не могут. И в чем проблема так понять и могу.
Если кто сталкивался с такой проблемой, помогите пожалуйста разобраться.
все сделал но происходит следующее
при рад тесте
oot@/usr/local/etc/mpd5> radtest test test1 127.0.0.1 1812 testing123Sending Access-Request of id 216 to 127.0.0.1 port 1812
User-Name = "test"
User-Password = "test1"
NAS-IP-Address = 192.168.1.155
NAS-Port = 1812
Sending Access-Request of id 216 to 127.0.0.1 port 1812
User-Name = "test"
User-Password = "test1"
NAS-IP-Address = 192.168.1.155
NAS-Port = 1812
Sending Access-Request of id 216 to 127.0.0.1 port 1812
User-Name = "test"
User-Password = "test1"
NAS-IP-Address = 192.168.1.155
NAS-Port = 1812
radclient: no response from server for ID 216 socket 3