2021-03-10 03:16:51 +01:00
|
|
|
|
{{ ansible_managed | comment }}
|
|
|
|
|
|
|
|
|
|
table inet signup {
|
|
|
|
|
|
|
|
|
|
set triggered {
|
|
|
|
|
type ether_addr
|
|
|
|
|
timeout 24h
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set allowed {
|
|
|
|
|
type ether_addr
|
|
|
|
|
timeout 30m
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
chain trigger {
|
|
|
|
|
log prefix "signup-trigger" group 0
|
|
|
|
|
add @triggered { ether saddr }
|
|
|
|
|
add @allowed { ether saddr }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
chain filter {
|
|
|
|
|
# Si l'adresse MAC est temporairement autorisée, on ne bloque pas
|
|
|
|
|
ether saddr @allowed return
|
|
|
|
|
|
|
|
|
|
# Si l'adresse n'est pas autorisée (cf. règle précédente) mais qu'elle
|
|
|
|
|
# a accédé récemment à un déclencheur, cela signifie qu'elle a déjà
|
|
|
|
|
# « consommé son crédit », donc on bloque
|
|
|
|
|
ether saddr @triggered drop
|
|
|
|
|
|
|
|
|
|
# Si la machine tente de se connecter à un des hôtes déclencheurs,
|
|
|
|
|
# on enregistre son adresse MAC et on laisse passer la connexion
|
2021-03-10 06:57:59 +01:00
|
|
|
|
ip daddr $signup_triggers_v4 goto trigger
|
|
|
|
|
ip6 daddr $signup_triggers_v6 goto trigger
|
2021-03-10 03:16:51 +01:00
|
|
|
|
|
|
|
|
|
# La machine a tenté de se connecter vers une destination qui ne
|
|
|
|
|
# déclenche pas l'accès à Internet, donc on bloque
|
|
|
|
|
drop
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
chain forward {
|
|
|
|
|
type filter hook forward priority -10
|
|
|
|
|
policy accept
|
|
|
|
|
|
|
|
|
|
ip saddr $signup_v4 goto filter
|
|
|
|
|
ip6 saddr $signup_v6 goto filter
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|