[firewall6, ipt] Routage du wifi via komaz, ajout d'une zone serveur distincte des machines filaires, clamp-mss-to-pmtu

This commit is contained in:
Valentin Samir 2013-02-09 17:41:50 +01:00
parent 4ed07296ce
commit 74468eb34d
3 changed files with 52 additions and 28 deletions

View file

@ -56,7 +56,7 @@ Filter_policy_template = """
"""
dprefix = { 'fil' : 'fil', 'fil-v6' : 'fil', 'adm' : 'adm', 'wifi' : 'wifi',
'wifi-v6' : 'wifi','personnel-ens':'personnel-ens' }
'wifi-v6' : 'wifi','personnel-ens':'personnel-ens', 'serveurs':'serveurs' }
default_chains = [ 'PREROUTING', 'INPUT', 'FORWARD', 'OUTPUT', 'POSTROUTING' ]
@ -87,6 +87,7 @@ class Table(object):
self.postrouting = Chain()
self.mac = Chain()
self.macfil = Chain()
self.macserveurs = Chain()
self.macfilv6 = Chain()
self.macadm = Chain()
self.macwifi = Chain()
@ -116,6 +117,8 @@ class Ip6tables(object):
def macip(self, mac, type_m):
'''Fait la correspondance MAC-IP'''
tab = {'serveurs' : 'fil' }
if type_m in tab.keys(): type_m = tab[type_m]
type_mm = re.sub('-', '', type_m)
getattr(self.filter,'mac' + type_mm)(" ".join(['-m mac --mac-source', mac,
'-j RETURN']))
@ -126,7 +129,8 @@ class Ip6tables(object):
'''Ouverture des ports de l'extérieur vers la zone crans'''
tab = { 'fil' : 'extfil', 'fil-v6' : 'extfilv6',
'wifi' : 'extwifi',
'wifi-v6' : 'extwifiv6' }
'wifi-v6' : 'extwifiv6',
'serveurs':'extfil' }
ip = ipv6_addr(mac, type_machine)
for proto in ['tcp', 'udp']:
for port in ports[proto]:
@ -141,7 +145,8 @@ ACCEPT' % (dev, proto, ip, port))
'''Ouverture des ports de la zone crans vers l'extérieur'''
tab = { 'fil' : 'cransfil', 'fil-v6' :
'cransfilv6', 'wifi' : 'cranswifi',
'wifi-v6' : 'cranswifiv6' }
'wifi-v6' : 'cranswifiv6',
'serveurs':'cransfil' }
ip = ipv6_addr(mac, type_machine)
for proto in ['tcp', 'udp']:
for port in ports[proto]:
@ -255,11 +260,11 @@ REJECT --reject-with icmp6-port-unreachable')
l'interface devrait être la même que pour la fonction finale'''
check_ip_proto(ip_proto)
ipt_p = open_pickle(ip_proto)
for type_m in ['fil', 'fil-v6', 'adm']:
for type_m in ['fil', 'fil-v6', 'adm', 'serveurs']:
type_mm = re.sub('-', '', type_m)
getattr(ipt_p.filter,'mac%s' % type_mm).items[:] = []
machines = db.all_machines(graphic = True)
macips(ipt_p, machines, ['fil', 'fil-v6', 'adm'])
macips(ipt_p, machines, ['fil', 'fil-v6', 'adm', 'serveurs'])
write_rules(ipt_p)
apply_rules(ip_proto)
@ -728,6 +733,7 @@ def mac_ip(ipt, machines, types_machines):
'''Réalise une correspondance MAC-IP pour un réseau considéré
On vérifie d'abord que la MAC est connue et ensuite on n'accepte que les
adresses en eui64'''
macips(ipt, machines, types_machines)
# TODO Il faut raffiner avant de rajouter le wifi
for type_m in types_machines:
@ -745,15 +751,19 @@ def mac_ip(ipt, machines, types_machines):
def macips(ipt, machines, types_machines):
''' Construit la chaîne MAC '''
tab = {'serveurs' : 'fil' }
for machine in machines:
for type_m in types_machines:
if int(machine.rid()) in range(rid[type_m][0], rid[type_m][1]):
ipt.macip(machine.mac(), type_m)
break
for type_m in types_machines:
type_mm = re.sub('-', '', type_m)
getattr(ipt.filter,'mac' + type_mm)('-j REJECT')
#eval('ipt.filter.mac' + type_mm)('-j REJECT')
if not type_m in tab.keys():
type_mm = re.sub('-', '', type_m)
getattr(ipt.filter,'mac' + type_mm)('-j REJECT')
#eval('ipt.filter.mac' + type_mm)('-j REJECT')
return 0
def ingress_filtering(ipt):