SKFREE

Mikrotik™ Scripts&Software - PPPoE multiple user login

Levian - 29.01.2016 - 18:19
Post subject: PPPoE multiple user login
Zdravim pani.
Trapim sa z jednym problemom. Na mikrotiku mam PPPoE server. Chcem zabranit tomu aby sa viac uzivatelov vedelo prihlasit tym istym loginom. V MK je moznost zapnut One Session per Host. Toto teoreticky funguje ale nie moc dobre. Ak to zapnem tak pri 2 rovnakych loginoch to druheho vykopne a nepusti mu net. Ale ono si to nesleduje len loginy ale asi aj mac adresu z ktorej sa login hlasi. Ak to mam zapnute a 2 rozdielne loginy sa mi prihlasia ale pod jednou mac adresou tak jedneho z nich vzdy vykopne. Priklad: Na dome mam Loco v mode client a su tam napojene 2 routre. kazdy ma svoj login. Pokial je vypnute One session per host tak su prihlaseny obidvaja. Akonahle to zapne tak chvilu ide jeden a chvilu druhy. Vie niekto ako by sa to dalo vyriesit ? Aby zabranilo 2 rovnakym loginom v sieti.
Na wiki som nasiel tento skript:

:local userX;
:local userY;
:local i;
:local u;
:local clogged 0;
:local addr [ :resolve "www.maxfava.com" ];
:local addr2 [ :resolve "www.maxfava.com" ];

:foreach i in=[/ppp active find] do={
:set userX [/ppp active get $i name];
:set clogged 0;

:foreach u in=[/ppp active find name=$userX ] do={
:set clogged (clogged +1);

:if (clogged>1) do={
:set userY [/ppp active get $u name];
:set addr [/ppp active get $u caller-id];
:set addr2 [/ppp active get $i caller-id];

:if ($addr != addr2) do={
:log info "MPPP: FIRST ACTIVE <<$userX>> FROM IP $addr2";
:log info "MPPP: THE $clogged° <<$userY>> CALLING FROM IP $addr NOW DISCONNECTED";
/ppp active remove $u;
}

}
}
}

Mne ale nefunguje. Potrebujem to vyriesit nielen na jednom routri ale v ramci vsetkych pppoe servrov na sieti.
Pouzivam freeradius a tam je v Queries.conf riadok # simul_count_query = "\ ktory by to mal tiez riesit ? Tiez to nejak nefacha...

Dakujem za rady
[/list]
pixall - 29.01.2016 - 20:28
Post subject: PPPoE multiple user login
to co riesis sa zvykne nazyvat "simultaneous use" a riesi sa to na strane freeradius servera. nezapina sa to na jednom mieste, ale asi na troch. tusim zapnes ze sa to ma pouzivat , dalej nastavis ktory datovy zdroj budes pouzivat na overovanie ci uz uzivatel je prihlaseny (my pouzivame sql, rovnako ako na autorizaciu), a potom este treba nastavit, aby prekrocenie poctu simultaneous-use bolo dovodom na odmietnutie prihlasenia.

potom si este treba nakonfigurovat naska (pppoe servre) aj radius server tak, tak aby na nich za ziadnych okolnosti nemohli ostat visiet nejake zombie sessny, lebo ked tam budes mat takuto session ktora sa nevymaze hoci uz nie je pouzivana, uzivatel sa ti nebude vediet prihlasit. viem ze my sme na to pisali skripty, ktore priebezne kontroluju veci a ked raz za cas niekde ostane visiet nejaka session, tak ju skript dodatocne uzavrie.

odporucam v prvom rade prehladat konfiguraky freeradiusu na slovne spojenie "Simultaneous-Use" a pripadne si pomoct googlom. na strane ppoe servera toto nie je sprave riesit, pretoze ten len zoberie poziadavku uzivatela o prihlasenie, a radius je ten, kto musi rozhodnut, ci prihlasenie moze prebehnut alebo nie.
Levian - 29.01.2016 - 20:42
Post subject:
Prave sa hrabem v tom freeradiuse.
Nasiel som toto:

# simul_count_query = " \
# SELECT COUNT(*) \
# FROM ${acct_table1} \
# WHERE username = '%{SQL-User-Name}' \
# AND acctstoptime IS NULL"

simul_verify_query = "\
SELECT \
radacctid, acctsessionid, username, nasipaddress, nasportid, framedipaddress, \
callingstationid, framedprotocol \
FROM ${acct_table1} \
WHERE username = '%{SQL-User-Name}' \
AND acctstoptime IS NULL"

Len neviem co presne treba odkomentovat, Pixall vedel by si sa mi nato pozret ako to mate?
pixall - 31.01.2016 - 17:19
Post subject:
ak mas take tabulky v SQL ako su vo freeradiuse, tak teoreticky aj jeden aj druhy priklad su OK. treba si v SQL vyskusat, ci ten-ktory prikaz vracia zmysluplne hodnoty, pripadne si ho treba podla seba upravit. my mame ine (svoje) sql tabulky a tym padom mame aj prepisane SQL prikazy, nase nastavenia ti nebudu nic platne.
All times are GMT
Powered by PNphpBB2 © 2003-2005 The PNphpBB Group
Credits