Даний варіант установки не з офіційної документації і розроблений для нашої мережі, але може бути портований і в інші мережі! Він не має MySQL модуля, але є потужний модуль PERL, який дозволяє робити запити до бази набагато зручніше в плані маніпуляцій. На офіційному сайті FreeRadius сказано, що rlm_perl продуктивніше rlm_sql. Використання цього варіанта ви робите на свій страх і ризик :).
pkg install freeradius3 p5-Digest-MD5 p5-Authen-Radius
Після встановлення обов'язково заблокуйте freeradius3, щоб уникнути випадкового оновлення, оскільки злітають права на файли налаштувань і РАДІУС білше не запрацює!
Я не зміг виявити, що саме спричиняє таку проблему, тому і не знаю як її обійти!
pkg lock freeradius3
Резервна копія оригінальних конфігів
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
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
$ 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
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