ansible/roles/nftables_router/templates/nftables.d/40-signup.conf.j2

49 lines
1.3 KiB
Text
Raw Normal View History

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
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
}
}