Witam,
Szukam pomocy lub gotowej konfiguracji lms z freeradius.
Swego czasu znalazlem na tej liście gotowy config pod postgresql (jest w
załączniku). Jednak z wielu względów muszę zostać przy mysql... Więc czy
ktoś z Was mógłby podzielić się informacją jak za pomocą mysql odpytać
bazę lmsa, żeby osiągnąć podobny efekt?
pozdr.
Sebastian
**
** <http://www.postgresql.org/>
CREATE TYPE radiusrow AS (
id integer,
UserName text,
Attribute text,
Value text,
Op text
);
CREATE OR REPLACE FUNCTION radcheck (username text) RETURNS SETOF radiusrow AS $$
DECLARE
result radiusrow;
BEGIN
IF username ~* '^[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}$'
THEN
SELECT 0, username, 'Password', '', '=='
INTO result
FROM nodes
WHERE LOWER(mac) = LOWER(username);
IF FOUND THEN RETURN NEXT result; END IF;
SELECT 1, username, 'NAS-Port-Id', netdevices.name, '=='
INTO result
FROM nodes n
LEFT JOIN netdevices ON (n.netdev = netdevices.id)
WHERE LOWER(mac) = LOWER(username);
IF FOUND THEN RETURN NEXT result; END IF;
ELSE
SELECT 0, username, 'Password', passwd, '=='
INTO result
FROM nodes
WHERE LOWER(name) = LOWER(username);
IF FOUND THEN RETURN NEXT result; END IF;
SELECT 1, username, 'NAS-Port-Id', netdevices.name, '=='
INTO result
FROM nodes n
LEFT JOIN netdevices ON (n.netdev = netdevices.id)
WHERE LOWER(n.name) = LOWER(username);
IF FOUND THEN RETURN NEXT result; END IF;
END IF;
RETURN;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION radreply (username text) RETURNS SETOF radiusrow AS $$
DECLARE
result radiusrow;
up integer := 0;
down integer := 0;
theip text; themac text; themask text; thename text;
BEGIN
IF username ~* '^[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}$'
THEN
SELECT 0, username, 'NAS-Port-Id', netdevices.name, '=='
INTO result
FROM nodes n
LEFT JOIN netdevices ON (n.netdev = netdevices.id)
WHERE LOWER(n.mac) = LOWER(username);
IF FOUND THEN RETURN NEXT result; END IF;
ELSE
result.UserName := username;
result.Op := '==';
SELECT INET_NTOA(n.ipaddr), n.mac, netdevices.name,
(SELECT mask FROM networks WHERE n.ipaddr & INET_ATON(mask) = address) AS mask
INTO theip, themac, thename, themask
FROM nodes n
LEFT JOIN netdevices ON (n.netdev = netdevices.id)
WHERE LOWER(n.name) = LOWER(username);
IF theip IS NOT NULL
THEN
result.id := 0;
result.Attribute := 'Framed-Ip-Address';
result.Value := theip;
RETURN NEXT result;
END IF;
IF themac IS NOT NULL
THEN
result.id := 1;
result.Attribute := 'Calling-Station-Id';
result.Value := themac;
RETURN NEXT result;
END IF;
IF themask IS NOT NULL
THEN
result.id := 2;
result.Attribute := 'Framed-IP-Netmask';
result.Value := themask;
RETURN NEXT result;
END IF;
-- IF thename IS NOT NULL
-- THEN
-- result.id := 3;
-- result.Attribute := 'NAS-Port-Id';
-- result.Value := thename;
-- RETURN NEXT result;
-- END IF;
SELECT ROUND(SUM(upceil)/COUNT(DISTINCT n.id)),
ROUND(SUM(downceil)/COUNT(DISTINCT n.id)) * 2
INTO up, down
FROM assignments
LEFT JOIN tariffs ON (tariffid = tariffs.id)
LEFT JOIN nodes n ON (customerid = n.ownerid)
WHERE EXISTS (SELECT 1 FROM nodes n2
WHERE LOWER(n2.name) = LOWER(username)
AND n.ownerid = n2.ownerid
AND n2.access = 1)
AND n.access = 1
AND (datefrom <= EXTRACT(EPOCH FROM CURRENT_TIMESTAMP(0)) OR datefrom = 0)
AND (dateto >= EXTRACT(EPOCH FROM CURRENT_TIMESTAMP(0)) OR dateto = 0);
result.id := 4;
result.Attribute := 'Mikrotik-Rate-Limit';
result.Value := up || 'k/' || down || 'k';
RETURN NEXT result;
END IF;
RETURN;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION radgroupcheck (username text) RETURNS SETOF radiusrow AS $$
DECLARE
result radiusrow;
BEGIN
IF username !~* '^[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}$'
THEN
SELECT 0, 'PPPOE', 'Auth-Type', 'MS-CHAP', ':='
INTO result;
RETURN NEXT result;
END IF;
RETURN;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION radgroupreply (username text) RETURNS SETOF radiusrow AS $$
DECLARE
result radiusrow;
BEGIN
IF username !~* '^[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}$'
THEN
SELECT 0, 'PPPOE', 'Framed-Protocol', 'PPP', '=='
INTO result;
RETURN NEXT result;
--- SELECT 1, 'PPPOE', 'Framed-MTU', '1500', '=='
--- INTO result;
--- RETURN NEXT result;
SELECT 2, 'PPPOE', 'Service-Type', 'Framed-User', '=='
INTO result;
RETURN NEXT result;
SELECT 3, 'PPPOE', 'Port-Limit', '1', '=='
INTO result;
RETURN NEXT result;
END IF;
RETURN;
END;
$$ LANGUAGE plpgsql;
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
Gracjan Tyczyński wrote:
> On Tue, 9 Oct 2007 07:25:05 +0200
> Gracjan Tyczyński <grax(a)koszalin.com.pl> wrote:
>
>
>> On Tue, 9 Oct 2007 07:22:12 +0200
>> "Maricn" <bsflip(a)gmail.com> wrote:
>> a przy recznym odpalaniu mam teraz taki komunikat:
>>
>> -bash-3.2# ./rc.limits
>> Error: argument "invalid parent ID" is wrong: 1:19998
>> Error: argument "invalid class ID" is wrong: 1:19998
>> Error: argument "invalid parent ID" is wrong: 1:19998
>> Error: argument "invalid parent ID" is wrong: 1:19999
>> Error: argument "invalid parent ID" is wrong: 1:19999
>> Error: argument "invalid parent ID" is wrong: 1:19999
>> Error: argument "invalid parent ID" is wrong: 1:19999
>> -bash-3.2#
>>
>>
>>> Nie rozumiem poco ci jeszcze lms-mgc ?? Przeciez lms-traffic-htbiplimits
>>> ustawia regulki taryf przypisanym klientom (HTB).
>>> Zmiany nanosisz w samym LMS-się przy przeladowaniu kaz tylko by w/w skryp
>>> ponownie się odpalil i wszystko.
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: lms-bounces+bsflip=gmail.com(a)lists.lms.org.pl
>>> [mailto:lms-bounces+bsflip=gmail.com@lists.lms.org.pl] On Behalf Of Gracjan
>>> Tyczyński
>>> Sent: Tuesday, October 09, 2007 7:09 AM
>>> To: lms(a)lists.lms.org.pl
>>> Cc: lms(a)lists.lms.org.pl
>>> Subject: [lms] problem z instancja lms-traffic-htbiptlimits
>>>
>>> Witam mam taki klopot.
>>>
>>> ustawilem lms.ini interfejs wan, potem odpalilem skrypt
>>> lms-traffic-htbiplimits, ktory utworzyl mi w /etc/rc.d/ plik rc.limits.
>>> Teraz aby skrypt dzialal musze jeszcze dopisac instancje w pliku lms-mgc.ini
>>>
>>>
>>> [mgc:limits] i nie wiem co tam wpisac aby np. dodam pasmo dla danego usera ,
>>> aby do pliku zmienialy sie ustawienia i aby to dzialalo.
>>> ja mam:
>>>
>>> [mgc:limits]
>>> outfile = /etc/rc.d/rc.limits
>>> outfile_perm = 700
>>> header = #!/bin/bash\n$TC=/sbin/tc\n
>>> post_exec = "/etc/rc.d/rc.limits
>>>
>>> pomozcie
>>>
>
> jak zlikwidowac ten blad i co zrobic, aby po dodaniu userai nadaniu mu pasma samo sie zapisywalo i dzialalo z poziomu LMS?
> prosze opisac krok po kroku
>
>
Wygląda na to, że rozwiązaniem Twojego problemu będzie demon, albo
uruchamianie skryptów dosyć często z crona. Ale krok po kroku to trzeba
by przepisać podręcznik... chyba.
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
Gracjan Tyczyński wrote:
> On Tue, 9 Oct 2007 07:25:05 +0200
> Gracjan Tyczyński <grax(a)koszalin.com.pl> wrote:
>
>
>> On Tue, 9 Oct 2007 07:22:12 +0200
>> "Maricn" <bsflip(a)gmail.com> wrote:
>> a przy recznym odpalaniu mam teraz taki komunikat:
>>
>> -bash-3.2# ./rc.limits
>> Error: argument "invalid parent ID" is wrong: 1:19998
>> Error: argument "invalid class ID" is wrong: 1:19998
>> Error: argument "invalid parent ID" is wrong: 1:19998
>> Error: argument "invalid parent ID" is wrong: 1:19999
>> Error: argument "invalid parent ID" is wrong: 1:19999
>> Error: argument "invalid parent ID" is wrong: 1:19999
>> Error: argument "invalid parent ID" is wrong: 1:19999
>> -bash-3.2#
>>
>>
>>> Nie rozumiem poco ci jeszcze lms-mgc ?? Przeciez lms-traffic-htbiplimits
>>> ustawia regulki taryf przypisanym klientom (HTB).
>>> Zmiany nanosisz w samym LMS-się przy przeladowaniu kaz tylko by w/w skryp
>>> ponownie się odpalil i wszystko.
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: lms-bounces+bsflip=gmail.com(a)lists.lms.org.pl
>>> [mailto:lms-bounces+bsflip=gmail.com@lists.lms.org.pl] On Behalf Of Gracjan
>>> Tyczyński
>>> Sent: Tuesday, October 09, 2007 7:09 AM
>>> To: lms(a)lists.lms.org.pl
>>> Cc: lms(a)lists.lms.org.pl
>>> Subject: [lms] problem z instancja lms-traffic-htbiptlimits
>>>
>>> Witam mam taki klopot.
>>>
>>> ustawilem lms.ini interfejs wan, potem odpalilem skrypt
>>> lms-traffic-htbiplimits, ktory utworzyl mi w /etc/rc.d/ plik rc.limits.
>>> Teraz aby skrypt dzialal musze jeszcze dopisac instancje w pliku lms-mgc.ini
>>>
>>>
>>> [mgc:limits] i nie wiem co tam wpisac aby np. dodam pasmo dla danego usera ,
>>> aby do pliku zmienialy sie ustawienia i aby to dzialalo.
>>> ja mam:
>>>
>>> [mgc:limits]
>>> outfile = /etc/rc.d/rc.limits
>>> outfile_perm = 700
>>> header = #!/bin/bash\n$TC=/sbin/tc\n
>>> post_exec = "/etc/rc.d/rc.limits
>>>
>>> pomozcie
>>>
>
> jak zlikwidowac ten blad i co zrobic, aby po dodaniu userai nadaniu mu pasma samo sie zapisywalo i dzialalo z poziomu LMS?
> prosze opisac krok po kroku
>
>
Witam,
Ja chcialem sie dolaczyc do pytania o parent ID (na razie problem
rozwiązałem zmieniając w skrypcie lms-traffic-htbiptlimits 'parent' i
'classid' o rząd wielkości), oraz dodatkowo zapytać o limity połączeń. W
LMS mam ustawione limity, natomiast ww. skrypt nie generuje regułek
connlimit.
Pozdrawiam,
Marcin
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
On Tue, 9 Oct 2007 07:25:05 +0200
Gracjan Tyczyński <grax(a)koszalin.com.pl> wrote:
> On Tue, 9 Oct 2007 07:22:12 +0200
> "Maricn" <bsflip(a)gmail.com> wrote:
> a przy recznym odpalaniu mam teraz taki komunikat:
>
> -bash-3.2# ./rc.limits
> Error: argument "invalid parent ID" is wrong: 1:19998
> Error: argument "invalid class ID" is wrong: 1:19998
> Error: argument "invalid parent ID" is wrong: 1:19998
> Error: argument "invalid parent ID" is wrong: 1:19999
> Error: argument "invalid parent ID" is wrong: 1:19999
> Error: argument "invalid parent ID" is wrong: 1:19999
> Error: argument "invalid parent ID" is wrong: 1:19999
> -bash-3.2#
>
> > Nie rozumiem poco ci jeszcze lms-mgc ?? Przeciez lms-traffic-htbiplimits
> > ustawia regulki taryf przypisanym klientom (HTB).
> > Zmiany nanosisz w samym LMS-się przy przeladowaniu kaz tylko by w/w skryp
> > ponownie się odpalil i wszystko.
> >
> >
> >
> > -----Original Message-----
> > From: lms-bounces+bsflip=gmail.com(a)lists.lms.org.pl
> > [mailto:lms-bounces+bsflip=gmail.com@lists.lms.org.pl] On Behalf Of Gracjan
> > Tyczyński
> > Sent: Tuesday, October 09, 2007 7:09 AM
> > To: lms(a)lists.lms.org.pl
> > Cc: lms(a)lists.lms.org.pl
> > Subject: [lms] problem z instancja lms-traffic-htbiptlimits
> >
> > Witam mam taki klopot.
> >
> > ustawilem lms.ini interfejs wan, potem odpalilem skrypt
> > lms-traffic-htbiplimits, ktory utworzyl mi w /etc/rc.d/ plik rc.limits.
> > Teraz aby skrypt dzialal musze jeszcze dopisac instancje w pliku lms-mgc.ini
> >
> >
> > [mgc:limits] i nie wiem co tam wpisac aby np. dodam pasmo dla danego usera ,
> > aby do pliku zmienialy sie ustawienia i aby to dzialalo.
> > ja mam:
> >
> > [mgc:limits]
> > outfile = /etc/rc.d/rc.limits
> > outfile_perm = 700
> > header = #!/bin/bash\n$TC=/sbin/tc\n
> > post_exec = "/etc/rc.d/rc.limits
> >
> > pomozcie
jak zlikwidowac ten blad i co zrobic, aby po dodaniu userai nadaniu mu pasma samo sie zapisywalo i dzialalo z poziomu LMS?
prosze opisac krok po kroku
--
Gracjan Tyczyński <grax(a)koszalin.com.pl>
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
On Tue, 9 Oct 2007 07:22:12 +0200
"Maricn" <bsflip(a)gmail.com> wrote:
a przy recznym odpalaniu mam teraz taki komunikat:
-bash-3.2# ./rc.limits
Error: argument "invalid parent ID" is wrong: 1:19998
Error: argument "invalid class ID" is wrong: 1:19998
Error: argument "invalid parent ID" is wrong: 1:19998
Error: argument "invalid parent ID" is wrong: 1:19999
Error: argument "invalid parent ID" is wrong: 1:19999
Error: argument "invalid parent ID" is wrong: 1:19999
Error: argument "invalid parent ID" is wrong: 1:19999
-bash-3.2#
> Nie rozumiem poco ci jeszcze lms-mgc ?? Przeciez lms-traffic-htbiplimits
> ustawia regulki taryf przypisanym klientom (HTB).
> Zmiany nanosisz w samym LMS-się przy przeladowaniu kaz tylko by w/w skryp
> ponownie się odpalil i wszystko.
>
>
>
> -----Original Message-----
> From: lms-bounces+bsflip=gmail.com(a)lists.lms.org.pl
> [mailto:lms-bounces+bsflip=gmail.com@lists.lms.org.pl] On Behalf Of Gracjan
> Tyczyński
> Sent: Tuesday, October 09, 2007 7:09 AM
> To: lms(a)lists.lms.org.pl
> Cc: lms(a)lists.lms.org.pl
> Subject: [lms] problem z instancja lms-traffic-htbiptlimits
>
> Witam mam taki klopot.
>
> ustawilem lms.ini interfejs wan, potem odpalilem skrypt
> lms-traffic-htbiplimits, ktory utworzyl mi w /etc/rc.d/ plik rc.limits.
> Teraz aby skrypt dzialal musze jeszcze dopisac instancje w pliku lms-mgc.ini
>
>
> [mgc:limits] i nie wiem co tam wpisac aby np. dodam pasmo dla danego usera ,
> aby do pliku zmienialy sie ustawienia i aby to dzialalo.
> ja mam:
>
> [mgc:limits]
> outfile = /etc/rc.d/rc.limits
> outfile_perm = 700
> header = #!/bin/bash\n$TC=/sbin/tc\n
> post_exec = "/etc/rc.d/rc.limits
>
> pomozcie
>
> --
> Gracjan Tyczyński <grax(a)koszalin.com.pl>
>
> _______________________________________________
> lms mailing list
> lms(a)lists.lms.org.pl
> http://lists.lms.org.pl/mailman/listinfo/lms
>
>
> _______________________________________________
> lms mailing list
> lms(a)lists.lms.org.pl
> http://lists.lms.org.pl/mailman/listinfo/lms
--
Gracjan Tyczyński <grax(a)koszalin.com.pl>
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
Nie rozumiem poco ci jeszcze lms-mgc ?? Przeciez lms-traffic-htbiplimits
ustawia regulki taryf przypisanym klientom (HTB).
Zmiany nanosisz w samym LMS-się przy przeladowaniu kaz tylko by w/w skryp
ponownie się odpalil i wszystko.
-----Original Message-----
From: lms-bounces+bsflip=gmail.com(a)lists.lms.org.pl
[mailto:lms-bounces+bsflip=gmail.com@lists.lms.org.pl] On Behalf Of Gracjan
Tyczyński
Sent: Tuesday, October 09, 2007 7:09 AM
To: lms(a)lists.lms.org.pl
Cc: lms(a)lists.lms.org.pl
Subject: [lms] problem z instancja lms-traffic-htbiptlimits
Witam mam taki klopot.
ustawilem lms.ini interfejs wan, potem odpalilem skrypt
lms-traffic-htbiplimits, ktory utworzyl mi w /etc/rc.d/ plik rc.limits.
Teraz aby skrypt dzialal musze jeszcze dopisac instancje w pliku lms-mgc.ini
[mgc:limits] i nie wiem co tam wpisac aby np. dodam pasmo dla danego usera ,
aby do pliku zmienialy sie ustawienia i aby to dzialalo.
ja mam:
[mgc:limits]
outfile = /etc/rc.d/rc.limits
outfile_perm = 700
header = #!/bin/bash\n$TC=/sbin/tc\n
post_exec = "/etc/rc.d/rc.limits
pomozcie
--
Gracjan Tyczyński <grax(a)koszalin.com.pl>
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
Witam mam taki klopot.
ustawilem lms.ini interfejs wan, potem odpalilem skrypt lms-traffic-htbiplimits, ktory utworzyl mi w /etc/rc.d/ plik rc.limits.
Teraz aby skrypt dzialal musze jeszcze dopisac instancje w pliku lms-mgc.ini
[mgc:limits] i nie wiem co tam wpisac aby np. dodam pasmo dla danego usera , aby do pliku zmienialy sie ustawienia i aby to dzialalo.
ja mam:
[mgc:limits]
outfile = /etc/rc.d/rc.limits
outfile_perm = 700
header = #!/bin/bash\n$TC=/sbin/tc\n
post_exec = "/etc/rc.d/rc.limits
pomozcie
--
Gracjan Tyczyński <grax(a)koszalin.com.pl>
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
> dzięki za patcha, ale to zapytanie jest nadmiarowe, poza tym można po
> prostu zrobić
>
> /usr/sbin/iptables -t nat -I PREROUTING -i eth0 -j MACS > /dev/null
>
> /usr/sbin/iptables -t nat -I PREROUTING -i eth1 -j MACS > /dev/null
>
> ale zgadzam się, że lepiej zrobić to podobnie do twojego rozwiązania,
> chociażby dlatego aby nie trzeba było grzebać w plikach w przypadku
> zmiany interfejsów, wystarczy wyklikać w sieciach.
zgadza sie, osobom, ktorym skonfiguruje sie LMS, a ktore posluguja sie
nim wylacznie z poziomu przegladarki, moze zaoszczedzic to problemow.
aha, jesli ktokolwiek z userow LMS chcialby odpalac filtracje mac/ip na
poczatku drogi pakietow, musi pamietac o odblokowaniu portow dhcp (jesli
z niego korzysta), w przeciwnym przypadku uniemozliwi komputerowi
uzytkownika pobranie adresu:
iptables -t nat -I PREROUTING -i ... -p udp --sport 67:68 --dport 67:68
-j ACCEPT
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
Bialy wrote:
> witam. przesylam info dla korzystajacych ze skryptu lms-makemacs (lms w
> wersji 1.9.8 Idos).
>
> odpalilem go sobie w preroutingu, prawie na samym poczatku drogi
> pakietu, za pomoca polecen:
>
> lms-makemacs -q
> /usr/sbin/iptables -t nat -N MACS > /dev/null
> /usr/sbin/iptables -t nat -I PREROUTING -j MACS > /dev/null
> /etc/rc.d/rc.macs > /dev/null
>
> efekt jak na rysunku:
> http://img528.imageshack.us/img528/8125/macsyi1.jpg
>
> dziala poprawnie, gdy cos nie gra z macami/ip, to juz na samym poczatku
> user jest blokowany. niestety pojawil sie problem. domyslnie generowane
> przez srypt regulki iptables nie uwzgledniaja interfejsu wejsciowego
> (opcja -i dla iptables), co owocuje brakiem dostepu z poziomu interfejsu
> zewnetrznego. wiadomo, ze nikt nie bedzie wpisywal wszystkich mozliwych
> miejsc, z ktorych moze sie polaczyc z zewnatrz serwerem i macow
> komputerow, wiec zmodyfikowalem lekko skrypt aby, bez zbednego dlubania,
> wyciagal z bazy interfejs lokalny (wartosc 'interface' z tabeli
> 'networks') i zawieral go w generowanych regulkach, tak by brane byly
> pod uwage powiazania mac/ip jedynie dla userow z sieci lokalnej. moze
> sie komus przyda, ponizej patch:
>
> --- lms-makemacs-org 2007-10-08 17:05:07.000000000 +0200
> +++ lms-makemacs 2007-10-08 17:08:57.000000000 +0200
> @@ -238,6 +238,17 @@
>
> $dbq->finish();
>
> +$dbq = $dbase->prepare("SELECT interface FROM networks");
> +$dbq->execute();
> +my $iface;
> +
> +while (my $row = $dbq->fetchrow_hashref())
> +{
> + $iface = $row->{'interface'};
> +}
> +
> +$dbq->finish();
> +
>
dzięki za patcha, ale to zapytanie jest nadmiarowe, poza tym można po
prostu zrobić
/usr/sbin/iptables -t nat -I PREROUTING -i eth0 -j MACS > /dev/null
/usr/sbin/iptables -t nat -I PREROUTING -i eth1 -j MACS > /dev/null
ale zgadzam się, że lepiej zrobić to podobnie do twojego rozwiązania,
chociażby dlatego aby nie trzeba było grzebać w plikach w przypadku
zmiany interfejsów, wystarczy wyklikać w sieciach.
--
Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252
LAN Management System Developer http://lms.org.pl
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms
witam. przesylam info dla korzystajacych ze skryptu lms-makemacs (lms w
wersji 1.9.8 Idos).
odpalilem go sobie w preroutingu, prawie na samym poczatku drogi
pakietu, za pomoca polecen:
lms-makemacs -q
/usr/sbin/iptables -t nat -N MACS > /dev/null
/usr/sbin/iptables -t nat -I PREROUTING -j MACS > /dev/null
/etc/rc.d/rc.macs > /dev/null
efekt jak na rysunku:
http://img528.imageshack.us/img528/8125/macsyi1.jpg
dziala poprawnie, gdy cos nie gra z macami/ip, to juz na samym poczatku
user jest blokowany. niestety pojawil sie problem. domyslnie generowane
przez srypt regulki iptables nie uwzgledniaja interfejsu wejsciowego
(opcja -i dla iptables), co owocuje brakiem dostepu z poziomu interfejsu
zewnetrznego. wiadomo, ze nikt nie bedzie wpisywal wszystkich mozliwych
miejsc, z ktorych moze sie polaczyc z zewnatrz serwerem i macow
komputerow, wiec zmodyfikowalem lekko skrypt aby, bez zbednego dlubania,
wyciagal z bazy interfejs lokalny (wartosc 'interface' z tabeli
'networks') i zawieral go w generowanych regulkach, tak by brane byly
pod uwage powiazania mac/ip jedynie dla userow z sieci lokalnej. moze
sie komus przyda, ponizej patch:
--- lms-makemacs-org 2007-10-08 17:05:07.000000000 +0200
+++ lms-makemacs 2007-10-08 17:08:57.000000000 +0200
@@ -238,6 +238,17 @@
$dbq->finish();
+$dbq = $dbase->prepare("SELECT interface FROM networks");
+$dbq->execute();
+my $iface;
+
+while (my $row = $dbq->fetchrow_hashref())
+{
+ $iface = $row->{'interface'};
+}
+
+$dbq->finish();
+
foreach my $key (@networks)
{
my $dbq = $dbase->prepare("SELECT address, mask FROM networks WHERE
name = UPPER('$key')");
@@ -267,7 +278,7 @@
{
if(!$lock_na || ($accesslist{$ipaddr} eq 1))
{
- print MACSFILE $ipbin." -t nat -A ".$chain." -s ".$ipaddr." -m
mac --mac-source ".$maclist{$ipaddr}." -j RETURN\n";
+ print MACSFILE $ipbin." -t nat -A ".$chain." -i ".$iface." -s
".$ipaddr." -m mac --mac-source ".$maclist{$ipaddr}." -j RETURN\n";
}
}
}
@@ -277,9 +288,9 @@
}
$dbase->disconnect();
-print MACSFILE $ipbin." -t nat -A ".$chain." -p tcp --dport 80 -j DNAT
--to ".$redir."\n";
-print MACSFILE $ipbin." -t nat -A ".$chain." -p tcp --dport 8080 -j
DNAT --to ".$redir."\n";
-print MACSFILE $ipbin." -t nat -A ".$chain." -j DROP\n";
+print MACSFILE $ipbin." -t nat -A ".$chain." -i ".$iface." -p tcp
--dport 80 -j DNAT --to ".$redir."\n";
+print MACSFILE $ipbin." -t nat -A ".$chain." -i ".$iface." -p tcp
--dport 8080 -j DNAT --to ".$redir."\n";
+print MACSFILE $ipbin." -t nat -A ".$chain." -i ".$iface." -j DROP\n";
close(MACSFILE);
chown $cuid, $cgid, $cfile or print "Warning! Unable to set owner of
$cfile to $cuid.$cgid.\n";
chmod oct($cperm), $cfile or print "Warning! Unable to set permission
$cperm to $cfile.\n";
_______________________________________________
lms mailing list
lms(a)lists.lms.org.pl
http://lists.lms.org.pl/mailman/listinfo/lms