From 1b10d843083df3346ba744146870624107607bdd Mon Sep 17 00:00:00 2001 From: Hugo LEVY-FALK Date: Wed, 9 Jan 2019 00:21:24 +0100 Subject: [PATCH] Structure du NAT --- firewall.nft | 29 +++++++++++++++-------------- nat.nft | 5 +++++ zones/adherent.nft | 6 +++--- zones/admin.nft | 26 ++++++++++++++++++++++++++ zones/aloes.nft | 26 ++++++++++++++++++++++++++ zones/federez.nft | 26 ++++++++++++++++++++++++++ zones/prerezotage.nft | 26 ++++++++++++++++++++++++++ 7 files changed, 127 insertions(+), 17 deletions(-) diff --git a/firewall.nft b/firewall.nft index c50df95..a0aafa0 100644 --- a/firewall.nft +++ b/firewall.nft @@ -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. diff --git a/nat.nft b/nat.nft index 12724b1..a3afe21 100644 --- a/nat.nft +++ b/nat.nft @@ -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 } diff --git a/zones/adherent.nft b/zones/adherent.nft index b2e4c80..a472bcf 100644 --- a/zones/adherent.nft +++ b/zones/adherent.nft @@ -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} } } } diff --git a/zones/admin.nft b/zones/admin.nft index 5728c7b..985f580 100644 --- a/zones/admin.nft +++ b/zones/admin.nft @@ -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} + } + } +} + diff --git a/zones/aloes.nft b/zones/aloes.nft index 5eeb7bb..17aab0a 100644 --- a/zones/aloes.nft +++ b/zones/aloes.nft @@ -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} + } + } +} + diff --git a/zones/federez.nft b/zones/federez.nft index d18bc73..e262f12 100644 --- a/zones/federez.nft +++ b/zones/federez.nft @@ -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} + } + } +} + diff --git a/zones/prerezotage.nft b/zones/prerezotage.nft index b0b6f14..fb2cdba 100644 --- a/zones/prerezotage.nft +++ b/zones/prerezotage.nft @@ -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} + } + } +} +