On modularise davantage l'arbre des filtres
darcs-hash:20060425123833-72cb0-30279ef26027dd2053885fa5758c76eaca751ab3.gz
This commit is contained in:
parent
53380bb1d5
commit
1134e3485d
1 changed files with 15 additions and 16 deletions
|
@ -32,7 +32,7 @@ from ldap_crans import crans_ldap, ann_scol, hostname
|
||||||
from ldap_crans import AssociationCrans, Machine, MachineWifi
|
from ldap_crans import AssociationCrans, Machine, MachineWifi
|
||||||
from affich_tools import *
|
from affich_tools import *
|
||||||
from commands import getstatusoutput
|
from commands import getstatusoutput
|
||||||
from iptools import AddrInNet
|
from iptools import AddrInNet, subnets, IpSubnet
|
||||||
from config import mac_komaz, mac_wifi, conf_fw, p2p
|
from config import mac_komaz, mac_wifi, conf_fw, p2p
|
||||||
syslog.openlog('firewall')
|
syslog.openlog('firewall')
|
||||||
|
|
||||||
|
@ -404,7 +404,7 @@ class firewall_komaz(firewall_crans) :
|
||||||
2) marquage des paquets bittorrent
|
2) marquage des paquets bittorrent
|
||||||
|
|
||||||
POSTROUTING (policy par défaut : ACCEPT)
|
POSTROUTING (policy par défaut : ACCEPT)
|
||||||
1) passage dans le sous-réseau 24 de l'ip crans : SUBNET
|
1) passage dans un sous-réseau de l'ip crans : SUBNET
|
||||||
|
|
||||||
SUBNET classe pour chaque ip de son réseau dans la classe htb correspondante
|
SUBNET classe pour chaque ip de son réseau dans la classe htb correspondante
|
||||||
table nat :
|
table nat :
|
||||||
|
@ -492,15 +492,14 @@ class firewall_komaz(firewall_crans) :
|
||||||
iptables("-t mangle -A PREROUTING -m mark --mark %s -j ACCEPT" % conf_fw.mark['proxy'])
|
iptables("-t mangle -A PREROUTING -m mark --mark %s -j ACCEPT" % conf_fw.mark['proxy'])
|
||||||
|
|
||||||
# On crée les chaines de sous-réseaux
|
# On crée les chaines de sous-réseaux
|
||||||
#TODO : utiliser une variable de config pour la liste des /24
|
for subnet in subnets('138.231.136.0/21', conf_fw.mask) + subnets('138.231.148.0/22', conf_fw.mask) :
|
||||||
for subnet in range(136,145)+range(148,152) :
|
|
||||||
try :
|
try :
|
||||||
iptables("-t mangle -N SUBNET-%s_24" % subnet)
|
iptables("-t mangle -N SUBNET-%s" % subnet)
|
||||||
except IptablesError :
|
except IptablesError :
|
||||||
iptables("-t mangle -F SUBNET-%s_24" % subnet)
|
iptables("-t mangle -F SUBNET-%s" % subnet)
|
||||||
# On redirige les paquets dans la chaine appropriée
|
# On redirige les paquets dans la chaine appropriée
|
||||||
iptables("-t mangle -A POSTROUTING -o ens -s 138.231.%s.0/24 -j SUBNET-%s_24" % (subnet, subnet))
|
iptables("-t mangle -A POSTROUTING -o ens -s %s -j SUBNET-%s" % (subnet, subnet))
|
||||||
iptables("-t mangle -A POSTROUTING -o crans -d 138.231.%s.0/24 -j SUBNET-%s_24" % (subnet, subnet))
|
iptables("-t mangle -A POSTROUTING -o crans -d %s -j SUBNET-%s" % (subnet, subnet))
|
||||||
print OK
|
print OK
|
||||||
|
|
||||||
# On marque les paquets bittorrent uniquement
|
# On marque les paquets bittorrent uniquement
|
||||||
|
@ -543,10 +542,10 @@ class firewall_komaz(firewall_crans) :
|
||||||
# Classification des adhérents dans leur classe respective
|
# Classification des adhérents dans leur classe respective
|
||||||
for machine in adherent.machines() :
|
for machine in adherent.machines() :
|
||||||
ip = machine.ip()
|
ip = machine.ip()
|
||||||
subnet = machine.ip().split('.')[2]
|
subnet = IpSubnet(machine.ip(), conf_fw.mask)
|
||||||
iptables("-t mangle -A SUBNET-%s_24 -o crans -d %s -m mark " % (subnet, ip) +
|
iptables("-t mangle -A SUBNET-%s -o crans -d %s -m mark " % (subnet, ip) +
|
||||||
"--mark %s -j CLASSIFY --set-class 1:%s" % (conf_fw.mark['bittorrent'], class_id))
|
"--mark %s -j CLASSIFY --set-class 1:%s" % (conf_fw.mark['bittorrent'], class_id))
|
||||||
iptables("-t mangle -A SUBNET-%s_24 -o ens -s %s -m mark " % (subnet, ip) +
|
iptables("-t mangle -A SUBNET-%s -o ens -s %s -m mark " % (subnet, ip) +
|
||||||
"--mark %s -j CLASSIFY --set-class 1:%s" % (conf_fw.mark['bittorrent'], class_id))
|
"--mark %s -j CLASSIFY --set-class 1:%s" % (conf_fw.mark['bittorrent'], class_id))
|
||||||
# Par défaut on envoit les paquets dans la classe 9998
|
# Par défaut on envoit les paquets dans la classe 9998
|
||||||
iptables("-t mangle -A POSTROUTING -o crans -m mark " +
|
iptables("-t mangle -A POSTROUTING -o crans -m mark " +
|
||||||
|
@ -626,8 +625,8 @@ class firewall_komaz(firewall_crans) :
|
||||||
if not recherche :
|
if not recherche :
|
||||||
# Il faut supprimer cette entrée
|
# Il faut supprimer cette entrée
|
||||||
option = '-D'
|
option = '-D'
|
||||||
subnet = ip.split('.')[2]
|
subnet = IpSubnet(ip.split, conf_fw.mask)
|
||||||
regles = iptables("-t mangle -L SUBNET-%s_24 -n | grep %s" % (subnet, ip)).split('\n')
|
regles = iptables("-t mangle -L SUBNET-%s -n | grep %s" % (subnet, ip)).split('\n')
|
||||||
# On sélectionne la première qui doit contenir ce que l'on veut
|
# On sélectionne la première qui doit contenir ce que l'on veut
|
||||||
regle = regles[0].split()
|
regle = regles[0].split()
|
||||||
mark = regle[7]
|
mark = regle[7]
|
||||||
|
@ -638,13 +637,13 @@ class firewall_komaz(firewall_crans) :
|
||||||
machine = recherche[0]
|
machine = recherche[0]
|
||||||
adherent = machine.proprietaire()
|
adherent = machine.proprietaire()
|
||||||
ip = machine.ip()
|
ip = machine.ip()
|
||||||
subnet = ip.split('.')[2]
|
subnet = IpSubnet(ip, conf_fw.mask)
|
||||||
class_id = int(adherent.id())+1 # On ne peut pas reprendre le numéro 1
|
class_id = int(adherent.id())+1 # On ne peut pas reprendre le numéro 1
|
||||||
else :
|
else :
|
||||||
warn += "Plusieurs machines avec l'IP %s\n" % ip
|
warn += "Plusieurs machines avec l'IP %s\n" % ip
|
||||||
iptables("-t mangle %s SUBNET-%s_24 -o ens -s %s -m mark " % (option, subnet, ip) +
|
iptables("-t mangle %s SUBNET-%s -o ens -s %s -m mark " % (option, subnet, ip) +
|
||||||
"--mark %s -j CLASSIFY --set-class 1:%s" % (conf_fw.mark['bittorrent'], class_id))
|
"--mark %s -j CLASSIFY --set-class 1:%s" % (conf_fw.mark['bittorrent'], class_id))
|
||||||
iptables("-t mangle %s SUBNET-%s_24 -o crans -d %s -m mark " % (option, subnet, ip) +
|
iptables("-t mangle %s SUBNET-%s -o crans -d %s -m mark " % (option, subnet, ip) +
|
||||||
"--mark %s -j CLASSIFY --set-class 1:%s" % (conf_fw.mark['bittorrent'], class_id))
|
"--mark %s -j CLASSIFY --set-class 1:%s" % (conf_fw.mark['bittorrent'], class_id))
|
||||||
except IptablesError, c:
|
except IptablesError, c:
|
||||||
warn += str(c) + '\n'
|
warn += str(c) + '\n'
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue