Differenza tra SNAT e Masquerade


39

Sono confuso qual è la differenza effettiva tra SNAT e Masquerade?

Se desidero condividere la mia connessione Internet sulla rete locale, se devo selezionare SNAT o Masquerade?

Risposte:


41

Il SNATtarget richiede di assegnargli un indirizzo IP da applicare a tutti i pacchetti in uscita. Il MASQUERADEtarget ti consente di dargli un'interfaccia e qualunque indirizzo sia su quell'interfaccia è l'indirizzo che viene applicato a tutti i pacchetti in uscita. Inoltre, con SNAT, il tracciamento delle connessioni del kernel tiene traccia di tutte le connessioni quando l'interfaccia viene rimossa e ripristinata; lo stesso non vale per il MASQUERADEbersaglio.

Buoni documenti includono gli HOWTO sul sito Netfilter e la iptablespagina man .


2
Ho difficoltà a comprendere i vantaggi di SNAT. Perché è importante se il kernel tiene traccia delle connessioni o meno quando l'interfaccia non funziona? Per quanto riguarda MASQUERADE, i documenti di netfilter dicono "Ma soprattutto, se il collegamento si interrompe, le connessioni (che ora vengono perse comunque) vengono dimenticate, il che significa meno problemi quando la connessione viene ripristinata con un nuovo indirizzo IP". Sembra ragionevole (anche se quali sono i difetti?) Ora guardando SNAT, quali sono i vantaggi del tracciamento delle connessioni perse? Perché non usare MASQUERADE ogni volta?
Carl G,

1
@CarlG, suppongo che si verificherebbero dei problemi con il tracciamento permanente -j SNAT(al contrario del tracciamento del riciclaggio con -j MASQUERADE) quando una nuova connessione in uscita da un nodo LAN utilizza lo stesso numero di porta di origine della connessione in uscita interrotta dallo stesso nodo LAN. In tal caso, posso immaginare che i pacchetti in arrivo dalla vecchia connessione in uscita vengano inviati al nodo, confondendo il suo stack TCP. Per quanto riguarda il vantaggio di -j SNAT, cosa succede se la NAT box è configurata con lo stesso indirizzo IP esterno e il kernel continua a inoltrare i pacchetti dalle vecchie connessioni invece di rispondere con RST?
anguilla ghEEz

SNAT è utile, se ad esempio hai più indirizzi IP assegnati all'interfaccia in uscita e desideri che la sorgente NAT sia una di queste.
pgoetz,

20

Fondamentalmente SNATe MASQUERADEfai la stessa cosa NAT sorgente nella tabella nat all'interno della catena POSTROUTING.

differenze

  • MASQUERADEnon richiede in --to-sourcequanto è stato progettato per funzionare con IP assegnati dinamicamente

  • SNAT funziona solo con IP statici, ecco perché --to-source

  • MASQUERADEha un sovraccarico extra ed è più lento rispetto a SNATquando ogni MASQUERADEtarget viene colpito da un pacchetto, deve controllare l'indirizzo IP da usare.

NOTA : un tipico caso d'uso per MASQUERADE: istanza AWS EC2 in un VPC, ha un IP privato all'interno del VPC CIDR (ad es. 10.10.1.0/24) - ad esempio 10.10.1.100, ha anche un IP pubblico per comunicare con Internet (supponiamo che sia in una sottorete pubblica) attraverso il quale il NAT privato 1: 1 NAT. L'IP pubblico può cambiare dopo il riavvio dell'istanza (se NON è un EIP), MASQUERADEè un'opzione migliore in questo caso d'uso.

Importante: è ancora possibile utilizzare la MASQUERADEdestinazione con IP statico, tenere presente l'overhead aggiuntivo.

Riferimenti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.