bases du nat

This commit is contained in:
Hugo LEVY-FALK 2019-01-07 23:48:42 +01:00
parent ebed1631ac
commit adb973b5af
3 changed files with 62 additions and 1 deletions

View file

@ -55,7 +55,7 @@ table inet firewall {
type filter hook input priority 0;
policy drop;
# Nos passerelles font beaucoup de choses...
tcp dport {http, https, ssh, dns, dhcp} accept;
tcp dport {http, https, ssh, dns, dhcp, radius} accept;
# On a le droit de parler avec nous même.
iif lo accept;
counter

35
nat.nft Normal file
View file

@ -0,0 +1,35 @@
#! /sbin/nft -f
table nat {
chain prerouting {
type nat hook prerouting priority 0;
# Sur le vlan prerezotage on fait du dnat vers un serveur de bounce car
# sur les clients récents on émet une requête http vers un serveur
# connu et on attend une réponse 204 pour voir que tout va bien. Si on
# ne l'a pas on ouvre un navigateur avec la réponse. C'est exactement
# ce que l'on veut pour les adhérents non rézotés qui sont sur ce vlan:
# les rediriger vers l'intranet.
iifname $if_prerezotage tcp dport {http,https} ip daddr != { $intranet, $comnpay, $website } dnat $bounce_server;
}
chain postrouting {
type nat hook postrouting priority 100
# Pour les machines du VLAN de prérézotage, on fait un simple
# masquerade derrière l'IP du routeur car on a pas besoin de loguer
# étant donné que l'on limite les destinations possibles par ailleurs.
iifname $if_prerezotage masquerade,persistent
# NAT adherent
iifname $if_adherent oifname $if_supelec snat ip saddr map @adherent_nat_address : ip saddr map @adherent_nat_port;
# NAT federez
iifname $if_federez oifname $if_supelec snat ip saddr map @federez_nat_address : ip saddr map @federez_nat_port;
# NAT ALOES
iifname $if_adherent oifname $if_supelec snat ip saddr map @aloes_nat_address : ip saddr map @aloes_nat_port;
# NAT Server
iifname $if_admin oifname $if_supelec snat ip saddr map @server_nat_address : ip saddr map @server_nat_port;
}
}

View file

@ -35,3 +35,29 @@ table inet firewall {
}
}
table nat {
# On nate les users derrière les IPs 193.48.225.11 à 193.48.225.141 en
# attribuant les plages de ports 11135-65535 par tranche de 1700 ports.
# On a donc 32 Ips de 10.69.0.0/20 derrière chaque Ip.
map adherent_nat_address {
type ipv4_addr: ipv4_addr
flags interval
elements = {
# exemple: 10.69.0.1-10.69.0.31 : 193.48.225.11
# On peut aussi ajouter dynamiquement des éléments :
# nft add element nat adherent_nat_address {10.69.0.1-10.69.0.31 : 193.48.225.11}
}
}
map adherent_nat_port {
type ipv4_addr: inet_service
flags interval
elements = {
# exemple: 10.69.0.1 : 11135-128334
# On peut aussi ajouter dynamiquement des éléments :
# nft add element nat adherent_nat_port {10.69.0.1 : 11135-128334}
}
}
}