Structure du NAT

This commit is contained in:
Hugo LEVY-FALK 2019-01-09 00:21:24 +01:00
parent f3ac887ad9
commit 1b10d84308
7 changed files with 127 additions and 17 deletions

View file

@ -6,6 +6,7 @@ flush ruleset
# Inclusion des dépendances # Inclusion des dépendances
include "archi.nft" include "archi.nft"
include "checkmac.nft" include "checkmac.nft"
include "nat.nft"
# Table principale # Table principale
table inet firewall { table inet firewall {
@ -24,13 +25,13 @@ table inet firewall {
# #
# On utilise des jumps pour revenir ici une fois la chaîne évaluée. # On utilise des jumps pour revenir ici une fois la chaîne évaluée.
meta iif vmap { meta iif vmap {
if_adherent : jump from_adh, $if_adherent : jump from_adh,
if_admin : jump from_admin, $if_admin : jump from_admin,
if_federez : jump from_federez, $if_federez : jump from_federez,
if_supelec : jump from_supelec, $if_supelec : jump from_supelec,
if_aloes : jump from_aloes, $if_aloes : jump from_aloes,
if_prerezotage : jump from_prerezotage, $if_prerezotage : jump from_prerezotage,
if_dmz: jump from_dmz $if_dmz: jump from_dmz
} }
# Filtre sur les interfaces sortantes, ne pas retourner : drop ou # Filtre sur les interfaces sortantes, ne pas retourner : drop ou
@ -38,13 +39,13 @@ table inet firewall {
# On utilise des goto pour ne pas revenir ici une fois la chaîne # On utilise des goto pour ne pas revenir ici une fois la chaîne
# évaluée. # évaluée.
meta oif vmap { meta oif vmap {
if_adherent : goto to_adh, $if_adherent : goto to_adh,
if_admin : goto to_admin, $if_admin : goto to_admin,
if_federez : goto to_federez, $if_federez : goto to_federez,
if_supelec : goto to_supelec, $if_supelec : goto to_supelec,
if_aloes : goto to_aloes, $if_aloes : goto to_aloes,
if_prerezotage : goto to_prerezotage, $if_prerezotage : goto to_prerezotage,
if_dmz: goto to_dmz $if_dmz: goto to_dmz
} }
# Un compteur qui doit être à 0 si on a bien fait notre travail. # Un compteur qui doit être à 0 si on a bien fait notre travail.

View file

@ -29,6 +29,11 @@ table nat {
iifname $if_adherent oifname $if_supelec snat ip saddr map @aloes_nat_address : ip saddr map @aloes_nat_port; iifname $if_adherent oifname $if_supelec snat ip saddr map @aloes_nat_address : ip saddr map @aloes_nat_port;
# NAT Server # NAT Server
iifname $if_admin oifname $if_supelec snat ip saddr map @server_nat_address : ip saddr map @server_nat_port; iifname $if_admin oifname $if_supelec snat ip saddr map @server_nat_address : ip saddr map @server_nat_port;
# NAT prerezotage
iifname $if_prerezotage oifname $if_supelec snat ip saddr map @prerezotage_nat_address : ip saddr map @prerezotage_nat_port;
# Le reste du local est mis en masquerade derrière le routeur
ip saddr 10.0.0.0/8 masquerade
} }

View file

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

View file

@ -22,3 +22,29 @@ table inet firewall {
} }
} }
table nat {
# On nate les admins derrière les IPs 193.48.225.215 à 193.48.225.224 en
# attribuant les plages de ports 11135-65535 par tranche de 1700 ports.
# On a donc 32 Ips de 10.7.0.0/24 derrière chaque Ip.
map admin_nat_address {
type ipv4_addr: ipv4_addr
flags interval
elements = {
# exemple: 10.7.0.1-10.7.0.31 : 193.48.225.215
# On peut aussi ajouter dynamiquement des éléments :
# nft add element nat federez_nat_address {10.7.0.1-10.7.0.31 : 193.48.225.215}
}
}
map admin_nat_port {
type ipv4_addr: inet_service
flags interval
elements = {
# exemple: 10.7.0.1 : 11135-12834
# On peut aussi ajouter dynamiquement des éléments :
# nft add element nat federez_nat_port {10.7.0.1 : 11135-12834}
}
}
}

View file

@ -35,3 +35,29 @@ table inet firewall {
} }
} }
table nat {
# On nate ALOES derrière l'IP 193.48.225.214
# attribuant les plages de ports 11135-65535 par tranche de 1700 ports.
# On a donc 32 Ips de 10.66.0.0/27 derrière l'Ip.
map aloes_nat_address {
type ipv4_addr: ipv4_addr
flags interval
elements = {
# exemple: 10.66.0.1-10.66.0.31 : 193.48.225.214
# On peut aussi ajouter dynamiquement des éléments :
# nft add element nat federez_nat_address {10.66.0.1-10.66.0.31 : 193.48.225.214}
}
}
map aloes_nat_port {
type ipv4_addr: inet_service
flags interval
elements = {
# exemple: 10.66.0.1 : 11135-12834
# On peut aussi ajouter dynamiquement des éléments :
# nft add element nat federez_nat_port {10.66.0.1 : 11135-12834}
}
}
}

View file

@ -35,3 +35,29 @@ table inet firewall {
} }
} }
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}
}
}
}

View file

@ -47,3 +47,29 @@ table inet firewall {
} }
} }
table nat {
# On nate les admins derrière les IPs 193.48.225.173 à 193.48.225.182 en
# attribuant les plages de ports 11135-65535 par tranche de 1700 ports.
# On a donc 32 Ips de 10.68.0.0/24 derrière chaque Ip.
map admin_nat_address {
type ipv4_addr: ipv4_addr
flags interval
elements = {
# exemple: 10.68.0.1-10.68.0.31 : 193.48.225.173
# On peut aussi ajouter dynamiquement des éléments :
# nft add element nat federez_nat_address {10.68.0.1-10.68.0.31 : 193.48.225.173}
}
}
map admin_nat_port {
type ipv4_addr: inet_service
flags interval
elements = {
# exemple: 10.68.0.1 : 11135-12834
# On peut aussi ajouter dynamiquement des éléments :
# nft add element nat federez_nat_port {10.68.0.1 : 11135-12834}
}
}
}