linux user group brescia

immagine del castello

Archivio della mailing list

[LugBS] ancora iptables

Rampage * atomikramp a gmail.com
Mer 11 Maggio 2011 15:28:59 UTC
Ciao ragazzi,
sto tribulando un po' con iptables perchè sto cercando di realizzarmi (sono
matto) un semplice sistema di captive portal con un po' di iptables e PHP.

seguendo il tutorial a queste pagine:
http://www.andybev.com/index.php/Using_iptables_and_PHP_to_create_a_captive_portal
mi
sono arrabattato un po' e la cosa "quasi" funziona.

L'unico piccolo (per modo di dire) problema, è che secondo me lo script è
screwed up, perchè di fatto non funziona, blocca TUTTO, l'ho modificato un
po' giusto per fargli accettare l'SSH, ma poi non forwarda le richieste.

allora ho provato a modificarlo un po' in questo modo:

IPTABLES=/sbin/iptables
WAN="eth0"
LAN="eth1"
CAPTIVEPORTAL="192.168.100.1"

$IPTABLES -N internet -t nat

$IPTABLES -t nat -A PREROUTING -j internet

$IPTABLES -t nat -A internet -p udp --dport 53 -j ACCEPT

awk 'BEGIN { FS="\t"; } { system("$IPTABLES -t nat -A internet -m mac
--mac-source "$4" -j RETURN"); }' /var/lib/users

$IPTABLES -t nat -A internet -j MARK --set-mark 99
$IPTABLES -t nat -A PREROUTING -m mark --mark 99 -p tcp --dport 80 -j DNAT
--to-destination $CAPTIVEPORTAL

$IPTABLES -t filter -A FORWARD -m mark --mark 99 -j DROP

$IPTABLES -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
$IPTABLES -t filter -A INPUT -p udp --dport 53 -j ACCEPT
$IPTABLES -t filter -A INPUT -m mark --mark 99 -j DROP

echo "1" > /proc/sys/net/ipv4/ip_forward
$IPTABLES -A FORWARD -i $WAN -o $LAN -m state --state ESTABLISHED,RELATED -j
ACCEPT
$IPTABLES -A FORWARD -i $LAN -o $WAN -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $WAN -j MASQUERADE

ma il sistema mi dice che MARK può essere usato solo nella tablella mangle,
e non in nat

allora ho modificato solo la riga che fa il MARKing, ma a quel punto la
redirection dei client non autenticati non avviene e si naviga dritti
sparati verso internet.

lo script banalmente dovrebbe
markare tutti i pacchetti come 99
se i pacchetti sono markati 99 allora li gira verso il captive portal, e se
non sono http, li droppa
in sede di autenticazione lo script php inserisce nel file /var/lib/users i
dati dell'utente tra cui il MAC
a quel punto viene creata una regola per cui il MAC è autorizzato a
navigare. e non viene più ridiretto verso il captive portal.

spero in un vostro consiglio.

Francesco
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lugbs.linux.it/pipermail/lug/attachments/20110511/4f89b263/attachment.html>


Maggiori informazioni sulla lista Lug