49 lines
1.3 KiB
Text
49 lines
1.3 KiB
Text
|
{{ 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
|
|||
|
ip daddr $signup_trigger_v4 goto trigger
|
|||
|
ip6 daddr $signup_trigger_v6 goto trigger
|
|||
|
|
|||
|
# 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
|
|||
|
}
|
|||
|
|
|||
|
}
|