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
include "archi.nft"
include "checkmac.nft"
include "nat.nft"
# Table principale
table inet firewall {
@ -24,13 +25,13 @@ table inet firewall {
#
# On utilise des jumps pour revenir ici une fois la chaîne évaluée.
meta iif vmap {
if_adherent : jump from_adh,
if_admin : jump from_admin,
if_federez : jump from_federez,
if_supelec : jump from_supelec,
if_aloes : jump from_aloes,
if_prerezotage : jump from_prerezotage,
if_dmz: jump from_dmz
$if_adherent : jump from_adh,
$if_admin : jump from_admin,
$if_federez : jump from_federez,
$if_supelec : jump from_supelec,
$if_aloes : jump from_aloes,
$if_prerezotage : jump from_prerezotage,
$if_dmz: jump from_dmz
}
# 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
# évaluée.
meta oif vmap {
if_adherent : goto to_adh,
if_admin : goto to_admin,
if_federez : goto to_federez,
if_supelec : goto to_supelec,
if_aloes : goto to_aloes,
if_prerezotage : goto to_prerezotage,
if_dmz: goto to_dmz
$if_adherent : goto to_adh,
$if_admin : goto to_admin,
$if_federez : goto to_federez,
$if_supelec : goto to_supelec,
$if_aloes : goto to_aloes,
$if_prerezotage : goto to_prerezotage,
$if_dmz: goto to_dmz
}
# 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;
# NAT Server
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 {
# 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.
# On a donc 32 Ips de 10.69.0.0/20 derrière chaque Ip.
map adherent_nat_address {
@ -54,9 +54,9 @@ table nat {
type ipv4_addr: inet_service
flags interval
elements = {
# exemple: 10.69.0.1 : 11135-128334
# exemple: 10.69.0.1 : 11135-12834
# 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}
}
}
}