Le pare-feu (ou filtre de paquets) est un sujet vaste et complexe à la fois théoriquement et concrètement. Un filtre de paquets dans divers systèmes d'exploitation peut avoir ses avantages et ses inconvénients par rapport à d'autres implémentations. Dans cet article, je considérerai exclusivement le pare-feu dans RouterOS en gardant un œil sur son progiciel iptables.
Préface
À qui s'adresse cet article?
Si vous savez comment travailler avec iptables, alors allez-y et configurez le pare-feu, il n'y aura rien de nouveau pour vous dans cet article (enfin, sauf que des chaînes avec d'autres noms sont utilisées dans la table NAT). Si c'est la première fois que vous voyez un pare-feu dans RouterOS et que vous souhaitez obtenir un script prêt à l'emploi pour la configuration, vous ne le trouverez pas ici. Le matériel est destiné à ceux qui veulent avoir une idée de base du fonctionnement du pare-feu et de ce qui se passe avec le paquet ip à différentes étapes de son traitement. Une compréhension plus approfondie viendra avec l'expérience et la résolution de problèmes quotidiens et inhabituels à l'aide d'un filtre de paquets.
Partie théorique
Qu'est-ce que le pare-feu Layer3?

Supposons que vous ayez un routeur avec accès Internet et deux interfaces de pont: bridge-lan (ether2-ether5) et bridge-dmz (ether6-ether10).
Dans l'interface Bridge, les périphériques trouvent indépendamment des voisins de leur sous-réseau et échangent des paquets, le routeur agit comme un commutateur et ne surveille pas ce trafic au niveau du réseau (bien sûr, vous pouvez le forcer à le faire, mais nous parlerons du pare-feu Layer2 une autre fois).
Si nécessaire, contactez l'appareil connecté à une autre interface de pont ou situé sur le réseau mondial, les appareils transmettent des paquets au routeur, qui détermine l'itinéraire et les traite au niveau du réseau (couche 3).
Diagramme de flux de paquets
Le chemin complet du trafic est décrit dans le diagramme de flux de paquets, il existe plusieurs versions officielles (v5, v6 ), elles doivent être connues et utilisées dans le travail quotidien, mais pour comprendre le fonctionnement du filtre de paquets, elles sont surchargées, donc je vais vous expliquer dans une version légère.

L'interface d'entrée / sortie est n'importe quelle interface de routeur de couche 3 (physique ou virtuelle). Un paquet qui va du réseau local à Internet arrive à l'interface d'entrée et quitte l'interface de sortie. Un paquet provenant d'Internet vers le réseau local parvient également à l'interface d'entrée et quitte l'interface de sortie. Le flux de paquets est toujours lu dans une seule direction entrée -> sortie.
Caractéristiques terminologiques
En étudiant le flux de paquets pour iptables, vous pouvez trouver des descriptions à travers "des chaînes dans des tables" ou des "tables dans des chaînes". Le diagramme montre les tables enchaînées, lors de l'ajout de règles au pare-feu, tout se fera inversement.
Mais en fait, le paquet se déplace entre les blocs [chain + tables], par exemple, si vous faites accepter dans le bloc [prerouting + mangle], le paquet de transit sera toujours traité dans [forward + mangle]. Ceci est important à retenir dans les configurations complexes avec pbr et files d'attente.
La documentation iptables a des définitions plus précises, mais en termes simples:
Les chaînes sont responsables de l'endroit où le paquet est traité et de la séquence des règles.
Les tableaux déterminent les actions pouvant être effectuées sur un package.
Options de suivi du package de base

Transit

- Un paquet du réseau arrive sur l'une des interfaces du routeur
- Dans la chaîne PREROUTING, l'administrateur peut influencer la route des paquets: déterminer l'interface de sortie (routage de la base de règles) ou rediriger vers une autre adresse (dst-nat).
- Conformément à la table de routage pour le paquet, l'interface sortante est déterminée.
- La chaîne FORWARD est le principal lieu de filtrage pour le trafic de passage.
- Le dernier élément avant d'entrer dans le réseau est la chaîne POSTROUTING, dans laquelle vous pouvez modifier l'adresse de l'expéditeur (src-nat).
- Le paquet est allé en ligne.
Entrant

- Un paquet du réseau est arrivé à l'une des interfaces du routeur
- Frappez la chaîne PREROUTING.
- Selon la table de routage, le paquet a été envoyé pour traitement au processus local.
- La chaîne INPUT filtre le trafic entrant par l'administrateur.
- Le package a été traité par le processus local.
Sortant

- Un des processus du routeur a généré un paquet IP (nouveau ou réponse - peu importe).
- Conformément à la table de routage, une interface de sortie est définie pour le paquet.
- L'administrateur peut filtrer le trafic sortant ou modifier l'itinéraire dans la chaîne OUTPUT.
- Pour le package, la décision finale sur l'interface de sortie est prise.
- Le paquet tombe en POSTROUTING, tout comme le trafic qui passe .
- Le paquet est allé en ligne.
Suivi de connexion
Vous devez d'abord comprendre ce que sont les filtres de paquets avec état et sans état.

Un exemple. L'ordinateur 192.168.100.10 ouvre une connexion TCP au serveur 192.0.2.10. Côté client, le port dynamique 49149 est utilisé, côté serveur 80. Avant la réception du contenu, le client et le serveur doivent échanger des paquets pour établir une session TCP.
Dans les apatrides, vous devez ouvrir le trafic du réseau local à Internet et d'Internet au réseau local (au moins pour la plage de ports dynamiques). Ce qui dans son ensemble est un trou.
Dans un routeur avec état , il analyse les paquets et, après avoir reçu la synchronisation tcp de 192.168.100.10:49149 pour 192.0.2.10:80, considère cela comme le début d'une nouvelle connexion. Tous les autres paquets (dans n'importe quelle direction) entre 192.168.100.10:49149 et 192.0.2.10:80 seront considérés comme faisant partie de la connexion établie jusqu'à la fermeture de la session TCP ou l'expiration des temporisations.
Pour UDP / ICMP et d'autres types de trafic, où le début et la fin de la connexion ne peuvent pas être clairement distingués, le premier paquet est le premier, les autres sont considérés comme faisant partie de la connexion établie et mettent à jour les temporisateurs, le routeur oublie ces connexions après l'expiration des temporisateurs.
Le traqueur de connexion divise les packages en plusieurs types:

new - un paquet qui ouvre une connexion, par exemple syn pour tcp ou le premier paquet dans un flux udp.
établi - un paquet lié à une connexion connue.
related - paquet lié à la connexion supplémentaire dans le multiprotocole (sip, pptp, ftp, ...).
invalide - paquet d'une connexion inconnue.
non suivi - traqueur de connexion de paquet non suivi.
Configuration du traqueur de connexion
activé = oui - activé.
activé = non - désactivé.
enabed = auto-désactivé jusqu'à ce qu'une règle utilisant les capacités de conntrack apparaisse dans le pare-feu. Il est utilisé par défaut.

Les paramètres restants sont des minuteries différentes et ne nécessitent généralement pas de réglage.
L'administrateur peut afficher et supprimer les connexions, par exemple, la connexion au NAT ressemble à ceci:

L'utilisation de conntrack affecte les performances et la consommation de ressources (en particulier avec un grand nombre de connexions), mais cela ne fonctionnera pas dans la plupart des configurations, car vous aurez un pare-feu sans état sans NAT.
Liste des fonctions dépendantes du traqueur de connexion TTL
Time To Live - un champ dans l'en-tête de paquet IP qui définit le nombre de routeurs par lesquels un paquet peut passer avant qu'il ne soit détruit, protège contre le transfert de paquets sans fin pendant les boucles de routage.

Lors du transfert, le routeur diminue la valeur TTL de 1, si TTL = 0. Dans ce cas, un paquet avec TTL = 1 arrivera au processus local du routeur.
Certains opérateurs utilisent des astuces TTL pour empêcher l'utilisation de routeurs. Toutes ces limitations valent bien l'augmentation de la valeur ttl dans la table mangle.
NAT
Traduction d'adresses réseau - technologie pour changer les adresses dans l'en-tête du paquet ip. Comme Linux, NAT fait partie du filtre de paquets. NAT fonctionne basé sur le traqueur de connexion.
Initialement, le NAT a été conçu comme une solution rapide au problème d'épuisement des adresses IPv4, pour les réseaux locaux, il a été proposé d'utiliser un sous-réseau des plages: 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16 et les traduire en une (ou plusieurs) adresses routables. En fait, il existe quelques sous-réseaux de service supplémentaires qui peuvent être utilisés sur des réseaux privés et le routeur, en principe, est le même que pour NAT, mais il est recommandé de suivre les normes.
Processus NAT uniquement: tcp, udp, icmp et certains multi-protocoles de [IP] -> [Firewall] -> [Service Port]. Seul le premier paquet (état de connexion = nouveau) de la connexion est traité, les paquets restants sont traités automatiquement sans la participation de la table NAT. Cela peut être suivi par le changement de compteurs dans les règles.
L'en-tête du paquet contient respectivement l'adresse source et destination et le NAT est divisé en NAT source et destination.
Source NAT - usurpation d'adresse de l'expéditeur, présente sur la grande majorité des routeurs domestiques et d'entreprise dans le monde.

Il permet à de nombreux appareils avec des adresses "grises" sur le réseau local de communiquer avec Internet en utilisant une (ou plusieurs) adresses réelles.

En retournant à Packet Flow, nous voyons que SRC-NAT est en Postrouting, après avoir décidé de router le paquet.
Le paquet de réponse passe par un DST-NAT implicite dans lequel l'adresse du destinataire est changée en locale.
Destination NAT - substitution de l'adresse du destinataire.

Il est utilisé, si nécessaire, pour transférer le paquet vers une autre adresse, il est généralement utilisé pour "transférer des ports" du réseau externe au réseau local.

Selon Packet Flow, l'opération DST-NAT se produit avant la décision de routage dans le préroutage; le SRC-NAT implicite est présent pour le trafic de réponse.
NAT est un outil de gestion du trafic assez puissant, mais il doit être utilisé en dernier (lorsque d'autres outils ne peuvent pas aider).
Chaînes (chaînes) de base et utilisateur
Les chaînes sont constituées de règles et forcent la logique du traitement des paquets.
Il existe plusieurs chaînes de base mappées au flux de paquets:
Préroutage (dstnat) - traitement des paquets avant de décider du routage
Entrée - traitement des paquets destinés aux processus locaux du routeur
Sortie - traitement des paquets de paquets générés par les processus locaux du routeur
Transférer - Traiter le trafic passant
Postrouting (srcnat) - Traitement du trafic prêt à être transmis à l'interface
Tout est comme dans iptables, mais les chaînes en nat sont renommées. Je ne sais pas à quoi cela est lié (très probablement avec le hotspot ou le déchargement matériel de nat), mais cela ne change rien du tout.
Le package transmet les règles de la chaîne de manière séquentielle, s'il convient à toutes les conditions, alors l'action est appliquée au package. Si l'action se termine et ne supprime pas le paquet, elle est transmise au bloc de flux de paquets suivant.
Toutes les chaînes de base ont une action par défaut (si le package ne correspondait à aucune des règles) - acceptez .
Des chaînes personnalisées sont nécessaires pour réduire le nombre de règles transmises par chaque paquet et pour créer des règles complexes pour le traitement du trafic. Toutes les chaînes d'utilisateurs ont une action par défaut - return .

Dans le tableau, vous pouvez transmettre les règles de plusieurs chaînes de base (et utilisateur) différentes à la chaîne utilisateur, mais le paquet retournera à la chaîne dont il est issu.

Termes et conditions
Les chaînes se composent de règles; chaque règle se compose de conditions et d'actions. Il y a beaucoup de conditions, mais vous n'utiliserez pas tous dans des configurations réelles. La plupart des conditions peuvent être précédées de "non" (signe "!"). Pour coïncider avec la règle, le forfait doit être adapté à toutes ces conditions.

Quelques conditionsCondition | La description |
---|
adresse src | Adresse source |
adresse-dst | Adresse du destinataire |
liste-d'adresses-src | L'adresse source est répertoriée. |
dst-address-list | L'adresse du destinataire est répertoriée |
protocole | Protocole de couche transport |
port src | Port source |
port-dst | Port destinataire |
port | Port source ou de destination |
dans l'interface | L'interface sur laquelle le paquet est venu |
hors interface | L'interface à partir de laquelle le paquet sera envoyé au réseau |
in-interface-list | L'interface à laquelle le package est arrivé est répertoriée |
out-interface-list | L'interface à partir de laquelle le paquet sera envoyé au réseau est répertoriée |
couche7-protocole | Analyse du contenu des 10 premiers paquets d'une connexion |
contenu | Rechercher une chaîne donnée dans un lot |
tls-host | Rechercher l'hôte dans l'en-tête tls |
politique ipsec | Vérifiez si le paquet correspond à la politique IPSec ou non |
taille de paquet | taille de paquet en octets |
src-mac-address | adresse source du package mac |
connexion-marque | Étiquette de connexion |
marque de paquet | Étiquette d'emballage |
marque de routage | Packet Waypoint |
état de connexion | État du package de connexion |
tcp-flags | Drapeaux tcp package |
icmp-options | Options du package ICMP |
aléatoire | La règle est déclenchée (lorsque d'autres conditions coïncident) avec une probabilité donnée |
le temps | Vous pouvez spécifier les heures de travail de la règle, malheureusement sans conversion de date |
ttl | Valeur du champ ttl dans le package |
dscp | Valeur du champ DSCP (ToS) dans le paquet |
- // - | - // - |
lieu avant | Option de console (sans condition), vous permet d'ajouter une règle avant la spécification |
désactivé | Option de console (pas de condition), vous permet de désactiver la règle |
Remarques
En tant qu'adresse src. (Dst.), Vous pouvez spécifier: une seule adresse IP, une plage d'adresses via un trait d'union ou un sous-réseau.
Des listes d'adresses sont nécessaires pour combiner plusieurs adresses IP non connectées sous le même nom. Contrairement à l'ipset dans netfilter, les entrées dans les listes MikroTik peuvent être supprimées après une période de temps spécifiée. Vous pouvez afficher les listes et apporter des modifications dans [IP] -> [Pare-feu] -> [Listes d'adresses].
En tant que numéro de port (port, src-port, dst-port), vous pouvez spécifier un seul port, plusieurs ports séparés par des virgules ou une plage de ports via un trait d'union.
Lors du dernier MUM dans MSC, il y avait une bonne présentation sur l'effet de diverses conditions sur la vitesse de traitement des paquets (vous y apprendrez comment utiliser la table brute pour réduire la charge sur le routeur), qui s'intéressent à: l' enregistrement et la présentation .
Actions sur les tableaux
L'ensemble des actions disponibles sur le package dépend de la table dans laquelle il est traité.

Filtre - table de filtrage du trafic, l'un des deux endroits où vous pouvez déposer le paquet.
NAT - table pour modifier les adresses IP et les ports (tpc, udp) dans l'en-tête du paquet ip.
Mangle - un tableau pour modifier d'autres champs du paquet ip et définir diverses étiquettes.

Il existe trois types d'étiquettes de paquets internes: connexion, paquet, route. Les étiquettes n'existent que dans le routeur et ne vont pas au réseau. Un paquet peut avoir une étiquette de chaque type, tout en passant plusieurs règles mark- * dans l'ordre, les étiquettes sont écrasées.
Les étiquettes de route ne peuvent être définies que dans les chaînes de pré-routage et de sortie, le reste dans toutes les chaînes.
Il est recommandé de marquer d'abord la connexion, puis le paquet (paquet) ou l'itinéraire (route). La vérification des étiquettes est plus rapide que les champs de paquets. En pratique, ce n'est pas toujours le cas dans les files d'attente complexes ou un marquage supplémentaire pbr de la connexion n'est pas utile.
RAW - une table qui permet aux paquets de contourner le traqueur de connexion. Il est utilisé pour contrer DoS et réduire la charge sur le processeur (par exemple, en contournant le trafic de multidiffusion). Vous permet de laisser tomber le paquet.
Les actions de fin achèvent le traitement d'un paquet dans la chaîne et le transmettent au bloc suivant dans le flux de paquets, ou le jettent.
ActionsTable | Action | La description | Fin? |
---|
Tous | accepter | Arrêtez de traiter le paquet et transférez-le vers le bloc de flux Pakcet suivant | Oui |
Tous | journal | Informations sur le package de journaux. Dans les versions modernes, vous pouvez ajouter un journal à toute autre action. | Non |
Tous | passtrough | Comptez le nombre de paquets. Utilisé pour le débogage | Non |
Tous | ajouter src à la liste d'adresses et ajouter dst à la liste d'adresses | Ajouter l'adresse source (destination) du paquet à la liste donnée | Non |
Tous | sauter | Accéder à la chaîne d'utilisateurs | Oui |
Tous | retour | Retour à la chaîne parent. Dans les chaînes de base, cela fonctionne comme accepter | Oui |
Filtre et brut | laisser tomber | Arrêter le flux de paquets sur le flux de paquets et les supprimer | Oui |
Filtre et pré-routage | fasttrack | Paquet de drapeau pour un flux de paquets rapide | Oui |
Filtrer | rejeter | Comme drop, mais un expéditeur de paquet reçoit une notification (tcp ou icmp) concernant le paquet abandonné | Oui |
Filtrer | trapit | Émulez la présence d'un port ouvert. Utilisé pour la protection contre le DoS, les erreurs trompeuses et (parfois) le débogage | Oui |
NAT | src-nat | Substitution de l'adresse de l'expéditeur à l'adresse indiquée | Oui |
NAT | mascarade | Un cas particulier de src-nat, remplace l'adresse de l'expéditeur par l'une des adresses de l'interface, est utilisé sur les interfaces dynamiques (dhcp, vpn). Il n'est pas recommandé d'utiliser s'il y a plusieurs ip sur l'interface | Oui |
NAT | pareil | Un cas particulier de src-nat. Remplace l'adresse de l'expéditeur par une adresse de la plage spécifiée | Oui |
NAT | dst-nat | Remplace l'adresse du destinataire par l'adresse spécifiée | Oui |
NAT | rediriger | Un cas particulier de dst-nat, remplace l'adresse du destinataire par l'adresse de l'interface du routeur à laquelle le paquet est arrivé | Oui |
NAT | netmap | Pas un remplacement pour dst-nat. Utilisé pour la traduction de réseau à réseau, voir des exemples | Oui |
Mangle | marquer la connexion | Étiquette de connexion | Non |
Mangle | marquer le paquet | Étiquette de paquet appliquée dans les files d'attente | Non |
Mangle | marquer le routage | Étiquette de route appliquée dans le routage de base de stratégie | Non |
Mangle | changer ttl | Modifier ttl | Non |
Mangle | changer dcsp (tos) | Modifier la décimale dcsp | Non |
Mangle | changer mss | Changer mss en tcp syn | Non |
Mangle | clair df | Drapeau clair et non parfumé | Non |
Mangle | supprimer les options ipv4 | Effacer les options avancées d'ipv4 | Non |
Mangle | définir la priorité | Définir la priorité pour CoS | Non |
Mangle | route | Définissez la passerelle pour le paquet. Version simple de PBR | Non |
Mangle | sniff tzsp | Encapsuler les paquets dans udp et envoyer à l'IP spécifié | Non |
Mangle | renifler pc | Un analogue de tzsp, mais avec un type d'encapsulation différent. Dans wiki si cas d'utilisation avec calea | Non |
Mangle | passtrough | Par défaut, la plupart des règles de mangle n'empêchent pas le paquet de passer, vous pouvez changer ce comportement en définissant passtrough = no | Non |
Brut | notrack | Ne pas suivre le package dans le suivi des connexions | Oui |
S'il y en a qui le souhaitent, je peux en écrire plus sur FastTrack et FastPath, mais vous ne devriez pas vous attendre à des miracles de ces technologies.
Quelques mots sur DPI
Il existe plusieurs possibilités pour examiner le package un peu plus profondément que l'en-tête de la couche transport:
content - recherche une chaîne donnée dans un package.
layer7-protocol - met en mémoire tampon les 10 premiers paquets (ou 2 Ko) de la connexion et recherche l'expression rationnelle dans les données tamponnées. Un grand nombre de règles de layer7 affectent considérablement les performances.
tls-host est l'adresse du nom d'hôte dans l'en-tête TLS / SNI d'une connexion HTTPS.
Des exemples
Ne copiez pas les exemples sans réfléchir, il vaut mieux prendre l'appareil et essayer d'écrire la configuration vous-même (ou réécrire les exemples, mais pour comprendre ce que fait chacune des règles). Si vous ne savez pas comment compléter les règles: dans les configurations d'accueil par défaut et minimum, il n'y a pas d'accès au routeur depuis l'interface WAN, ajoutez-le avec filtrage par la liste d'adresses.
Pare-feu par défaut RouterOS
Une configuration assez sécurisée, mais par endroits très confuse:
/ip firewall filter # (established, related) (untracked) add action=accept chain=input connection-state=established,related,untracked # (invalid) add action=drop chain=input connection-state=invalid # icmp add action=accept chain=input protocol=icmp # add action=drop chain=input in-interface-list=!LAN # ipsec add action=accept chain=forward ipsec-policy=in,ipsec add action=accept chain=forward ipsec-policy=out,ipsec # add action=fasttrack-connection chain=forward connection-state=established,related # add action=accept chain=forward connection-state=established,related,untracked # add action=drop chain=forward connection-state=invalid # wan , dstnat (, src-nat dst-nat) add action=drop chain=forward connection-nat-state=!dstnat connection-state=new in-interface-list=WAN /ip firewall nat #Source NAT ipsec, WAN add action=masquerade chain=srcnat ipsec-policy=out,none out-interface-list=WAN
Je n'ai jamais utilisé la configuration par défaut, mais avant le pare-feu par défaut était bien pire.
Pare-feu domestique minimal
La chose la plus simple à trouver. Oui, le trafic non suivi n'y est pas autorisé (mais au stade de l'étude de base du pare-feu, vous n'en avez toujours pas besoin) et il y aura des problèmes avec tunnel ipsec (encore une fois, si vous pouvez configurer ipsec, vous savez vous-même ce qui doit être fait).
/ip firewall filter # (established, related) add chain=input connection-state=established,related action=accept # icmp add chain=input connection-state=new protocol=icmp action=accept # add chain=input connection-state=new in-interface-list=LAN action=accept # add chain=input action=drop # add chain=forward connection-state=established,related action=accept # add chain=forward connection-state=new in-interface-list=LAN action=accept # add chain=forward action=drop /ip firewall nat #Source NAT WAN add chain=srcnat out-interface-list=WAN action=masquerade
Exemple DMZ
Sur les routeurs "domestiques", l'acronyme DMZ aime appeler un ordinateur sur le sous-réseau local pour lequel tous les ports du réseau externe sont redirigés.
En fait, ce n'est pas le cas et l'une des options DMZ consiste à séparer la ressource à laquelle vous devez fournir l'accès à partir d'Internet et une attaque réussie peut être effectuée (un serveur Web avec cms dans lequel des trous sont constamment trouvés est une bonne cible pour un attaquant). En cas de piratage, un attaquant ne pourra pas affecter les participants du réseau local.

# /ip firewall nat add chain=dstnat dst-port=80,443 action=dst-nat to-address=192.168.200.2 /ip firewall filter # icmp add chain=input connection-state=established,related action=accept add chain=input protocol=icmp connection-state=new action=accept # add chain=input in-interface=ether2-lan action=accept # add chain=input action=drop # add chain=forward connection-state=established,related action=accept # add chain=forward in-interface=ether2-lan connection-state=new action=accept # web add chain=forward out-interface=ether3-dmz dst-address=192.168.200.2 dst-port=80,443 connection-state=new action=accept # add chain=forward action=drop
Épingle à cheveux NAT

/ip firewall nat add chain=dstnat dst-port=80 action=dst-nat to-address=192.168.100.2
Une situation typique est lorsque vous transférez un port vers un serveur sur un réseau local et que tout fonctionne de l'extérieur, mais à l'intérieur du réseau local, le serveur n'est pas accessible à une adresse externe.
Voyons ce qui se passe:
- L'ordinateur 192.168.100.10 envoie une demande à 192.0.2.100
- Il exécute DST-NAT sur le routeur et le paquet est transmis à 192.168.100.2
- Le serveur voit qu'un paquet de 192.168.100.10 lui est arrivé à l'adresse 192.168.100.2 et répond à partir de l'adresse locale
- L'ordinateur reçoit un paquet inattendu de 192.168.100.2 et le supprime.
La solution consiste à ajouter une règle supplémentaire qui modifie l'adresse source en adresse du routeur, afin que le serveur renvoie le paquet au routeur, qui l'enverra à l'ordinateur initialiseur.
/ip firewall nat # add chain=dstnat dst-port=80 action=dst-nat to-address=192.168.100.2 # , add chain=srcnat src-address=192.168.100.0/24 dst-address=192.168.100.2 action=masquerade
En pratique, ce schéma n'est pas souvent utilisé, mais comme exemple de débogage d'un pare-feu, j'aime beaucoup.
Utilisation appropriée de netmap

Netmap est une technologie permettant de traduire des adresses d'un sous-réseau en adresses d'un autre sous-réseau.
L'adresse IP (dans l'entrée de masque) se compose de deux parties: le réseau (le nombre de bits spécifié dans le masque de sous-réseau) et l'hôte (bits restants). Netmap modifie la partie réseau de l'adresse, mais ne touche pas la partie hôte.

Il y a deux routeurs connectés par un canal VPN. Les routeurs desservent des sous-réseaux avec le même adressage. Il est nécessaire de rendre l'accès entre les sous-réseaux.
Vous ne pouvez pas vous passer d’adressage supplémentaire.
Les utilisateurs du sous-réseau de gauche vont frapper vers la droite via le sous-réseau 192.168.102.0/24
Les utilisateurs du sous-réseau droit vont frapper vers la gauche via le sous-réseau 192.168.101.0/24
Configuration sur MikroTik 1.
# /ip route add distance=1 dst-address=192.168.102.0/24 gateway /ip firewall nat # add action=netmap chain=srcnat dst-address=192.168.102.0/24 out-interface=ipip src-address=192.168.100.0/24 to-address=192.168.101.0/24 # add action=netmap chain=dstnat dst-address=192.168.101.0/24 in-interface=ipip src-address=192.168.102.0/24 to-address=192.168.100.0/24
La configuration de MikroTik2 est presque la même:
/ip route add distance=1 dst-address=192.168.101.0/24 gateway=10.10.10.1 /ip firewall nat add action=netmap chain=srcnat dst-address=192.168.101.0/24 out-interface=ipip src-address=192.168.100.0/24 to-address=192.168.102.0/24 add action=netmap chain=dstnat dst-address=192.168.102.0/24 in-interface=ipip src-address=192.168.101.0/24 to-address=192.168.100.0/24
Il existe des configurations plus complexes utilisant netmap, par exemple, si vous avez de nombreuses connexions à des points distants avec des sous-réseaux qui se croisent et qu'il n'y a aucun moyen de modifier les paramètres sur l'équipement distant, mais c'est déjà un routage avancé.
Si vous ne comprenez rien (à propos de netmap), vous n'en avez pas besoin et n'utilisez simplement pas cette action lors du transfert de ports.