SNAT
This commit is contained in:
parent
f160b51e33
commit
31ee6ef787
13 changed files with 86 additions and 265 deletions
|
@ -15,3 +15,4 @@ define website = 193.48.225.242
|
||||||
define intranet = 193.48.225.247
|
define intranet = 193.48.225.247
|
||||||
define bounce_server = 193.48.225.247
|
define bounce_server = 193.48.225.247
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,8 @@
|
||||||
# Table checkmac, à bas le spoof d'ips.
|
# Table checkmac, à bas le spoof d'ips.
|
||||||
|
|
||||||
table inet firewall {
|
table firewall {
|
||||||
set ip_mac {
|
set ip_mac {
|
||||||
type ipv4_addr . ether_addr
|
type ipv4_addr . ether_addr
|
||||||
elements = {
|
|
||||||
# On peut en mettre en dur ici
|
|
||||||
# Par exemple : 10.69.6.91 . 20:68:9d:dd:89:ab
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
21
firewall.nft
Normal file → Executable file
21
firewall.nft
Normal file → Executable file
|
@ -1,11 +1,19 @@
|
||||||
#! /sbin/nft -f
|
#! /usr/sbin/nft -f
|
||||||
|
|
||||||
# Remise à zéro des règles du pare-feu
|
# Remise à zéro des règles du pare-feu
|
||||||
flush ruleset
|
flush ruleset
|
||||||
|
|
||||||
# Inclusion des dépendances
|
# Inclusion des dépendances
|
||||||
include "archi.nft"
|
include "archi.nft"
|
||||||
|
include "global_policy.nft"
|
||||||
include "checkmac.nft"
|
include "checkmac.nft"
|
||||||
|
include "zones/adherent.nft"
|
||||||
|
include "zones/aloes.nft"
|
||||||
|
include "zones/federez.nft"
|
||||||
|
include "zones/supelec.nft"
|
||||||
|
include "zones/admin.nft"
|
||||||
|
include "zones/dmz.nft"
|
||||||
|
include "zones/prerezotage.nft"
|
||||||
include "nat.nft"
|
include "nat.nft"
|
||||||
|
|
||||||
# Table principale
|
# Table principale
|
||||||
|
@ -19,7 +27,7 @@ table inet firewall {
|
||||||
policy drop;
|
policy drop;
|
||||||
|
|
||||||
# Applique la politique globale
|
# Applique la politique globale
|
||||||
jump global
|
#jump global
|
||||||
|
|
||||||
# Filtre sur les interfaces entrantes, ne pas accepter
|
# Filtre sur les interfaces entrantes, ne pas accepter
|
||||||
# directement dans la chaine, mais retourner.
|
# directement dans la chaine, mais retourner.
|
||||||
|
@ -57,12 +65,7 @@ table inet firewall {
|
||||||
|
|
||||||
chain input {
|
chain input {
|
||||||
type filter hook input priority 0;
|
type filter hook input priority 0;
|
||||||
policy drop;
|
policy accept;
|
||||||
# Nos passerelles font beaucoup de choses...
|
|
||||||
tcp dport {http, https, ssh, dns, dhcp, radius} accept;
|
|
||||||
# On a le droit de parler avec nous même.
|
|
||||||
iif lo accept;
|
|
||||||
counter
|
|
||||||
}
|
}
|
||||||
|
|
||||||
chain output {
|
chain output {
|
||||||
|
@ -72,5 +75,3 @@ table inet firewall {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
table nat {
|
|
||||||
}
|
|
||||||
|
|
0
firewall.py
Normal file → Executable file
0
firewall.py
Normal file → Executable file
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
table inet firewall {
|
table firewall {
|
||||||
chain global {
|
chain global {
|
||||||
# Interdiction de l'encapsulation ipv6 dans ipv4
|
# Interdiction de l'encapsulation ipv6 dans ipv4
|
||||||
ip protocol 6 drop;
|
ip protocol 6 drop;
|
||||||
|
@ -7,6 +7,6 @@ table inet firewall {
|
||||||
# Gestion de l'ICMP :
|
# Gestion de l'ICMP :
|
||||||
# On empêche le ping flood
|
# On empêche le ping flood
|
||||||
icmp type echo-request limit rate over 50/second drop;
|
icmp type echo-request limit rate over 50/second drop;
|
||||||
icmp accept;
|
ip protocol icmp accept;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
35
nat.nft
35
nat.nft
|
@ -1,38 +1,25 @@
|
||||||
#! /sbin/nft -f
|
#! /sbin/nft -f
|
||||||
|
|
||||||
table nat {
|
table ip nat {
|
||||||
|
|
||||||
chain prerouting {
|
chain prerouting {
|
||||||
type nat hook prerouting priority 0;
|
type nat hook prerouting priority 0;
|
||||||
# Sur le vlan prerezotage on fait du dnat vers un serveur de bounce car
|
meta iifname $if_prerezotage ip daddr != { $intranet, $comnpay, $website } tcp dport {http,https} dnat $bounce_server;
|
||||||
# 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.
|
|
||||||
meta iifname $if_prerezotage tcp dport {http,https} ip daddr != { $intranet, $comnpay, $website } dnat $bounce_server;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
chain postrouting {
|
chain postrouting {
|
||||||
type nat hook postrouting priority 100
|
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.
|
|
||||||
meta iifname $if_prerezotage masquerade,persistent
|
|
||||||
|
|
||||||
# NAT adherent
|
meta oifname != $if_supelec return
|
||||||
meta iifname $if_adherent meta oifname $if_supelec snat ip saddr map @adherent_nat_address : ip saddr map @adherent_nat_port;
|
|
||||||
# NAT federez
|
meta iifname vmap {
|
||||||
meta iifname $if_federez meta oifname $if_supelec snat ip saddr map @federez_nat_address : ip saddr map @federez_nat_port;
|
$if_adherent : goto adh_nat,
|
||||||
# NAT ALOES
|
$if_admin : goto adm_nat,
|
||||||
meta iifname $if_adherent meta oifname $if_supelec snat ip saddr map @aloes_nat_address : ip saddr map @aloes_nat_port;
|
$if_aloes : goto aloes_nat,
|
||||||
# NAT Server
|
$if_federez : goto federez_nat,
|
||||||
meta iifname $if_admin meta oifname $if_supelec snat ip saddr map @server_nat_address : ip saddr map @server_nat_port;
|
$if_prerezotage : goto prerezotage_nat,
|
||||||
# NAT prerezotage
|
}
|
||||||
meta iifname $if_prerezotage meta 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
|
ip saddr 10.0.0.0/8 masquerade
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,62 +2,37 @@
|
||||||
|
|
||||||
table inet firewall {
|
table inet firewall {
|
||||||
|
|
||||||
# Définition de la zone Adhérents
|
|
||||||
|
|
||||||
set z_adh {
|
|
||||||
type ipv4_addr;
|
|
||||||
flags interval
|
|
||||||
elements = {
|
|
||||||
# Si l'on souhaite ajouter des ranges d'ip c'est ici
|
|
||||||
10.69.0.0/24,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Interfaces depuis lesquelles on autorise la communication vers
|
|
||||||
# adherent
|
|
||||||
set allowed_to_adh = {
|
|
||||||
type string;
|
|
||||||
elements = {
|
|
||||||
$if_admin,
|
|
||||||
$if_supelec,
|
|
||||||
$if_adherent,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
chain to_adh {
|
chain to_adh {
|
||||||
meta iifname allowed_to_adh accept;
|
accept
|
||||||
drop;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
chain from_adh {
|
chain from_adh {
|
||||||
# On passe d'abord par le checkmac pour éviter le spoof d'ip:
|
# On passe d'abord par le checkmac pour éviter le spoof d'ip:
|
||||||
not ip saddr . ether saddr @ip_mac drop;
|
#ip saddr . ether saddr != @ip_mac drop
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
table nat {
|
table ip nat {
|
||||||
# On nate les users derrière les IPs 193.48.225.11 à 193.48.225.140 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 {
|
|
||||||
type ipv4_addr: ipv4_addr
|
|
||||||
flags interval
|
|
||||||
elements = {
|
|
||||||
# exemple: 10.69.0.1-10.69.0.31 : 193.48.225.11
|
# exemple: 10.69.0.1-10.69.0.31 : 193.48.225.11
|
||||||
# On peut aussi ajouter dynamiquement des éléments :
|
# 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}
|
# nft add element nat adherent_nat_address {10.69.0.1-10.69.0.31 : 193.48.225.11}
|
||||||
|
map adherent_nat_address {
|
||||||
|
type ipv4_addr: ipv4_addr
|
||||||
}
|
}
|
||||||
}
|
|
||||||
map adherent_nat_port {
|
|
||||||
type ipv4_addr: inet_service
|
|
||||||
flags interval
|
|
||||||
elements = {
|
|
||||||
# exemple: 10.69.0.1 : 11135-12834
|
# 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-12834}
|
# nft add element nat adherent_nat_port {10.69.0.1 : 11135-12834}
|
||||||
|
map adherent_nat_port {
|
||||||
|
type ipv4_addr: inet_service
|
||||||
|
flags interval
|
||||||
}
|
}
|
||||||
|
chain adh_nat {
|
||||||
|
ip protocol tcp snat ip saddr map @adherent_nat_address : ip saddr map @adherent_nat_port
|
||||||
|
ip protocol udp snat ip saddr map @adherent_nat_address : ip saddr map @adherent_nat_port
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,20 +2,8 @@
|
||||||
|
|
||||||
table inet firewall {
|
table inet firewall {
|
||||||
|
|
||||||
# Définition de la zone Adhérents
|
|
||||||
|
|
||||||
set z_admin {
|
|
||||||
type ipv4_addr;
|
|
||||||
flags interval
|
|
||||||
elements = {
|
|
||||||
# Si l'on souhaite ajouter des ranges d'ip c'est ici
|
|
||||||
10.7.0.0/24,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
chain to_admin {
|
chain to_admin {
|
||||||
# On devrait toujours pouvoir contacter un admin :)
|
accept
|
||||||
accept;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
chain from_admin {
|
chain from_admin {
|
||||||
|
@ -27,24 +15,23 @@ table nat {
|
||||||
# On nate les admins derrière les IPs 193.48.225.215 à 193.48.225.224 en
|
# 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.
|
# 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.
|
# 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
|
# exemple: 10.7.0.1-10.7.0.31 : 193.48.225.215
|
||||||
# On peut aussi ajouter dynamiquement des éléments :
|
# 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}
|
# nft add element nat federez_nat_address {10.7.0.1-10.7.0.31 : 193.48.225.215}
|
||||||
|
map admin_nat_address {
|
||||||
}
|
type ipv4_addr: ipv4_addr
|
||||||
}
|
|
||||||
map admin_nat_port {
|
|
||||||
type ipv4_addr: inet_service
|
|
||||||
flags interval
|
flags interval
|
||||||
elements = {
|
}
|
||||||
# exemple: 10.7.0.1 : 11135-12834
|
# exemple: 10.7.0.1 : 11135-12834
|
||||||
# On peut aussi ajouter dynamiquement des éléments :
|
# On peut aussi ajouter dynamiquement des éléments :
|
||||||
# nft add element nat federez_nat_port {10.7.0.1 : 11135-12834}
|
# nft add element nat federez_nat_port {10.7.0.1 : 11135-12834}
|
||||||
|
map admin_nat_port {
|
||||||
|
type ipv4_addr: inet_service
|
||||||
|
flags interval
|
||||||
}
|
}
|
||||||
|
chain adm_nat {
|
||||||
|
ip protocol tcp snat ip saddr map @admin_nat_address : ip saddr map @admin_nat_port
|
||||||
|
ip protocol udp snat ip saddr map @admin_nat_address : ip saddr map @admin_nat_port
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,36 +2,13 @@
|
||||||
|
|
||||||
table inet firewall {
|
table inet firewall {
|
||||||
|
|
||||||
# Définition de la zone
|
|
||||||
|
|
||||||
set z_aloes {
|
|
||||||
type ipv4_addr;
|
|
||||||
flags interval
|
|
||||||
elements = {
|
|
||||||
# Si l'on souhaite ajouter des ranges d'ip c'est ici
|
|
||||||
10.66.0.0/24,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Interfaces depuis lesquelles on autorise la communication vers
|
|
||||||
# aloes
|
|
||||||
set allowed_to_aloes = {
|
|
||||||
type string;
|
|
||||||
elements = {
|
|
||||||
$if_admin,
|
|
||||||
$if_supelec,
|
|
||||||
$if_aloes, # Utile ?
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
chain to_aloes {
|
chain to_aloes {
|
||||||
meta iifname allowed_to_aloes accept;
|
accept
|
||||||
drop;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
chain from_aloes {
|
chain from_aloes {
|
||||||
# On passe d'abord par le checkmac pour éviter le spoof d'ip:
|
# On passe d'abord par le checkmac pour éviter le spoof d'ip:
|
||||||
not ip saddr . ether saddr @ip_mac drop;
|
#ip saddr . ether saddr != @ip_mac drop;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -40,24 +17,23 @@ table nat {
|
||||||
# On nate ALOES derrière l'IP 193.48.225.214
|
# On nate ALOES derrière l'IP 193.48.225.214
|
||||||
# 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.66.0.0/27 derrière l'Ip.
|
# 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
|
# exemple: 10.66.0.1-10.66.0.31 : 193.48.225.214
|
||||||
# On peut aussi ajouter dynamiquement des éléments :
|
# 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}
|
# nft add element nat federez_nat_address {10.66.0.1-10.66.0.31 : 193.48.225.214}
|
||||||
|
map aloes_nat_address {
|
||||||
}
|
type ipv4_addr: ipv4_addr
|
||||||
}
|
|
||||||
map aloes_nat_port {
|
|
||||||
type ipv4_addr: inet_service
|
|
||||||
flags interval
|
flags interval
|
||||||
elements = {
|
}
|
||||||
# exemple: 10.66.0.1 : 11135-12834
|
# exemple: 10.66.0.1 : 11135-12834
|
||||||
# On peut aussi ajouter dynamiquement des éléments :
|
# On peut aussi ajouter dynamiquement des éléments :
|
||||||
# nft add element nat federez_nat_port {10.66.0.1 : 11135-12834}
|
# nft add element nat federez_nat_port {10.66.0.1 : 11135-12834}
|
||||||
|
map aloes_nat_port {
|
||||||
|
type ipv4_addr: inet_service
|
||||||
|
flags interval
|
||||||
}
|
}
|
||||||
|
chain aloes_nat {
|
||||||
|
ip protocol tcp snat ip saddr map @aloes_nat_address : ip saddr map @aloes_nat_port
|
||||||
|
ip protocol udp snat ip saddr map @aloes_nat_address : ip saddr map @aloes_nat_port
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,49 +6,33 @@ table inet firewall {
|
||||||
# Définition de la DMZ
|
# Définition de la DMZ
|
||||||
|
|
||||||
set z_dmz {
|
set z_dmz {
|
||||||
type ipv4_addr;
|
type ipv4_addr
|
||||||
flags interval
|
flags interval
|
||||||
elements = {
|
elements = {193.48.225.224/27}
|
||||||
# Si l'on souhaite ajouter des ranges d'ip c'est ici
|
|
||||||
193.48.225.224/27,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
set dmz_allowed_tcp_in {
|
set dmz_allowed_tcp_in {
|
||||||
type ipv4_addr . inet_service
|
type ipv4_addr . inet_service
|
||||||
flags interval
|
|
||||||
elements = {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
set dmz_allowed_tcp_out {
|
set dmz_allowed_tcp_out {
|
||||||
type ipv4_addr . inet_service
|
type ipv4_addr . inet_service
|
||||||
flags interval
|
|
||||||
elements = {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
set dmz_allowed_udp_in {
|
set dmz_allowed_udp_in {
|
||||||
type ipv4_addr . inet_service
|
type ipv4_addr . inet_service
|
||||||
flags interval
|
|
||||||
elements = {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
set dmz_allowed_udp_out {
|
set dmz_allowed_udp_out {
|
||||||
type ipv4_addr . inet_service
|
type ipv4_addr . inet_service
|
||||||
flags interval
|
|
||||||
elements = {
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
chain to_dmz {
|
chain to_dmz {
|
||||||
ip daddr . tcp dport @dmz_allowed_tcp_in accept;
|
#ip daddr . tcp dport @dmz_allowed_tcp_in accept
|
||||||
ip daddr . udp dport @dmz_allowed_udp_in accept;
|
#ip daddr . udp dport @dmz_allowed_udp_in accept
|
||||||
drop;
|
accept
|
||||||
}
|
}
|
||||||
|
|
||||||
chain from_dmz {
|
chain from_dmz {
|
||||||
not ip saddr . tcp dport @dmz_allowed_tcp_out drop;
|
#ip saddr . tcp dport != @dmz_allowed_tcp_out drop
|
||||||
not ip saddr . udp dport @dmz_allowed_udp_out drop;
|
#ip saddr . udp dport != @dmz_allowed_udp_out drop
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,31 +2,8 @@
|
||||||
|
|
||||||
table inet firewall {
|
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 {
|
chain to_federez {
|
||||||
meta iifname allowed_to_federez accept;
|
accept
|
||||||
drop;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
chain from_federez {
|
chain from_federez {
|
||||||
|
@ -38,24 +15,23 @@ table nat {
|
||||||
# On nate les users derrière les IPs 193.48.225.141 à 193.48.225.172 en
|
# 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.
|
# 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.
|
# 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
|
# exemple: 10.20.0.1-10.20.0.31 : 193.48.225.141
|
||||||
# On peut aussi ajouter dynamiquement des éléments :
|
# 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}
|
# nft add element nat federez_nat_address {10.20.0.1-10.20.0.31 : 193.48.225.141}
|
||||||
|
map federez_nat_address {
|
||||||
}
|
type ipv4_addr: ipv4_addr
|
||||||
}
|
|
||||||
map federez_nat_port {
|
|
||||||
type ipv4_addr: inet_service
|
|
||||||
flags interval
|
flags interval
|
||||||
elements = {
|
}
|
||||||
# exemple: 10.20.0.1 : 11135-12834
|
# exemple: 10.20.0.1 : 11135-12834
|
||||||
# On peut aussi ajouter dynamiquement des éléments :
|
# On peut aussi ajouter dynamiquement des éléments :
|
||||||
# nft add element nat federez_nat_port {10.20.0.1 : 11135-12834}
|
# nft add element nat federez_nat_port {10.20.0.1 : 11135-12834}
|
||||||
|
map federez_nat_port {
|
||||||
|
type ipv4_addr: inet_service
|
||||||
|
flags interval
|
||||||
}
|
}
|
||||||
|
chain federez_nat {
|
||||||
|
ip protocol tcp snat ip saddr map @federez_nat_address : ip saddr map @federez_nat_port
|
||||||
|
ip protocol udp snat ip saddr map @federez_nat_address : ip saddr map @federez_nat_port
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,20 +2,8 @@
|
||||||
|
|
||||||
table inet firewall {
|
table inet firewall {
|
||||||
|
|
||||||
# Définition de la zone Prérézotage
|
|
||||||
|
|
||||||
set z_prerezotage {
|
|
||||||
type ipv4_addr;
|
|
||||||
flags interval
|
|
||||||
elements = {
|
|
||||||
# Si l'on souhaite ajouter des ranges d'ip c'est ici
|
|
||||||
10.68.0.0/16,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Adresses de destination autorisées
|
|
||||||
set allowed_daddr_prerezotage {
|
set allowed_daddr_prerezotage {
|
||||||
type ipv4_addr;
|
type ipv4_addr
|
||||||
flags interval
|
flags interval
|
||||||
elements = {
|
elements = {
|
||||||
$comnpay,
|
$comnpay,
|
||||||
|
@ -23,53 +11,20 @@ table inet firewall {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Interfaces depuis lesquelles on autorise la communication vers
|
|
||||||
# le prérézotage
|
|
||||||
set allowed_to_prerezotage = {
|
|
||||||
type string;
|
|
||||||
elements = {
|
|
||||||
$if_admin,
|
|
||||||
$if_prerezotage,
|
|
||||||
$if_supelec,
|
|
||||||
$if_prerezotage, # Utile ?
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
chain to_prerezotage {
|
chain to_prerezotage {
|
||||||
# On accepte les connexions que depuis certaines ips.
|
accept
|
||||||
meta iifname allowed_to_prerezotage accept;
|
|
||||||
drop;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
chain from_prerezotage {
|
chain from_prerezotage {
|
||||||
# Si on ne sort pas vers une ip autorisée, ça dégage.
|
ip daddr != @allowed_daddr_prerezotage drop
|
||||||
not ip daddr allowed_daddr_prerezotage drop;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
table nat {
|
table nat {
|
||||||
# On nate les admins derrière les IPs 193.48.225.173 à 193.48.225.182 en
|
chain prerezotage_nat {
|
||||||
# attribuant les plages de ports 11135-65535 par tranche de 1700 ports.
|
masquerade
|
||||||
# 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}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,25 +2,8 @@
|
||||||
|
|
||||||
table inet firewall {
|
table inet firewall {
|
||||||
|
|
||||||
# Définition de la zone Supélec
|
|
||||||
|
|
||||||
# Interfaces depuis lesquelles on autorise la communication vers
|
|
||||||
# supelec
|
|
||||||
set allowed_to_supelec = {
|
|
||||||
type string;
|
|
||||||
elements = {
|
|
||||||
$if_adherent,
|
|
||||||
$if_admin,
|
|
||||||
$if_federez,
|
|
||||||
$if_aloes,
|
|
||||||
$if_prerezotage,
|
|
||||||
$if_dmz
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
chain to_supelec {
|
chain to_supelec {
|
||||||
meta iifname allowed_to_supelec accept;
|
accept
|
||||||
drop;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
chain from_supelec {
|
chain from_supelec {
|
||||||
|
|
Loading…
Reference in a new issue