<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://www.m-200.com/base/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://www.m-200.com/base/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_FREERADIUS._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3</id>
		<title>Подключение к FREERADIUS. Часть 3 - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://www.m-200.com/base/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_FREERADIUS._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3"/>
		<link rel="alternate" type="text/html" href="https://www.m-200.com/base/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_FREERADIUS._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3&amp;action=history"/>
		<updated>2026-05-16T06:28:25Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20</generator>

	<entry>
		<id>https://www.m-200.com/base/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_FREERADIUS._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3&amp;diff=135&amp;oldid=prev</id>
		<title>Pax: Новая страница: «&lt;div style=&quot;font-size:90%; clear: right; border-right: #aaaaaa 1px solid; padding-right: 1ex; border-top: #aaaaaa 1px solid; padding-left: 1ex; float: right; padd…»</title>
		<link rel="alternate" type="text/html" href="https://www.m-200.com/base/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_FREERADIUS._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3&amp;diff=135&amp;oldid=prev"/>
				<updated>2014-12-03T07:37:34Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «&amp;lt;div style=&amp;quot;font-size:90%; clear: right; border-right: #aaaaaa 1px solid; padding-right: 1ex; border-top: #aaaaaa 1px solid; padding-left: 1ex; float: right; padd…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;font-size:90%; clear: right; border-right: #aaaaaa 1px solid; padding-right: 1ex; border-top: #aaaaaa 1px solid; padding-left: 1ex; float: right; padding-bottom: 1ex; margin: 1ex 0px 1ex 1ex; border-left: #aaaaaa 1px solid; width: 250px; padding-top: 1ex; border-bottom: #aaaaaa 1px solid; background-color: #fcfcfc&amp;quot;&amp;gt;&lt;br /&gt;
*[[Подключение к FREERADIUS. Часть 1]]&lt;br /&gt;
**''Насторойка М-200''&lt;br /&gt;
*[[Подключение к FREERADIUS. Часть 2]]&lt;br /&gt;
**''Насторойка FREERADIUS''&lt;br /&gt;
*[[Подключение к FREERADIUS. Часть 3]]&lt;br /&gt;
**''Авторизация''&lt;br /&gt;
*[[Подключение к FREERADIUS. Часть 4]]&lt;br /&gt;
**''Маршрутизация''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ПравГлавМеню}}&lt;br /&gt;
&lt;br /&gt;
===Для того, чтобы использовать встроенный perl необходимо:===&lt;br /&gt;
&lt;br /&gt;
1. В файле modules/perl раскомментировать строку 'func_authorize = authorize'.&lt;br /&gt;
&lt;br /&gt;
2. В файле  radiusd.conf добавить:&lt;br /&gt;
&lt;br /&gt;
 authorize {&lt;br /&gt;
    preprocess&lt;br /&gt;
    files&lt;br /&gt;
    perl&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
3. В файле users убрать пользователя 904 и сделать ACCEPT правилом по умолчанию:&lt;br /&gt;
&lt;br /&gt;
 DEFAULT  Auth-Type = accept&lt;br /&gt;
    Fall-Through = yes&lt;br /&gt;
&lt;br /&gt;
4. Перезапускаем freeradius. У меня на этом этапе сервер ни в какую не хотел есть Data::Dumper. Пришлось выкинуть - пока он вроде не нужен.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Настройка обработчика===&lt;br /&gt;
&lt;br /&gt;
К меня по умолчанию используется файл example.pl (см. modules/perl). Это просто заготовка, которую я слегка подправлю.&lt;br /&gt;
&lt;br /&gt;
1. Используем sub authorize.&lt;br /&gt;
&lt;br /&gt;
2. Для передачи атрибутов используются два хэша - RAD_REQUEST и RAD_REPLY. Соответственно запрос и ответ.&lt;br /&gt;
&lt;br /&gt;
3. Функция может возвращать RLM_MODULE_OK или  RLM_MODULE_REJECT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
И так, немного перла и получаем:&lt;br /&gt;
&lt;br /&gt;
 sub authorize {&lt;br /&gt;
   if ($RAD_REQUEST{'User-Name'} == '904') {&lt;br /&gt;
       $RAD_REPLY{'h323-credit-time'} = &amp;quot;h323-credit-time=1000&amp;quot;;&lt;br /&gt;
       return RLM_MODULE_OK;&lt;br /&gt;
    }&lt;br /&gt;
    return RLM_MODULE_REJECT;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Вот так наверное лучше:&lt;br /&gt;
&lt;br /&gt;
 sub authorize {&lt;br /&gt;
   if ($RAD_REQUEST{'Calling-Station-Id'} == '904') {&lt;br /&gt;
       $RAD_REPLY{'h323-credit-time'} = &amp;quot;h323-credit-time=1000&amp;quot;;&lt;br /&gt;
       return RLM_MODULE_OK;&lt;br /&gt;
    }&lt;br /&gt;
    return RLM_MODULE_REJECT;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Тестовый звонок===&lt;br /&gt;
&lt;br /&gt;
 SEIZ EXT&amp;lt;SIP&amp;gt;(904)$&lt;br /&gt;
 CALL EXT&amp;lt;SIP&amp;gt;(904)$:6157 -&amp;gt; CallAuth_in(770:4)$:6195 [904,407]&lt;br /&gt;
 SEIZ CallAuth_out(1538:4)$&lt;br /&gt;
 CALL CallAuth_out(1538:4)$:6196 -&amp;gt; INT_IP(769/14)$:6132 [904,407]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вызов прошел.&lt;br /&gt;
&lt;br /&gt;
А вот, что говорит сам freeradius:&lt;br /&gt;
&lt;br /&gt;
 rad_recv: Access-Request packet from host 127.0.0.1 port 55593, id=134, length=113&lt;br /&gt;
        Service-Type = Login-User&lt;br /&gt;
        h323-conf-id = &amp;quot;h323-conf-id=1364990370-919873&amp;quot;&lt;br /&gt;
        User-Name = &amp;quot;904&amp;quot;&lt;br /&gt;
        Calling-Station-Id = &amp;quot;904&amp;quot;&lt;br /&gt;
        h323-gw-id = &amp;quot;h323-gw-id=904&amp;quot;&lt;br /&gt;
        Called-Station-Id = &amp;quot;407&amp;quot;&lt;br /&gt;
        NAS-Port = 0&lt;br /&gt;
        NAS-IP-Address = 127.0.0.1&lt;br /&gt;
 +- entering group authorize {...}&lt;br /&gt;
 ++[preprocess] returns ok&lt;br /&gt;
 [files] users: Matched entry DEFAULT at line 20&lt;br /&gt;
 ++[files] returns ok&lt;br /&gt;
 rlm_perl: Added pair h323-gw-id = h323-gw-id=904&lt;br /&gt;
 rlm_perl: Added pair Service-Type = Login-User&lt;br /&gt;
 rlm_perl: Added pair Called-Station-Id = 407&lt;br /&gt;
 rlm_perl: Added pair Calling-Station-Id = 904&lt;br /&gt;
 rlm_perl: Added pair User-Name = 904&lt;br /&gt;
 rlm_perl: Added pair h323-conf-id = h323-conf-id=1364990370-919873&lt;br /&gt;
 rlm_perl: Added pair NAS-Port = 0&lt;br /&gt;
 rlm_perl: Added pair NAS-IP-Address = 127.0.0.1&lt;br /&gt;
 rlm_perl: Added pair h323-credit-time = h323-credit-time=1000&lt;br /&gt;
 rlm_perl: Added pair Auth-Type = Accept&lt;br /&gt;
 ++[perl] returns ok&lt;br /&gt;
 Found Auth-Type = Accept&lt;br /&gt;
 Auth-Type = Accept, accepting the user&lt;br /&gt;
 Login OK: [904/&amp;lt;via Auth-Type = Accept&amp;gt;] (from client m-200 port 0 cli 904)&lt;br /&gt;
 +- entering group post-auth {...}&lt;br /&gt;
 ++[exec] returns noop&lt;br /&gt;
 Sending Access-Accept of id 134 to 127.0.0.1 port 55593&lt;br /&gt;
        h323-credit-time = &amp;quot;h323-credit-time=1000&amp;quot;&lt;br /&gt;
 Finished request 7.&lt;br /&gt;
 Going to the next request&lt;br /&gt;
 Waking up in 4.9 seconds.&lt;br /&gt;
 Cleaning up request 7 ID 134 with timestamp +2712&lt;br /&gt;
 Ready to process requests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Видно, как подключается perl обработчик.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Резюме===&lt;br /&gt;
&lt;br /&gt;
Используя возможности PERL, вполне возможно построить систему любой сложности. Так же интересным может быть модуль RLM_MYSQL - взаимодействие с mysql сервером. Но об этом в другой раз. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В [[Подключение к FREERADIUS. Часть 4|четвертой части]] речь пойдет собственно о маршрутизации.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:RADIUS]]&lt;br /&gt;
[[Категория:Уголок ДР]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Pax</name></author>	</entry>

	</feed>