geo-block.nft.j2 601 B

1234567891011121314151617181920212223242526
  1. #!/usr/sbin/nft -f
  2. # Managed by Ansible — do not edit manually
  3. # Ensure table exists, then flush for idempotency
  4. add table inet geo_block
  5. flush table inet geo_block
  6. table inet geo_block {
  7. set blocked_countries {
  8. type ipv4_addr
  9. flags interval
  10. {% if geo_blocked_cidrs | length > 0 %}
  11. elements = {
  12. {% for cidr in geo_blocked_cidrs %}
  13. {{ cidr }}{% if not loop.last %},{% endif %}
  14. {% endfor %}
  15. }
  16. {% endif %}
  17. }
  18. chain prerouting {
  19. type filter hook prerouting priority -100; policy accept;
  20. ip saddr @blocked_countries drop
  21. }
  22. }