it-swarm-eu.dev

Rozdíl mezi SNAT a Maškarádou

Jsem zmatený, jaký je skutečný rozdíl mezi SNAT a Maškarádou?

Pokud chci sdílet své připojení k internetu v místní síti, pak zda mám vybrat SNAT nebo Masquerade?

40
Chankey Pathak

Cíl SNAT vyžaduje, abyste mu přidělili IP adresu, která se použije na všechny odchozí pakety. Cíl MASQUERADE vám umožňuje dát rozhraní a jakákoli adresa na tomto rozhraní je adresa, která je použita pro všechny odchozí pakety. Navíc s SNAT sledování připojení jádra sleduje všechna připojení, když je rozhraní odstraněno a přeneseno zpět; to samé neplatí pro cíl MASQUERADE.

Dobré dokumenty zahrnují HOWTOs na webu Netfilter a iptablesman stránka .

41
Shawn J. Goff

V podstatě SNAT a MASQUERADE dělají stejný zdroj NAT věc v tabulce nat v řetězci POSTROUTING).

Rozdíly

  • MASQUERADE nevyžaduje --to-source jak bylo vytvořeno pro práci s dynamicky přiřazenými IP

  • SNAT pracuje pouze se statickými IP, proto má --to-source

  • MASQUERADE má extra režii a je pomalejší než SNAT, protože pokaždé, když je cíl MASQUERADE zasažen paketem, musí zkontrolovat, zda se má použít IP adresa.

[~ # ~] note [~ # ~] : Typický případ použití MASQUERADE: AWS EC2 instance ve VPC, to má soukromou IP v rámci VPC CIDR (např. 10.10.1.0/24) - např. 10.10.1.100, má také veřejnou IP, aby mohla komunikovat s internetem (za předpokladu, že je ve veřejné podsíti), přes kterou soukromá IP 1: 1 NAT. Veřejná IP se může po restartování instance změnit (pokud nejde o EIP), MASQUERADE je v tomto případě použití lepší volbou.

Důležité: Stále je možné použít cíl MASQUERADE se statickou IP, jen si uvědomte další režii.

Reference

21
Terry Wang

Krátká odpověď: použijte SNAT

Vysvětlení: Právě jsem se pokusil odstranit maškarní pravidlo na mém raspbian routeru (který mluví s jiným routerem, přes eth0, kde IP adresa rozhraní je 192.168.8.2 a je statická) a sdílení internetu pokračovalo v práci. Příkazy, které jsem zkusil, byly:

iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.8.2
0
Rebroad