On suppose que l’on a des groupes formant des ensembles disjoints :
Les règles REDIRECT doivent etre faites suivant ces groupes.
On filtre par rapport aux critères IP notés $IPCRITER
iptables -A PREROUTING -t mangle $IPCRITER -j NFQUEUE
règle sur la marque comme critère de filtrage:
iptables -A PREROUTING -t nat $IPCRITER -m mark --mark $(IDGROUP<<24bits)/(0xfffffff<<24bits) -j DNAT --to IPDEST --port DEST
et on met une règle par redirection
Pour tous le monde sauf les profs:
iptables -A PREROUTING -t nat $IPCRITER -m mark ! --mark $(IDPROF<<24bits)/(0xfffffff<<24bits) -j DNAT --to IPDEST --port DEST
la règle implicite d’acceptation est ensuite ajoutée.
Par ipauth_guest. Sinon cela revient à dupliquer en mangle le jeu de règles de FORWARD.
Cas 1 (élève par proxy)
IP crit + élève -> ACCEPT
IP crit + Tous -> ACCEPT => règle par défaut
Cas 2 , 3
IP crit + Tous -> ACCEPT => règle par défaut
Cas 4
IP crit + ADMIN -> ACCEPT
IP crit + TOUS -> DROP => règle par défaut (mais critère réduit interface de sortie non présente)
Ce problème est global sur les règles de DNAT et s’exprime déjà dans ERA:
On crée une ACL redirection de pedago vers internet sur le port 3128 :
### blabla
/sbin/iptables -t filter -A ped-bas -i eth2 -p tcp --dport 3128 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 --tcp-flags SYN,RST,ACK SYN -i eth2 -s 0/0 -d 0/0 -j REDIRECT --to-ports 3128
/sbin/iptables -t filter -A ped-ext -i eth2 -o eth0 -s j/j -d 0/0 -j ACCEPT
On suppose que on a Le mapping:
éleves: 513
professeurs: 514
Le fichier mark_group.conf généré est
513:1
514:2
iptables -A PREROUTING -t mangle IPCRIT -i IFIN -j NFQUEUE
iptables -A PREROUTING -t nat IPCRIT -i IFIN -m mark --mark 0x1 -j
REDIRECT --to 3128
iptables -A INPUT -i IFIN -p tcp --dport 3128 -j ACCEPT
iptables -A FORWARD IPCRIT -i IFIN -o IFOUT -j ACCEPT
[tproxy]
IPCRIT
indev = IFIN
group = 513
decision = 1