The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Настройке mpd5 в связке с FreeRadius2 и MySQL во FreeBSD (mpd radius auth aaa ppp pptp mysql freebsd)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: 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

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, DemoS (ok), 08:47, 30/06/2009 [ответить]  
  • +/
    Помогите решить проблемку. При запуске радиуса вроде как ошибок не выдает, но и не запускается. В логах пишет вот что:

    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

     
     
  • 2.2, hi9in (?), 22:57, 13/07/2009 [^] [^^] [^^^] [ответить]  
  • +/
    попробуйте "употребить" из портов freeradius-mysql
     

  • 1.3, hi9in (?), 22:44, 26/07/2009 [ответить]  
  • +/
    Для нормальной работы mpd5.3 c freeradius2 словарь dictionary.mpd необходимо привести к следующему виду:

    # -*- text -*-
    #
    # dictionary.mpd for freeradius2
    #
    # $Id$
    #

    VENDOR mpd 12341

    BEGIN-VENDOR mpd

    ATTRIBUTE mpd-rule 1 string
    ATTRIBUTE mpd-pipe 2 string
    ATTRIBUTE mpd-queue 3 string
    ATTRIBUTE mpd-table 4 string
    ATTRIBUTE mpd-table-static 5 string
    ATTRIBUTE mpd-filter 6 string
    ATTRIBUTE mpd-limit 7 string
    ATTRIBUTE mpd-input-octets 8 string
    ATTRIBUTE mpd-input-packets 9 string
    ATTRIBUTE mpd-output-octets 10 string
    ATTRIBUTE mpd-output-packets 11 string
    ATTRIBUTE mpd-link 12 string
    ATTRIBUTE mpd-bundle 13 string
    ATTRIBUTE mpd-iface 14 string
    ATTRIBUTE mpd-iface-index 15 integer
    ATTRIBUTE mpd-input-acct 16 string
    ATTRIBUTE mpd-output-acct 17 string
    ATTRIBUTE mpd-drop-user 154 integer

    END-VENDOR mpd

     
  • 1.4, Sanek (??), 15:37, 05/09/2009 [ответить]  
  • +/
    Spasibo epta!!!!! ya smog nastroit'' :) v otlichii ot 1500000 statey v inete po etoy poluchilos :)
     
  • 1.5, Sanek (??), 15:38, 05/09/2009 [ответить]  
  • +/
    kstati bez peresborki yadra!!!
     
  • 1.6, SD (?), 00:09, 17/09/2010 [ответить]  
  • +/
    Все настроил по этой статье, все отлично, все работает кроме одного.
    Пинг от клиента к серверу идет и от сервера к клиенту, а когда подключаю еще клиента они друг друга пинговать не могут. И в чем проблема так понять и могу.

    Если кто сталкивался с такой проблемой, помогите пожалуйста разобраться.

    Спасибо.

     
     
  • 2.7, hi9in (?), 16:21, 20/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    set iface enable proxy-arp
    это обычно помогает, и конечно отсутствие запрещающих правил для ICMP в фаерволах клиентов
     
  • 2.8, hi9in (?), 19:48, 20/09/2010 [^] [^^] [^^^] [ответить]  
  • +/
    забыл добавить..
    необходимо разрешить пересылку пакетов между интерфейсами:
    bsd72# sysctl net.inet.ip.forwarding=1
    или так:
    echo gateway_enable="YES" >> /etc/rc.conf
    P:S FreeBSD-7.2 GENERIC, mpd-5.3
     

  • 1.9, Саша (??), 10:03, 01/09/2011 [ответить]  
  • +/
    все сделал но происходит следующее
    при рад тесте
    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

    помогите пожалуйста

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру