Redirectarea asta se face destul de simplu, si nu e neaparat nevoie de un
proxy pentru a obtine o aplicatie functionala ( in unele cazuri mai scuteste
ceva timp de munca, dar nu e o regula de baza ) .
Redirectarea de la MyX era facuta pe echipamente hardware, deci nu se pune
problema folosirii aceleiasi metode, insa principiile sunt identice :
Intrucat printr-o asemenea aplicatie se doreste "captarea" utilizatorului
catre o anumita pagina web ( de unde si denumirea de 'Captive Portal' )
metoda cea mai simpla de a face acest lucru este de a redirecta traficul
dinspre utilizator catre orice destinatie cu port 80 catre o aplicatie de
pe masina care face redirectarea ( preferabil pe alt port decat 80 ).
Redirectarea se face folosind targetul REDIRECT din iptables.
Ca exemple de lucru , sa ziceam ca utilizatorii nostrii vin dintr-un pool de
adrese de forma 192.168.0.0/24 .
Definim un chain ( in tabela FILTER sau NAT ) de forma :
# iptables -t filter -N CAPTIVE
sau
# iptables -t nat -N CAPTIVE.
In cazul nostru ( 192.168.0.0/24 ) evident ca se va face nat, asa ca alegem
a doua versiune.
In chain-ul CAPTIVE vom redirecta tot traficul pe care vrem sa-l captam :
# iptables -A CAPTIVE -t nat -p tcp --port 80 -d ! 192.168.0.0/24 -j
REDIRECT --to-port 8080
Pe masina care va face redirectarea, pornim un server de web ( apache, mai
mult ca sigur ) cu o instanta care sa asculte pe portul 8080 cu mod_rewrite
si mod_php .
Listen 8080 ( in httpd.conf )
Port 8080 ( in httpd.conf )
In fisierul de configurare ( in httpd.conf ) vom defini un VirtualHost pe
baza de port :
<VirtualHost *:8080>
ServerAdmin [EMAIL PROTECTED]
DocumentRoot /var/www/captive_portal
ServerName captive.domain.tld
<Directory />
AllowOverride All
</Directory>
ErrorLog /var/log/httpd/captive_portal_error.log
CustomLog /var/log/httpd/captive_portal_access_log combined
</VirtualHost>
In directorul /var/www/captive_portal plasam un fisier .htaccess, cu un
continut de genul :
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)$ captive.php [L]
In felul asta, orice request venit pe portul 8080 va fi tratat
corespunzator, fara sa fie generate erori 404 (not found ) .
Ramane la latitudinea fiecaruia ce doreste sa afiseze in captive.php ,
inportant este ca acest script sa poata avea acces INDIRECT la firewall .(
prin pipe-uri , db-uri, sau alte metode ) .
Pentru a redirecta un uilizator utilizand metoda de mai sus, nu trebuie
decat sa inseram reguli individuale de firewall pentru fiecare utilizator de
genul :
iptales -I PREROUTING -t nat -i eth1 -p tcp -s 192.168.0.10 -d !
192.168.0.0/24 -j CAPTIVE
iar de dat drumul i se va da cu o regula inversa :
iptales -D PREROUTING -t nat -i eth1 -p tcp -s 192.168.0.10 -d !
192.168.0.0/24 -j CAPTIVE
Cam asta ar fi metoda pe care o folosesc eu .
-Alex Sirbu-
[EMAIL PROTECTED]
----- Original Message -----
From: "Radu Radoveneanu" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, March 31, 2005 10:03 AM
Subject: [rlug] Re: myx redirect?
>
> Laviniu Gavanescu wrote:
>
>>
>>Din cate stiu eu Squid-ul are o optiune care face asta.
>>Sper sa nu ma insel :)
>>
>>
>>
>>
> ah, da, fara proxy se poate? :D
>
> ---
> Detalii despre listele noastre de mail: http://www.lug.ro/
>
---
Detalii despre listele noastre de mail: http://www.lug.ro/