====== p5-radius3 ====== ==== Встановлення FreeRadius v3 ==== Даний варіант установки не з офіційної документації і розроблений для нашої мережі, але може бути портований і в інші мережі! Він не має MySQL модуля, але є потужний модуль PERL, який дозволяє робити запити до бази набагато зручніше в плані маніпуляцій. На офіційному сайті FreeRadius сказано, що rlm_perl продуктивніше rlm_sql. Використання цього варіанта ви робите на свій страх і ризик :). ==== Встановлення пакетів ==== pkg install freeradius3 p5-Digest-MD5 p5-Authen-Radius Після встановлення обов'язково заблокуйте freeradius3, щоб уникнути випадкового оновлення, оскільки злітають права на файли налаштувань і РАДІУС білше не запрацює! Я не зміг виявити, що саме спричиняє таку проблему, тому і не знаю як її обійти! pkg lock freeradius3 ==== Налаштування FreeRadius v3 ==== Резервна копія оригінальних конфігів cp -a /usr/local/etc/raddb/ /usr/local/etc/raddb.orig/ Видалимо зайве rm -rf /usr/local/etc/raddb/sites-enabled/* rm /usr/local/etc/raddb/mods-enabled/eap Створимо основний конфіг nano /usr/local/etc/raddb/sites-enabled/nodeny з таким вмістом: server nodeny { listen { type = auth ipaddr = * port = 1812 limit { max_connections = 64 lifetime = 0 idle_timeout = 30 } } listen { type = acct ipaddr = * port = 1813 } # Authorization. authorize { #detail preprocess pap chap files perl # if((User-Name =~ /^.*%{Calling-Station-ID}.*$/i)){ # update control { # &Auth-Type = 'Perl' # } # } if (ok || updated) { update control { Auth-Type := Perl } } } # Authentication. authenticate { Auth-Type Perl { perl } Auth-Type PAP { pap } Auth-Type CHAP { chap } } # Pre-accounting. Decide which accounting type to use. preacct { acct_unique preprocess } accounting { attr_filter.accounting_response perl } session { radutmp } # Post-Authentication post-auth { Post-Auth-Type REJECT { attr_filter.access_reject # pppoe perl #ipoe } perl } } також можна увімкнути сервер статусу командою: ln -s /usr/local/etc/raddb/sites-available/status /usr/local/etc/raddb/sites-enabled/ echo '' > /usr/local/etc/raddb/clients.conf nano /usr/local/etc/raddb/clients.conf client 127.0.0.1 { ipaddr = 127.0.0.1 secret = hardpass5 shortname = localhost nastype = other } ln -s /usr/local/etc/raddb/mods-available/perl /usr/local/etc/raddb/mods-enabled/ echo '' > /usr/local/etc/raddb/mods-enabled/perl nano /usr/local/etc/raddb/mods-enabled/perl perl { filename = /usr/local/nodeny/nod/_radius.pl } Перевірити відповідність nano /usr/local/etc/raddb/mods-config/attr_filter/access_reject DEFAULT EAP-Message =* ANY, State =* ANY, Message-Authenticator =* ANY, Error-Cause =* ANY, Reply-Message =* ANY, MS-CHAP-Error = * ANY, Proxy-State =* ANY nano /usr/local/etc/raddb/mods-config/files/authorize DEFAULT Auth-Type = Perl Fall-Through = yes ==== Завершення установки ==== sysrc radiusd_enable="YES" #sysrc radiusd_flags="-d /path/to/raddb" service radiusd start ===== test ===== radtest [-t chap] login password 127.0.0.1 0 hardpass5 OR NAS-IP-Address = 127.0.0.1 User-Name = IPOE_VLAN|afaf.afaf.afaf|3410 User-Password = 6894244B56EB NAS-Port = 0 Calling-Station-Id = SSID NAS-Port-Id = jun:3410 cat rad.test | radclient -x 127.0.0.1 auth hardpass5 ==== radperf debian ==== $ apt install libfreeradius3 freeradius-common freeradius-config $ wget https://networkradius.com/assets/packages/radperf/radperf_2.0.1_amd64.deb $ dpkg -i radperf_2.0.1_amd64.deb === Prepeare file === Blank lines in the input separate individual packets. e.g. User-Name = "test" User-Password = "123" User-Name = "test1" User-Password = "0007" User-Name = "test2" User-Password = "011998" testing radperf -s -f ../users.txt -p 800 -a pap 10.3.1.1 auth radiussomething where users.csv file contains 10000 user names with password, I get this output: Total succeeded : 3811 Total failed : 6189 Total no reply : 0 Total time (s) : 10.588 Packets/s : 944 Response times: < 10 usec : 0 < 100 usec : 0 < msec : 0 < 10 msec : 1 < 0.1s : 3758 < s : 5897 < 10s : 344 < 100s : 0 ====== ADDS ====== [[https://docs.librenms.org/Extensions/Applications/#freeradius]]