Différence entre SNAT et Masquerade

39

Je suis confus quelle est la différence réelle entre SNAT et Masquerade?

Si je souhaite partager ma connexion Internet sur un réseau local, dois-je choisir SNAT ou Masquerade?

Chankey Pathak
la source

Réponses:

41

La SNATcible nécessite que vous lui donniez une adresse IP à appliquer à tous les paquets sortants. La MASQUERADEcible vous permet de lui donner une interface, et quelle que soit l'adresse figurant sur cette interface, il s'agit de l'adresse qui est appliquée à tous les paquets sortants. De plus, avec SNAT, le suivi des connexions du noyau garde une trace de toutes les connexions lorsque l'interface est démontée et réactivée; le même n'est pas vrai pour la MASQUERADEcible.

Les bons documents incluent les HOWTO sur le site Netfilter et la iptablespage de manuel .

Shawn J. Goff
la source
2
J'ai du mal à comprendre les avantages de SNAT. Pourquoi est-il important que le noyau surveille les connexions ou non lorsque l'interface tombe en panne? En ce qui concerne MASQUERADE, la documentation de netfilter indique "Mais surtout, si le lien tombe en panne, les connexions (qui sont maintenant perdues de toute façon) sont oubliées, ce qui signifie moins de problèmes lorsque la connexion est restaurée avec une nouvelle adresse IP." Cela semble raisonnable (mais quels sont les problèmes?) Maintenant, regardons SNAT, quel est l'avantage de suivre les connexions perdues? Pourquoi ne pas utiliser MASQUERADE à chaque fois?
Carl G
1
@CarlG, je suppose que les problèmes se produiraient avec le suivi permanent -j SNAT(par opposition au suivi du recyclage avec -j MASQUERADE) lorsqu'une nouvelle connexion sortante à partir d'un nœud de réseau local utilise le même numéro de port source que la connexion sortante interrompue à partir du même nœud de réseau local. Dans ce cas, je peux imaginer que les paquets entrants provenant de l'ancienne connexion sortante soient envoyés au nœud, ce qui perturberait sa pile TCP. En ce qui concerne l'avantage de -j SNAT, que se passe-t-il si la boîte NAT est configurée avec la même adresse IP externe et si le noyau continue à transférer les paquets d'anciennes connexions au lieu de répondre avec RST?
anguille ghEEz
SNAT est utile si, par exemple, vous avez plusieurs adresses IP attribuées à l'interface sortante et que vous voulez que la source NAT en soit une particulière.
pgoetz le
20

Fondamentalement SNAT, MASQUERADEfaites le même NAT source dans la table nat de la chaîne POSTROUTING.

Différences

  • MASQUERADEne nécessite pas, --to-sourcecar il a été conçu pour fonctionner avec des adresses IP attribuées de manière dynamique

  • SNAT ne fonctionne qu'avec des adresses IP statiques, c'est pourquoi il a --to-source

  • MASQUERADEa une surcharge supplémentaire et est plus lent que SNATparce que chaque fois que la MASQUERADEcible est touchée par un paquet, elle doit vérifier l'adresse IP à utiliser.

REMARQUE : Un cas d'utilisation typique pour MASQUERADE: une instance AWS EC2 dans un VPC, elle possède une adresse IP privée dans le CIDR du VPC (par exemple, 10.10.1.0/24) - 10.10.1.100 par exemple, elle dispose également d'une adresse IP publique permettant de communiquer avec Internet (en supposant qu’il se trouve dans un sous-réseau public) via l’adresse IP privée 1: 1 NAT. L'IP publique peut changer après le redémarrage de l'instance (si ce n'est PAS un EIP), MASQUERADEest une meilleure option dans ce cas d'utilisation.

Important: Il est toujours possible d’utiliser MASQUERADETarget avec une adresse IP statique. Il suffit de prendre en compte la surcharge supplémentaire.

Les références

Terry Wang
la source