Indice del forum www.zeroshell.net
Distribuzione Linux ZeroShell
 
 FAQFAQ   CercaCerca  GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo  Log inLog in   Messaggi privatiMessaggi privati 

Captive portal su pi¨ interfacce di rete

 
Nuovo argomento   Rispondi    Indice del forum -> ZeroShell
Precedente :: Successivo  
Autore Messaggio
giancagianca



Registrato: 14/08/07 20:10
Messaggi: 320

MessaggioInviato: Lun Giu 22, 2009 5:36 pm    Oggetto: Captive portal su pi¨ interfacce di rete Rispondi citando

ModalitÓ per abilitare il CP su pi¨ interfacce di rete per ZS Beta 12.

Creare una cartella scripts in /Database

Creare un file cp_start in questa cartella e creare lo script come riportato di seguito.
Questo script abilita il CP su ETH02 oltre all'interfaccia selezionata da web.
E' possibile eseguire ulteriori modifiche per abilitare il CP su altre interfacce o VLAN.


############ inizio script
#!/bin/sh
# ***************************************************************
#
# script modificato per gestione Captive Portal multi interfaccia
#
# funziona con Cp in routed mode (beta 12)
#
# ***************************************************************

. /etc/kerbynet.conf
CONFIG="$REGISTER/system/cp"
killall cp_auto 2>/dev/null >/dev/null
cd "$CONFIG"
iptables -D FORWARD -j CapPort 2>/dev/null
iptables -t nat -D PREROUTING -j CapPort 2>/dev/null
iptables -F CapPort 2>/dev/null
iptables -X CapPort 2>/dev/null
iptables -F CapPortACL 2>/dev/null
iptables -X CapPortACL 2>/dev/null
iptables -F CapPortFS 2>/dev/null
iptables -X CapPortFS 2>/dev/null
iptables -F CapPortFC 2>/dev/null
iptables -X CapPortFC 2>/dev/null
iptables -F CapPortWL 2>/dev/null
iptables -X CapPortWL 2>/dev/null
iptables -t nat -F CapPort 2>/dev/null
iptables -t nat -X CapPort 2>/dev/null
iptables -t nat -F CapPortHTTP 2>/dev/null
iptables -t nat -X CapPortHTTP 2>/dev/null
iptables -t nat -F CapPortHTTPS 2>/dev/null
iptables -t nat -X CapPortHTTPS 2>/dev/null
iptables -t nat -F CapPortGW 2>/dev/null
iptables -t nat -X CapPortGW 2>/dev/null
iptables -t nat -F CapPortProxy 2>/dev/null
iptables -t nat -X CapPortProxy 2>/dev/null

[ "`cat RemotePT 2>/dev/null`" != "`cat Auth/Port 2>/dev/null`" ] && cat Auth/Port > RemotePT
[ "`cat RemoteSSL 2>/dev/null`" != "`cat Auth/PortSSL 2>/dev/null`" ] && cat Auth/PortSSL > RemoteSSL
ENABLED=`cat Enabled 2>/dev/null`
if [ "$ENABLED" != yes -a "`cat $REGISTER/system/cp/Auth/Enabled 2>/dev/null`" != yes ] ; then
$SCRIPTS/terminate CapPortAS 15 2>/dev/null
fi

if [ "$ENABLED" == yes ] ; then
WEBLOGIN=`cat WebLogin 2>/dev/null`

if [ "$WEBLOGIN" == Remote ] ; then
REMOTEPT=`cat RemotePT 2>/dev/null`
else
#if ! ps -e |grep -w -q CapPortAS ; then
# echo "WARNING: local authentication is required but the Authentication Server is not started"
# exit 15
#fi
echo yes > $REGISTER/system/cp/Auth/Enabled
export REMOTEPT=`cat Auth/Port 2>/dev/null`
fi
[ -z "$REMOTEPT" ] && REMOTEPT=12080
export REMOTESSL=$((REMOTEPT+1))
export GWPORT=$((REMOTEPT+2))
echo $GWPORT > GWPort
export GWPORTSSL=$((REMOTEPT+3))
echo $GWPORTSSL > GWPortSSL
export QUERY_STRING="onlyrender"
if [ "`cat Auth/NoSSL 2>/dev/null`" == yes ] ; then
HTTPCONF=cp_gw-httpd.nossl
else
HTTPCONF=cp_gw-httpd.ssl
fi
render "$TEMPLATE/$HTTPCONF" > /var/register/system/cp/cp_gw-httpd
export PATH="/usr/local/ssl/bin:$PATH"
if ! $SCRIPTS/cp_auth_start ; then
logger -t "CaptivePortal" "GW: ERROR: Captive Portal Gateway failed to start: `cat /tmp/CapPortAS.err`"
exit 10
fi
#if CapPortGW -f CapPortGW.conf 2>/tmp/CapPortGW.err ; then
# :
#else
# logger -t "CaptivePortal" "GW: ERROR: Captive Portal Gateway failed to start: `cat /tmp/CapPortGW.err`"
# exit 10
#fi
iptables -N CapPort
iptables -N CapPortACL
iptables -N CapPortFS
iptables -N CapPortFC
iptables -N CapPortWL
iptables -t nat -N CapPort
iptables -t nat -N CapPortHTTP
iptables -t nat -N CapPortHTTPS
iptables -t nat -N CapPortGW
iptables -t nat -N CapPortProxy
iptables -t nat -A CapPortProxy -p tcp --dport 80 -j Proxy 2>/dev/null
iptables -t nat -A CapPortProxy -j ACCEPT
MODE=`cat Mode 2>/dev/null`
INTERFACE=`cat Interface 2>/dev/null`
if [ "$WEBLOGIN" == Remote ] ; then
REMOTEIP=`cat RemoteIP 2>/dev/null`
CAPTUREHTTP="DNAT --to-destination $REMOTEIP:$REMOTEPT"
CAPTUREHTTPS="DNAT --to-destination $REMOTEIP:$REMOTESSL"
else
REMOTEIP=127.0.0.1
CAPTUREHTTP="REDIRECT --to-ports $REMOTEPT"
CAPTUREHTTPS="REDIRECT --to-ports $REMOTESSL"
fi
if [ "$MODE" == Bridged ] ; then
iptables -A CapPort -m physdev --physdev-in $INTERFACE -j CapPortACL
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport 443 -j CapPortHTTPS
## iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $GWPORT -j CapPortGW
## iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $GWPORTSSL -j CapPortGW
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $REMOTESSL -j CapPortGW
else

# **************************************************************************************
#
# aggiungere righe in questa zona
# in questo esempio Ŕ stato attivato il CP su ETH02 oltre ad interfaccia attivata da WEB
# verificare anche ultima riga dello script !!!!!!!
#
# **************************************************************************************
iptables -A CapPort -i $INTERFACE -j CapPortACL
iptables -A CapPort -i ETH02 -j CapPortACL

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH02 -p tcp --dport 80 -j CapPortHTTP

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH02 -p tcp --dport 443 -j CapPortHTTPS

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH02 -p tcp --dport $REMOTEPT -j CapPortGW

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH02 -p tcp --dport $REMOTESSL -j CapPortGW

fi
if [ "$WEBLOGIN" == Remote ] ; then
iptables -A CapPortACL -d $REMOTEIP -p tcp --dport $REMOTEPT -j ACCEPT
iptables -A CapPortACL -d $REMOTEIP -p tcp --dport $REMOTESSL -j ACCEPT
fi
iptables -A CapPortACL -j CapPortFS
iptables -A CapPortACL -j CapPortFC
iptables -A CapPortACL -j CapPortWL
iptables -A CapPortACL -j DROP
$SCRIPTS/cp_auto &
$SCRIPTS/cpFreeServicesIPT
$SCRIPTS/cpFreeClientsIPT
while [ -f /tmp/cp_auto_starting ] ; do
sleep 0.5
done
NCLIENTS=`$SCRIPTS/cpConnectedClientsIPT`
if ! [ -f /var/register/system/cp/NOLIMIT ] ; then
HASHLIMIT=" -mhashlimit --hashlimit-name CP_Redirect --hashlimit-mode srcip,dstport --hashlimit 10/minute --hashlimit-burst 15"
iptables -t nat -A CapPortHTTP -p tcp --syn $HASHLIMIT -j $CAPTUREHTTP
iptables -t nat -A CapPortHTTPS -p tcp --syn $HASHLIMIT -j $CAPTUREHTTPS
iptables -t nat -A CapPortHTTP -p tcp --syn -j DROP
iptables -t nat -A CapPortHTTPS -p tcp --syn -j DROP
fi
iptables -t nat -A CapPortHTTP -p tcp -j $CAPTUREHTTP
iptables -t nat -A CapPortHTTPS -p tcp -j $CAPTUREHTTPS
if [ "$WEBLOGIN" == Remote ] ; then
iptables -t nat -A CapPortGW -p tcp -dport $REMOTESSL -j DNAT --to-destination $REMOTEIP:$REMOTESSL
iptables -t nat -A CapPortGW -p tcp -dport $REMOTEPT -j DNAT --to-destination $REMOTEIP:$REMOTEPT
else
iptables -t nat -A CapPortGW -p tcp -j REDIRECT

fi
$SCRIPTS/cp_activatechain
logger -t "CaptivePortal" "GW: Success: Captive Portal Gateway started ($NCLIENTS clients connected)"
$SCRIPTS/runscript cpgw >/dev/null
else
logger -t "CaptivePortal" "GW: Captive Portal Gateway is disabled"
fi

# ******************************************************************
#
# Inserire qui le interfacce da abilitare
# le righe vanno inserire prima della clausola DROP (3 della catena)
#
# ******************************************************************

iptables -I SYS_INPUT 3 -i ETH02 -p tcp --dport 12080:12083 -j ACCEPT


############ fine script

Impostare i diritti sul file appena creato (chmod 777 cp_start)

Da interfaccia web inserire in setup ->startup/cron uno script di preboot con il seguente comando.

cp -f /Database/scripts/cp_start /root/kerbynet.cgi/scripts/cp_start

Nella pagina del CP Selezionare per la voce Client Identity Only IP Address e salvare le modifiche.

Riavvire il sistema.

Ora il CP Ŕ attivo sulle interfacce selezionate.


Un ringraziamento a Fulvio per l'ottimo lavoro che sta portando avanti

Ciao
Top
Profilo Invia messaggio privato
giancagianca



Registrato: 14/08/07 20:10
Messaggi: 320

MessaggioInviato: Lun Giu 22, 2009 5:46 pm    Oggetto: Rispondi citando

Per attivare e disattivare il CP da shell utilizzare la seguente procedure

creare 2 script in /Database/scripts

Disattivazione del CP (cp_stop)

#!/bin/bash
. /etc/kerbynet.conf
#arresto captive portal
echo no >$REGISTER/system/cp/Enabled
. /etc/init.d/cp start
exit 0

Attivazione del CP (cp_start)

#!/bin/bash
. /etc/kerbynet.conf
#arresto captive portal
echo yes >$REGISTER/system/cp/Enabled
. /etc/init.d/cp start
exit 0
Top
Profilo Invia messaggio privato
ilNebbioso



Registrato: 31/03/09 01:36
Messaggi: 76

MessaggioInviato: Gio Gen 21, 2010 2:45 pm    Oggetto: Rispondi citando

Ti spiego il mio caso, per capire se e' il "nostro" caso.

Ho una necessita' che a suo tempo dux74 aveva postato qui:
http://www.zeroshell.net/forum/viewtopic.php?t=377&highlight=
io ho applicato la seconda soluzione indicata da Fulvio presso un cliente (a livello rete sembra un internet point) che ha bisogno di tante "micro-reti" (composte da 1-5 client l'una) tra loro indipendenti e separate.

Ho bisogno di avere piu' VLAN (per far si che solo gli appartenenti alle stesse societa' si vedano) e contemporaneamente il Captive Portal. Il tutto per garantire sicurezza lato client (non devo avere gente che si passa documenti nelle condivise o stampa su stampanti di altri
"reparti") e per ottemperare alla legge antiterrorismo (logging del traffico web e impossibilita' ad accedere ad Internet senza autenticazione).

Ho messo in piedi la seconda soluzione proposta da Fulvio, ovvero ho i client dietro uno ZeroShell (denominato ZS-VLAN) che gestisce le VLAN in DHCP (mediante uno switch appositamente configurato, un 3com 2924SFP) ed in catena c'e' un altro ZeroShell (ZS-CP) che fa solo da Capitve Portal.

Schema di rete:
Client 192.168.VLAN.10-99 <--Switch 3com 2924SFP <--> (192.168.100.1 green) ZS-VLAN (192.168.6.250 red) <--> cavo cross <--(192.168.6.1 green) ZS-CP (ip pubblico) <--Router <--Internet

Il problema e' che lo ZS-CP, una volta che un utente e' loggato, vede tutti gli altri client provenienti dallo stesso IP (192.168.6.250) e mac address della scheda di rete red di ZS-VLAN e quindi autorizza tutti, in barba al certificato del browser: lo ZS-CP vede un utente loggato che fa da' "garante" per tutti quanti!

Non mi sono accorto di nulla sino a quando non ho messo in produzione il tutto, ovvero... stanotte.

Per la cronaca: su ZS-VLAN c'e' installato la beta12, sullo ZS-CP la beta11.

Volevo capire (sono un newbie in linux) se con la tua modifica per beta12 posso, con un solo pc e due schede di rete fare tutto cio' che mi serve.

Ovviamente:
- gli appartenenti alla stessa "micro-rete" (o VLAN) devono potersi passare file o stampare sul pc dell'altro tramite una normalissima condivisione in Windows
- senza aver fatto login nel CP l'utente non deve poter far nulla (www, ftp, chat, voip...)

Grazie per l'aiuto!
Top
Profilo Invia messaggio privato
giancagianca



Registrato: 14/08/07 20:10
Messaggi: 320

MessaggioInviato: Gio Gen 21, 2010 8:30 pm    Oggetto: Rispondi citando

Alo Zs che fa il CP vede una sola macchina lo ZS su cui ├Ę attivato il nat e quindi dopo che il primo utente si ├Ę autenticato tutti navigano a sbaffo.

Il CP lo devi quindi inserire prima della macchina che FA il NAT.

Se vuoi tenere sempre due macchine puoi spostare il cp a Monte del GW e modificare lo script in modo che il CP funzioni sulle vlan invece che su schede diverse cambiando la ETH02 in ad esempio ETH01.1000 per la vlan 1000 (ci sarà da fare anche qualche test in quanto io l'ho testato solo in routing mode mentre per la questa configurazione dovra lavorare in bridge).

Il motivo per cui sono necessarie 2 ZS e dovuto solo al qos. Se hai eseginza di gestire il qos lascia le macchine come sono e attiva il CP multilan sulla macchina esposta verso le lan interne.

Ciao.
Top
Profilo Invia messaggio privato
ilNebbioso



Registrato: 31/03/09 01:36
Messaggi: 76

MessaggioInviato: Gio Gen 21, 2010 10:08 pm    Oggetto: Rispondi citando

Giancarlo,
grazie mille per la risposta, ma mi hai confuso le idee! Sad

Dipaniamo i dubbi...!! Laughing

Dal mio punto di vista non c'e' alcun motivo per cui sia necessario avere due macchine ZS. Ne ho due solo perche' pensavo che avrei risolto i miei problemi. Se si riesce ad attivare il CP sulle VLAN preservando i paletti di cui sopra, siamo a cavallo!

L'ideale sarebbe quindi avere un'unica macchina che fa tutto con lo script adeguato. Ma qui devo chiedere il tuo aiuto... I test li posso fare io, ma al volo!! Sad

Puoi, per favore, aiutarmi con lo script?

Grazie,
ilNebbioso
Top
Profilo Invia messaggio privato
giancagianca



Registrato: 14/08/07 20:10
Messaggi: 320

MessaggioInviato: Gio Gen 21, 2010 10:20 pm    Oggetto: Rispondi citando

Quali sono le Vlan su cui devi attivare il CP ?.

Ciao.
Top
Profilo Invia messaggio privato
ilNebbioso



Registrato: 31/03/09 01:36
Messaggi: 76

MessaggioInviato: Gio Gen 21, 2010 10:28 pm    Oggetto: Rispondi citando

Sono meno di una ventina, tutte con il proprio DHCP (classe 192.168.nVLAN.10-99).

Ogni VLAN e' composta da sino 5 client al massimo (la maggior parte sono 1-2 client).

Le ho numerate 101-112,190,191,199 per mia comodita'.
Top
Profilo Invia messaggio privato
ilNebbioso



Registrato: 31/03/09 01:36
Messaggi: 76

MessaggioInviato: Gio Gen 21, 2010 11:36 pm    Oggetto: Rispondi citando

giancagianca ha scritto:
io l'ho testato solo in routing mode mentre per la questa configurazione dovra lavorare in bridge).


Una precisazione: attualmente la macchina ZS CP lato RED ha un indirizzo IP pubblico, tanto che entro io tramite VPN per gli aggiornamenti e il logging; pertanto e' in routing mode.

Il fatto che lato RED debba avere un indirizzo pubblico, dovrebbe rimanere nel mio caso.

Infine, il QoS allo stato attuale non e' in uso. Ma potrebbe essere interessante, qualora potesse rimanere, come funzionalita'.
Top
Profilo Invia messaggio privato
giancagianca



Registrato: 14/08/07 20:10
Messaggi: 320

MessaggioInviato: Ven Gen 22, 2010 12:41 am    Oggetto: Rispondi citando

CODE

#!/bin/sh
# ***************************************************************
#
# script modificato per gestione Captive Portal multi interfaccia
#
# funziona con Cp in routed mode (beta 12)
#
# ***************************************************************

. /etc/kerbynet.conf
CONFIG="$REGISTER/system/cp"
killall cp_auto 2>/dev/null >/dev/null
cd "$CONFIG"
iptables -D FORWARD -j CapPort 2>/dev/null
iptables -t nat -D PREROUTING -j CapPort 2>/dev/null
iptables -F CapPort 2>/dev/null
iptables -X CapPort 2>/dev/null
iptables -F CapPortACL 2>/dev/null
iptables -X CapPortACL 2>/dev/null
iptables -F CapPortFS 2>/dev/null
iptables -X CapPortFS 2>/dev/null
iptables -F CapPortFC 2>/dev/null
iptables -X CapPortFC 2>/dev/null
iptables -F CapPortWL 2>/dev/null
iptables -X CapPortWL 2>/dev/null
iptables -t nat -F CapPort 2>/dev/null
iptables -t nat -X CapPort 2>/dev/null
iptables -t nat -F CapPortHTTP 2>/dev/null
iptables -t nat -X CapPortHTTP 2>/dev/null
iptables -t nat -F CapPortHTTPS 2>/dev/null
iptables -t nat -X CapPortHTTPS 2>/dev/null
iptables -t nat -F CapPortGW 2>/dev/null
iptables -t nat -X CapPortGW 2>/dev/null
iptables -t nat -F CapPortProxy 2>/dev/null
iptables -t nat -X CapPortProxy 2>/dev/null

[ "`cat RemotePT 2>/dev/null`" != "`cat Auth/Port 2>/dev/null`" ] && cat Auth/Port > RemotePT
[ "`cat RemoteSSL 2>/dev/null`" != "`cat Auth/PortSSL 2>/dev/null`" ] && cat Auth/PortSSL > RemoteSSL
ENABLED=`cat Enabled 2>/dev/null`
if [ "$ENABLED" != yes -a "`cat $REGISTER/system/cp/Auth/Enabled 2>/dev/null`" != yes ] ; then
$SCRIPTS/terminate CapPortAS 15 2>/dev/null
fi

if [ "$ENABLED" == yes ] ; then
WEBLOGIN=`cat WebLogin 2>/dev/null`

if [ "$WEBLOGIN" == Remote ] ; then
REMOTEPT=`cat RemotePT 2>/dev/null`
else
#if ! ps -e |grep -w -q CapPortAS ; then
# echo "WARNING: local authentication is required but the Authentication Server is not started"
# exit 15
#fi
echo yes > $REGISTER/system/cp/Auth/Enabled
export REMOTEPT=`cat Auth/Port 2>/dev/null`
fi
[ -z "$REMOTEPT" ] && REMOTEPT=12080
export REMOTESSL=$((REMOTEPT+1))
export GWPORT=$((REMOTEPT+2))
echo $GWPORT > GWPort
export GWPORTSSL=$((REMOTEPT+3))
echo $GWPORTSSL > GWPortSSL
export QUERY_STRING="onlyrender"
if [ "`cat Auth/NoSSL 2>/dev/null`" == yes ] ; then
HTTPCONF=cp_gw-httpd.nossl
else
HTTPCONF=cp_gw-httpd.ssl
fi
render "$TEMPLATE/$HTTPCONF" > /var/register/system/cp/cp_gw-httpd
export PATH="/usr/local/ssl/bin:$PATH"
if ! $SCRIPTS/cp_auth_start ; then
logger -t "CaptivePortal" "GW: ERROR: Captive Portal Gateway failed to start: `cat /tmp/CapPortAS.err`"
exit 10
fi
#if CapPortGW -f CapPortGW.conf 2>/tmp/CapPortGW.err ; then
# :
#else
# logger -t "CaptivePortal" "GW: ERROR: Captive Portal Gateway failed to start: `cat /tmp/CapPortGW.err`"
# exit 10
#fi
iptables -N CapPort
iptables -N CapPortACL
iptables -N CapPortFS
iptables -N CapPortFC
iptables -N CapPortWL
iptables -t nat -N CapPort
iptables -t nat -N CapPortHTTP
iptables -t nat -N CapPortHTTPS
iptables -t nat -N CapPortGW
iptables -t nat -N CapPortProxy
iptables -t nat -A CapPortProxy -p tcp --dport 80 -j Proxy 2>/dev/null
iptables -t nat -A CapPortProxy -j ACCEPT
MODE=`cat Mode 2>/dev/null`
INTERFACE=`cat Interface 2>/dev/null`
if [ "$WEBLOGIN" == Remote ] ; then
REMOTEIP=`cat RemoteIP 2>/dev/null`
CAPTUREHTTP="DNAT --to-destination $REMOTEIP:$REMOTEPT"
CAPTUREHTTPS="DNAT --to-destination $REMOTEIP:$REMOTESSL"
else
REMOTEIP=127.0.0.1
CAPTUREHTTP="REDIRECT --to-ports $REMOTEPT"
CAPTUREHTTPS="REDIRECT --to-ports $REMOTESSL"
fi
if [ "$MODE" == Bridged ] ; then
iptables -A CapPort -m physdev --physdev-in $INTERFACE -j CapPortACL
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport 443 -j CapPortHTTPS
## iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $GWPORT -j CapPortGW
## iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $GWPORTSSL -j CapPortGW
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $REMOTESSL -j CapPortGW
else

# **************************************************************************************
#
# aggiungere righe in questa zona
# in questo esempio ´┐Ż stato attivato il CP su ETH02 oltre ad interfaccia attivata da WEB
# verificare anche ultima riga dello script !!!!!!!
#
# **************************************************************************************
iptables -A CapPort -i $INTERFACE -j CapPortACL

# -----------------------------------------------------------------------------

# iptables -A CapPort -i ETH01.101 -j CapPortACL Questa vlan va attivata da interfaccia web
iptables -A CapPort -i ETH01.102 -j CapPortACL
iptables -A CapPort -i ETH01.103 -j CapPortACL
iptables -A CapPort -i ETH01.104 -j CapPortACL
iptables -A CapPort -i ETH01.105 -j CapPortACL
iptables -A CapPort -i ETH01.106 -j CapPortACL
iptables -A CapPort -i ETH01.107 -j CapPortACL
iptables -A CapPort -i ETH01.108 -j CapPortACL
iptables -A CapPort -i ETH01.109 -j CapPortACL
iptables -A CapPort -i ETH01.110 -j CapPortACL
iptables -A CapPort -i ETH01.111 -j CapPortACL
iptables -A CapPort -i ETH01.112 -j CapPortACL
iptables -A CapPort -i ETH01.190 -j CapPortACL
iptables -A CapPort -i ETH01.191 -j CapPortACL
iptables -A CapPort -i ETH01.199 -j CapPortACL

# -----------------------------------------------------------------------------

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport 80 -j CapPortHTTP

# iptables -t nat -A CapPort -i ETH01.101 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.102 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.103 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.104 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.105 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.106 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.107 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.108 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.109 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.110 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.111 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.112 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.190 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.191 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH01.199 -p tcp --dport 80 -j CapPortHTTP

# -----------------------------------------------------------------------------

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport 443 -j CapPortHTTPS

# iptables -t nat -A CapPort -i ETH01.101 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.102 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.103 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.104 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.105 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.106 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.107 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.108 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.109 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.110 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.111 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.112 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.190 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.191 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH01.199 -p tcp --dport 443 -j CapPortHTTPS

# -----------------------------------------------------------------------------

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport $REMOTEPT -j CapPortGW

# iptables -t nat -A CapPort -i ETH01.101 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.102 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.103 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.104 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.105 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.106 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.107 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.108 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.109 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.110 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.111 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.112 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.190 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.191 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH01.199 -p tcp --dport $REMOTEPT -j CapPortGW

# -----------------------------------------------------------------------------

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport $REMOTESSL -j CapPortGW

# iptables -t nat -A CapPort -i ETH01.101 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.102 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.103 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.104 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.105 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.106 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.107 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.108 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.109 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.110 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.111 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.112 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.190 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.191 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH01.199 -p tcp --dport $REMOTESSL -j CapPortGW



fi
if [ "$WEBLOGIN" == Remote ] ; then
iptables -A CapPortACL -d $REMOTEIP -p tcp --dport $REMOTEPT -j ACCEPT
iptables -A CapPortACL -d $REMOTEIP -p tcp --dport $REMOTESSL -j ACCEPT
fi
iptables -A CapPortACL -j CapPortFS
iptables -A CapPortACL -j CapPortFC
iptables -A CapPortACL -j CapPortWL
iptables -A CapPortACL -j DROP
$SCRIPTS/cp_auto &
$SCRIPTS/cpFreeServicesIPT
$SCRIPTS/cpFreeClientsIPT
while [ -f /tmp/cp_auto_starting ] ; do
sleep 0.5
done
NCLIENTS=`$SCRIPTS/cpConnectedClientsIPT`
if ! [ -f /var/register/system/cp/NOLIMIT ] ; then
HASHLIMIT=" -mhashlimit --hashlimit-name CP_Redirect --hashlimit-mode srcip,dstport --hashlimit 10/minute --hashlimit-burst 15"
iptables -t nat -A CapPortHTTP -p tcp --syn $HASHLIMIT -j $CAPTUREHTTP
iptables -t nat -A CapPortHTTPS -p tcp --syn $HASHLIMIT -j $CAPTUREHTTPS
iptables -t nat -A CapPortHTTP -p tcp --syn -j DROP
iptables -t nat -A CapPortHTTPS -p tcp --syn -j DROP
fi
iptables -t nat -A CapPortHTTP -p tcp -j $CAPTUREHTTP
iptables -t nat -A CapPortHTTPS -p tcp -j $CAPTUREHTTPS
if [ "$WEBLOGIN" == Remote ] ; then
iptables -t nat -A CapPortGW -p tcp -dport $REMOTESSL -j DNAT --to-destination $REMOTEIP:$REMOTESSL
iptables -t nat -A CapPortGW -p tcp -dport $REMOTEPT -j DNAT --to-destination $REMOTEIP:$REMOTEPT
else
iptables -t nat -A CapPortGW -p tcp -j REDIRECT

fi
$SCRIPTS/cp_activatechain
logger -t "CaptivePortal" "GW: Success: Captive Portal Gateway started ($NCLIENTS clients connected)"
$SCRIPTS/runscript cpgw >/dev/null
else
logger -t "CaptivePortal" "GW: Captive Portal Gateway is disabled"
fi

# ******************************************************************
#
# Inserire qui le interfacce da abilitare
# le righe vanno inserire prima della clausola DROP (3 della catena)
#
# ******************************************************************

iptables -I SYS_INPUT 3 -i ETH01.199 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.191 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.190 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.112 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.111 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.110 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.109 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.108 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.107 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.106 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.105 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.104 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.103 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH01.102 -p tcp --dport 12080:12083 -j ACCEPT
# iptables -I SYS_INPUT 3 -i ETH01.101 -p tcp --dport 12080:12083 -j ACCEPT


/CODE


Non l'ho provato in quanto sono a casa ma se non ho fatto errori di digitazione dovrebbe essere ok.

Il captive portal va attivato sullo ZS su cui hai attestato le Vlan.

Quello su cui hai l'accesso vpn lo puoi utilizzare per gestire il qos.

usa vim per editare il file da console (con ssh o putty) e incolli il codice copiato qui sopra. Ricordati di rendere eseguibile il file con chmod.

La Vlan ETH01.101 la abiliti da interfaccia web.

Ciao.
Top
Profilo Invia messaggio privato
ilNebbioso



Registrato: 31/03/09 01:36
Messaggi: 76

MessaggioInviato: Sab Gen 23, 2010 3:00 am    Oggetto: Rispondi citando

GiancaGianca,
grazie ancora per la tua risposta.

Rispetto al tuo script ho modificato "ETH01.1xx" in "ETH00.1xx" poiche' le VLAN sono sulla ETH00 (green, LAN) e non sulla ETH01 (red, WAN). Concordi?

Ho tolto anche i commenti sulla ETH00.101 in modo tale che venga attivato il CP anche sulla ETH00 (liscia). Concordi anche qui?

Lo script non mi ha dato (apparentemente) errori, n├Ę nella GUI, n├Ę al boot.

Per├▓, a differenza dello switch 3Com 2924SFP che ho presso il cliente, il 3Com 3CDSG8 che ho qui in laboratorio (che supporta le VLAN pure lui) mi sta dando qualche problema a parlare con le VLAN (lo switch non prende in toto l'IP, quando configurato)...
Top
Profilo Invia messaggio privato
giancagianca



Registrato: 14/08/07 20:10
Messaggi: 320

MessaggioInviato: Dom Gen 24, 2010 1:56 am    Oggetto: Rispondi citando

Per le modifiche non ci sono problemi. Non conosco gli switch della 3com. Come switch managed uso i cisco.

Ciao.
Top
Profilo Invia messaggio privato
ilNebbioso



Registrato: 31/03/09 01:36
Messaggi: 76

MessaggioInviato: Lun Gen 25, 2010 12:20 am    Oggetto: Rispondi citando

gianca,
per lo switch, come immaginavo, sbagliavo io in laboratorio.

Per quello che riguarda invece il tuo script, posso semplicemente confermarti che qui, in laboratorio funziona davvero alla grande, come atteso e come tanto desiderato (separazione delle VLAN, Captive Portal per ogni macchina senza "utenti a sbafo"). Il tutto con una sola macchina ZS e con il logging anti-terrorismo, sono in una botte di ferro.

Ora manca solo l'installazione in sede, ma non vedo possibili sorprese.

Una cosa:
- nel tuo post iniziale hai scritto "Nella pagina del CP Selezionare per la voce Client Identity Only IP Address" e credo ci sia una motivazione tecnica per cui con le VLAN non si porta dietro le info del MAC address. Chi si perde l'informazione?

Infine, riporto il tuo script, modificato in modo che il CP sia attivo su ETH00, oltre che su tutte le VLAN sotto ETH00, ovvero sulla Green. Nella schermata Captive Portal l'ho attivato quindi sulla ETH00 e non sulla ETH00.101.

Un grazie enorme a GiancaGianca e ovviamente a Fulvio che mi ha indirizzato verso questo post in un tempo brevissimo nonostante i suoi impegni di lavoro!

Ecco lo script che ho usato:

Codice:

#!/bin/sh
# ***************************************************************
#
# script modificato per gestione Captive Portal multi interfaccia
#
# funziona con Cp in routed mode (beta 12)
#
# ***************************************************************

. /etc/kerbynet.conf
CONFIG="$REGISTER/system/cp"
killall cp_auto 2>/dev/null >/dev/null
cd "$CONFIG"
iptables -D FORWARD -j CapPort 2>/dev/null
iptables -t nat -D PREROUTING -j CapPort 2>/dev/null
iptables -F CapPort 2>/dev/null
iptables -X CapPort 2>/dev/null
iptables -F CapPortACL 2>/dev/null
iptables -X CapPortACL 2>/dev/null
iptables -F CapPortFS 2>/dev/null
iptables -X CapPortFS 2>/dev/null
iptables -F CapPortFC 2>/dev/null
iptables -X CapPortFC 2>/dev/null
iptables -F CapPortWL 2>/dev/null
iptables -X CapPortWL 2>/dev/null
iptables -t nat -F CapPort 2>/dev/null
iptables -t nat -X CapPort 2>/dev/null
iptables -t nat -F CapPortHTTP 2>/dev/null
iptables -t nat -X CapPortHTTP 2>/dev/null
iptables -t nat -F CapPortHTTPS 2>/dev/null
iptables -t nat -X CapPortHTTPS 2>/dev/null
iptables -t nat -F CapPortGW 2>/dev/null
iptables -t nat -X CapPortGW 2>/dev/null
iptables -t nat -F CapPortProxy 2>/dev/null
iptables -t nat -X CapPortProxy 2>/dev/null

[ "`cat RemotePT 2>/dev/null`" != "`cat Auth/Port 2>/dev/null`" ] && cat Auth/Port > RemotePT
[ "`cat RemoteSSL 2>/dev/null`" != "`cat Auth/PortSSL 2>/dev/null`" ] && cat Auth/PortSSL > RemoteSSL
ENABLED=`cat Enabled 2>/dev/null`
if [ "$ENABLED" != yes -a "`cat $REGISTER/system/cp/Auth/Enabled 2>/dev/null`" != yes ] ; then
$SCRIPTS/terminate CapPortAS 15 2>/dev/null
fi

if [ "$ENABLED" == yes ] ; then
WEBLOGIN=`cat WebLogin 2>/dev/null`

if [ "$WEBLOGIN" == Remote ] ; then
REMOTEPT=`cat RemotePT 2>/dev/null`
else
#if ! ps -e |grep -w -q CapPortAS ; then
# echo "WARNING: local authentication is required but the Authentication Server is not started"
# exit 15
#fi
echo yes > $REGISTER/system/cp/Auth/Enabled
export REMOTEPT=`cat Auth/Port 2>/dev/null`
fi
[ -z "$REMOTEPT" ] && REMOTEPT=12080
export REMOTESSL=$((REMOTEPT+1))
export GWPORT=$((REMOTEPT+2))
echo $GWPORT > GWPort
export GWPORTSSL=$((REMOTEPT+3))
echo $GWPORTSSL > GWPortSSL
export QUERY_STRING="onlyrender"
if [ "`cat Auth/NoSSL 2>/dev/null`" == yes ] ; then
HTTPCONF=cp_gw-httpd.nossl
else
HTTPCONF=cp_gw-httpd.ssl
fi
render "$TEMPLATE/$HTTPCONF" > /var/register/system/cp/cp_gw-httpd
export PATH="/usr/local/ssl/bin:$PATH"
if ! $SCRIPTS/cp_auth_start ; then
logger -t "CaptivePortal" "GW: ERROR: Captive Portal Gateway failed to start: `cat /tmp/CapPortAS.err`"
exit 10
fi
#if CapPortGW -f CapPortGW.conf 2>/tmp/CapPortGW.err ; then
# :
#else
# logger -t "CaptivePortal" "GW: ERROR: Captive Portal Gateway failed to start: `cat /tmp/CapPortGW.err`"
# exit 10
#fi
iptables -N CapPort
iptables -N CapPortACL
iptables -N CapPortFS
iptables -N CapPortFC
iptables -N CapPortWL
iptables -t nat -N CapPort
iptables -t nat -N CapPortHTTP
iptables -t nat -N CapPortHTTPS
iptables -t nat -N CapPortGW
iptables -t nat -N CapPortProxy
iptables -t nat -A CapPortProxy -p tcp --dport 80 -j Proxy 2>/dev/null
iptables -t nat -A CapPortProxy -j ACCEPT
MODE=`cat Mode 2>/dev/null`
INTERFACE=`cat Interface 2>/dev/null`
if [ "$WEBLOGIN" == Remote ] ; then
REMOTEIP=`cat RemoteIP 2>/dev/null`
CAPTUREHTTP="DNAT --to-destination $REMOTEIP:$REMOTEPT"
CAPTUREHTTPS="DNAT --to-destination $REMOTEIP:$REMOTESSL"
else
REMOTEIP=127.0.0.1
CAPTUREHTTP="REDIRECT --to-ports $REMOTEPT"
CAPTUREHTTPS="REDIRECT --to-ports $REMOTESSL"
fi
if [ "$MODE" == Bridged ] ; then
iptables -A CapPort -m physdev --physdev-in $INTERFACE -j CapPortACL
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport 443 -j CapPortHTTPS
## iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $GWPORT -j CapPortGW
## iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $GWPORTSSL -j CapPortGW
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -m physdev --physdev-in $INTERFACE -p tcp --dport $REMOTESSL -j CapPortGW
else

# **************************************************************************************
#
# aggiungere righe in questa zona
# in questo esempio ? stato attivato il CP su ETH02 oltre ad interfaccia attivata da WEB
# verificare anche ultima riga dello script !!!!!!!
#
# **************************************************************************************
iptables -A CapPort -i $INTERFACE -j CapPortACL

# -----------------------------------------------------------------------------

iptables -A CapPort -i ETH00.101 -j CapPortACL
iptables -A CapPort -i ETH00.102 -j CapPortACL
iptables -A CapPort -i ETH00.103 -j CapPortACL
iptables -A CapPort -i ETH00.104 -j CapPortACL
iptables -A CapPort -i ETH00.105 -j CapPortACL
iptables -A CapPort -i ETH00.106 -j CapPortACL
iptables -A CapPort -i ETH00.107 -j CapPortACL
iptables -A CapPort -i ETH00.108 -j CapPortACL
iptables -A CapPort -i ETH00.109 -j CapPortACL
iptables -A CapPort -i ETH00.110 -j CapPortACL
iptables -A CapPort -i ETH00.111 -j CapPortACL
iptables -A CapPort -i ETH00.112 -j CapPortACL
iptables -A CapPort -i ETH00.190 -j CapPortACL
iptables -A CapPort -i ETH00.191 -j CapPortACL
iptables -A CapPort -i ETH00.199 -j CapPortACL

# -----------------------------------------------------------------------------

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport 80 -j CapPortHTTP

iptables -t nat -A CapPort -i ETH00.101 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.102 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.103 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.104 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.105 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.106 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.107 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.108 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.109 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.110 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.111 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.112 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.190 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.191 -p tcp --dport 80 -j CapPortHTTP
iptables -t nat -A CapPort -i ETH00.199 -p tcp --dport 80 -j CapPortHTTP

# -----------------------------------------------------------------------------

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport 443 -j CapPortHTTPS

iptables -t nat -A CapPort -i ETH00.101 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.102 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.103 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.104 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.105 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.106 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.107 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.108 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.109 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.110 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.111 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.112 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.190 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.191 -p tcp --dport 443 -j CapPortHTTPS
iptables -t nat -A CapPort -i ETH00.199 -p tcp --dport 443 -j CapPortHTTPS

# -----------------------------------------------------------------------------

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport $REMOTEPT -j CapPortGW

iptables -t nat -A CapPort -i ETH00.101 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.102 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.103 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.104 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.105 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.106 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.107 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.108 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.109 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.110 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.111 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.112 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.190 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.191 -p tcp --dport $REMOTEPT -j CapPortGW
iptables -t nat -A CapPort -i ETH00.199 -p tcp --dport $REMOTEPT -j CapPortGW

# -----------------------------------------------------------------------------

iptables -t nat -A CapPort -i $INTERFACE -p tcp --dport $REMOTESSL -j CapPortGW

iptables -t nat -A CapPort -i ETH00.101 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.102 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.103 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.104 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.105 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.106 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.107 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.108 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.109 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.110 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.111 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.112 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.190 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.191 -p tcp --dport $REMOTESSL -j CapPortGW
iptables -t nat -A CapPort -i ETH00.199 -p tcp --dport $REMOTESSL -j CapPortGW



fi
if [ "$WEBLOGIN" == Remote ] ; then
iptables -A CapPortACL -d $REMOTEIP -p tcp --dport $REMOTEPT -j ACCEPT
iptables -A CapPortACL -d $REMOTEIP -p tcp --dport $REMOTESSL -j ACCEPT
fi
iptables -A CapPortACL -j CapPortFS
iptables -A CapPortACL -j CapPortFC
iptables -A CapPortACL -j CapPortWL
iptables -A CapPortACL -j DROP
$SCRIPTS/cp_auto &
$SCRIPTS/cpFreeServicesIPT
$SCRIPTS/cpFreeClientsIPT
while [ -f /tmp/cp_auto_starting ] ; do
sleep 0.5
done
NCLIENTS=`$SCRIPTS/cpConnectedClientsIPT`
if ! [ -f /var/register/system/cp/NOLIMIT ] ; then
HASHLIMIT=" -mhashlimit --hashlimit-name CP_Redirect --hashlimit-mode srcip,dstport --hashlimit 10/minute --hashlimit-burst 15"
iptables -t nat -A CapPortHTTP -p tcp --syn $HASHLIMIT -j $CAPTUREHTTP
iptables -t nat -A CapPortHTTPS -p tcp --syn $HASHLIMIT -j $CAPTUREHTTPS
iptables -t nat -A CapPortHTTP -p tcp --syn -j DROP
iptables -t nat -A CapPortHTTPS -p tcp --syn -j DROP
fi
iptables -t nat -A CapPortHTTP -p tcp -j $CAPTUREHTTP
iptables -t nat -A CapPortHTTPS -p tcp -j $CAPTUREHTTPS
if [ "$WEBLOGIN" == Remote ] ; then
iptables -t nat -A CapPortGW -p tcp -dport $REMOTESSL -j DNAT --to-destination $REMOTEIP:$REMOTESSL
iptables -t nat -A CapPortGW -p tcp -dport $REMOTEPT -j DNAT --to-destination $REMOTEIP:$REMOTEPT
else
iptables -t nat -A CapPortGW -p tcp -j REDIRECT

fi
$SCRIPTS/cp_activatechain
logger -t "CaptivePortal" "GW: Success: Captive Portal Gateway started ($NCLIENTS clients connected)"
$SCRIPTS/runscript cpgw >/dev/null
else
logger -t "CaptivePortal" "GW: Captive Portal Gateway is disabled"
fi

# ******************************************************************
#
# Inserire qui le interfacce da abilitare
# le righe vanno inserire prima della clausola DROP (3 della catena)
#
# ******************************************************************

iptables -I SYS_INPUT 3 -i ETH00.199 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.191 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.190 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.112 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.111 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.110 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.109 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.108 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.107 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.106 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.105 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.104 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.103 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.102 -p tcp --dport 12080:12083 -j ACCEPT
iptables -I SYS_INPUT 3 -i ETH00.101 -p tcp --dport 12080:12083 -j ACCEPT
Top
Profilo Invia messaggio privato
giancagianca



Registrato: 14/08/07 20:10
Messaggi: 320

MessaggioInviato: Mar Gen 26, 2010 4:17 am    Oggetto: Rispondi citando

Avevo messo solo ip in quanto con avevo avuto dei problemi se non selezionavo cosi. Ora non ricordo ├Ę passato un po di tempo.

Ciao.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> ZeroShell Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it