#! /sbin/nft -f table inet firewall { # Définition de la zone Federez set z_federez { type ipv4_addr; flags interval elements = { # Si l'on souhaite ajouter des ranges d'ip c'est ici 10.20.0.0/24, } } # Interfaces depuis lesquelles on autorise la communication vers # federez set allowed_to_federez = { type string; elements = { $if_admin, $if_supelec, $if_federez, # Utile ? } } chain to_federez { iifname allowed_to_federez accept; drop; } chain from_federez { # On passe d'abord par le checkmac pour éviter le spoof d'ip: not ip saddr . ether saddr @ip_mac drop; } } table nat { # On nate les users derrière les IPs 193.48.225.141 à 193.48.225.172 en # attribuant les plages de ports 11135-65535 par tranche de 1700 ports. # On a donc 32 Ips de 10.20.0.0/21 derrière chaque Ip. map federez_nat_address { type ipv4_addr: ipv4_addr flags interval elements = { # exemple: 10.20.0.1-10.20.0.31 : 193.48.225.141 # On peut aussi ajouter dynamiquement des éléments : # nft add element nat federez_nat_address {10.20.0.1-10.20.0.31 : 193.48.225.141} } } map federez_nat_port { type ipv4_addr: inet_service flags interval elements = { # exemple: 10.20.0.1 : 11135-12834 # On peut aussi ajouter dynamiquement des éléments : # nft add element nat federez_nat_port {10.20.0.1 : 11135-12834} } } }