Jump to content
Калькуляторы

FreeRADIUS как DHCP сервер у кого в продакшене?

С версии 2.0.4 есть такая возможность, хочется услышать отзывы тех кто пользуется на нормальной абонентской базе, 5 - 10 тыс.

Share this post


Link to post
Share on other sites

Говорят - ништяк работает с перловым модулем, топорно до безобразия. Сам правда так и не попробывал.

Share this post


Link to post
Share on other sites

Пользовал с перловым модулем, но дальше "попробовать" не дошло. Сейчас хочу перейти в стадию "реализовать и тестировать".

Share this post


Link to post
Share on other sites
Abram, если там выполняется перловый скрипт при запросе адреса или обновления лизы - это топорно, глючить не должно.

Share this post


Link to post
Share on other sites
Abram, если там выполняется перловый скрипт при запросе адреса или обновления лизы - это топорно, глючить не должно.
"Выполняется скрипт" - не совсем верно, но, в общем, пойдёт ;).

Оно-то вроде так, но с другой стороны - не зря же в вики висят предупрежения?

Share this post


Link to post
Share on other sites

Так мне кажется как напишешь перловый rlm так и будет работать, там же по сути только отдаются аттрибуты и выплевывается ответ. Код я смотрел он достаточно простой. Хотелось бы конечно услышать отзывы тех у кого "Говорят - ништяк работает"

Share this post


Link to post
Share on other sites
Код я смотрел он достаточно простой.
Вот это, кстати, хорошо :).

А так - да, согласен, что в перле напишешь, то и будет. Если принять как аксиому утверждение, что в фрирадиусе нет багов :).

Edited by Abram

Share this post


Link to post
Share on other sites

Работает.

Абонентов конечно поменьше, но работает.

Правда будем сворачивать, cisco 3750 & ip unnumbered больше подходят.

Share this post


Link to post
Share on other sites

Хм, а мы вводим связку фрирадиус+патченный ICS dhcpd от netpatch.ru. Одно но: по дефолту работает на постгре, непривычно как-то, хотя морду на пхп уже я наваял, чтобы клиентов в базу вносить/удалять, интерфейсы редактировать, маршруты отдавать и т.п. сами демоны за 4 месяца не разу не падали, но клиентов на нем пока нет, все в тестах пока.

Share this post


Link to post
Share on other sites

Просто ИМХО ISC DHCP в данном случае - лишняя прослойка

Share this post


Link to post
Share on other sites

Перл то чем плох?

Ну не нравится - перепишите на си, трудно что ли?

Share this post


Link to post
Share on other sites

Попробовал потестить Freeradius как DHCP

Все неплохо все интересно, только вот не понятно

как правильно отдать DHCP-MS-Static-Routes

 

ATTRIBUTE    DHCP-MS-Static-Routes            249    ipaddr array

 

поробовал отдавать вот так:

18,c3,02,d6,0a,65,01,01,16,5b,c5,ac,0a,65,01,01,08,0a,0a,65,01,01

и так

18:c3:02:d6:0a:65:01:01:16:5b:c5:ac:0a:65:01:01:08:0a:0a:65:01:01

 

не хочет винда воспринимать данный аттрибут и все.

 

Еще смутило что в логах радиуса так же нет упоминания об этом аттрибуте

Sending DHCP-Ack of id 40950288 from 192.168.172.18:67 to 192.168.98.99:67
        DHCP-Subnet-Mask = 255.255.255.0
        DHCP-Router-Address = 10.101.1.1
        DHCP-IP-Address-Lease-Time = 600
        DHCP-Domain-Name-Server = 91.197.172.3
        DHCP-DHCP-Server-Identifier = 192.168.172.18

Share this post


Link to post
Share on other sites

у меня радиус отдает демону этот параметр в виде блока шестадцатиречных значений без разделителей, т.е в виде 0x080ac0a82c0110c0a8c0a82c01, этим я передал два маршрута 10.0.0.0/8=>192.168.44.1, 192.168.0.0/16=>192.168.44.1

Share this post


Link to post
Share on other sites
Попробовал потестить Freeradius как DHCP

Все неплохо все интересно, только вот не понятно

как правильно отдать DHCP-MS-Static-Routes

 

ATTRIBUTE    DHCP-MS-Static-Routes            249    ipaddr array

 

поробовал отдавать вот так:

18,c3,02,d6,0a,65,01,01,16,5b,c5,ac,0a,65,01,01,08,0a,0a,65,01,01

и так

18:c3:02:d6:0a:65:01:01:16:5b:c5:ac:0a:65:01:01:08:0a:0a:65:01:01

 

не хочет винда воспринимать данный аттрибут и все.

 

Еще смутило что в логах радиуса так же нет упоминания об этом аттрибуте

Sending DHCP-Ack of id 40950288 from 192.168.172.18:67 to 192.168.98.99:67
        DHCP-Subnet-Mask = 255.255.255.0
        DHCP-Router-Address = 10.101.1.1
        DHCP-IP-Address-Lease-Time = 600
        DHCP-Domain-Name-Server = 91.197.172.3
        DHCP-DHCP-Server-Identifier = 192.168.172.18

роуты:

    if($give_routes == 1) {
            # Search static routes for user's subnet:
        my $routes = "0x";
            # Determine user's subnet in format x.x.x.x/y
        my $block = new Net::Netmask($ip."/".$mask);
        my $sth = $dbh->prepare("SELECT dst_net, gw FROM ip_dhcp_routes WHERE src_net='$block'");
        $sth->execute;
            # Form routes hex-string
        while(my $ref = $sth->fetchrow_arrayref)
        {
            $routes .= mk_routes($$ref[0], $$ref[1]);
        }
        if($routes ne "0x") {
            $RAD_REPLY{'DHCP-MS-Static-Routes'} = $routes;
        }
    }
sub mk_routes {
    # Syntax: mk_routes($net/shortmask, $gw)
    my $net = shift;
    my $gw = shift;
    
    # Parse network && verify whether the syntax is correct
    my $ip = new Net::IP($net) || (print Net::IP::Error() and return);
    my $ipgw = new Net::IP($gw) || (print Net::IP::Error() and return);
    
    $net = $ip->short();
    my $mask = $ip->prefixlen();
    
    my $str = DH($mask);
    my @split = split /\./, $net;
    foreach(@split) {
        $str .= DH($_);
    }
    
    @split = split (/\./, $gw);
    foreach(@split) {
        $str .= DH($_);
    }
    return $str;
    }

sub DH {
    # Do a hex from dec
    my $str = $_[0];
    $str = sprintf("%X", $str);
    if(length($str) eq 1) {
        $str = "0".$str;
    }
    return $str;
    }

 

Share this post


Link to post
Share on other sites

Плз отпишите из тех кто использует сабж. Сколько абонентов, как резервируете, просто две машины с FreeRADIUS?

Share this post


Link to post
Share on other sites
роуты:
Спасибо, но что-то у меня все равно не захотело работать.

 

Sending DHCP-Ack of id e66ba99b from 192.168.172.18:67 to 192.168.98.99:67
        DHCP-Subnet-Mask = 255.255.255.0
        DHCP-Router-Address = 10.101.1.1
        DHCP-IP-Address-Lease-Time = 600
        DHCP-Domain-Name-Server = 192.168.172.3
        DHCP-DHCP-Server-Identifier = 192.168.172.18
        DHCP-MS-Static-Routes = "0x18C302D6000A650101165BC5AC000A650101080A0000000A650101"
Finished request 2.

Но winxp не хочет принимать маршруты :(

Но при этом еще и удаляется дефолтный гейт

Edited by shicoy

Share this post


Link to post
Share on other sites

Если дефолтный гейт удаляется, значит по идее работает. По rfc, если используются бесклассовые маршруты в DHCP, то дефолтный гейт тоже должен быть включен в список маршрутов.

 

Рекомендую посмотреть DHCP пакеты снифером.

Edited by SokolovS

Share this post


Link to post
Share on other sites

Если дефолтный гейт удаляется, значит по идее работает. По rfc, если используются бесклассовые маршруты в DHCP, то дефолтный гейт тоже должен быть включен в список маршрутов.

А вот винда, по моим наблюдениям, как раз дефолтный не удаляет :(.

Share this post


Link to post
Share on other sites

да как раз с isc-dhcp никаких проблем не вызвало, и 249 опция работает без проблем.

а вот с FreeRadius никак :(

я так понимаю Wingman смог завести ее, может быть подробнее расскажет.

как завел с словаре радиуса.

Share this post


Link to post
Share on other sites
да как раз с isc-dhcp никаких проблем не вызвало, и 249 опция работает без проблем.

а вот с FreeRadius никак :(

я так понимаю Wingman смог завести ее, может быть подробнее расскажет.

как завел с словаре радиуса.

Сделал левую опцию в словаре:

ATTRIBUTE DHCP-MS-Static-Routes 249 octets

 

и, собсно, всё завелось сходу

Share this post


Link to post
Share on other sites

понял, черт видимо жара так действует :) я как string передавал.

Спасибо.

Edited by shicoy

Share this post


Link to post
Share on other sites

P.S.: Для полноты картины неплохо бы еще добавить:

VALUE DHCP-Parameter-Request-List DHCP-MS-Static-Routes 249

 

А клиентам еще нужно отправлять и DHCP-Classless-Static-Route, на всякий случай. Про линуксы забывать тоже не стоит ;)

 

Вобщем возник такой вопрос. В 2.х теперь виртуал хосты есть, так вот хочу вынести в виде виртуал-хостов авторизацию VPN-серверов, 802.1x и попробовать DHCP добавить. Проблема в том, что для первых двух уже написаны perl-модули и успешно работают, но в виде отдельных процессов на 1.х. Как мне указать что для разных виртуал-хостов нужно использовать разные perl модули?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this