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?
La destinazione SNAT
richiede di assegnargli un indirizzo IP da applicare a tutti i pacchetti in uscita. Il target MASQUERADE
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 target MASQUERADE
.
Buoni documenti includono HOWTO sul sito Netfilter e iptables
man page .
Fondamentalmente SNAT
e MASQUERADE
fanno la stessa fonte NAT cosa nella tabella nat all'interno della catena POSTROUTING.
Differenze
MASQUERADE
non richiede --to-source
poiché è stato progettato per funzionare con IP assegnati dinamicamente
SNAT
funziona solo con IP statici, ecco perché ha --to-source
MASQUERADE
ha un sovraccarico extra ed è più lento di SNAT
perché ogni volta che la destinazione MASQUERADE
viene colpita da un pacchetto, deve controllare l'indirizzo IP da usare.
[~ # ~] note [~ # ~] : 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 in modo da comunicare con Internet (supponiamo che si trovi in una sottorete pubblica) attraverso il quale l'IP privato NAT 1: 1. 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 MASQUERADE
target con IP statico, tenere presente l'overhead aggiuntivo.
Riferimenti
Risposta breve: utilizzare SNAT
Spiegazione: Ho appena provato a rimuovere la regola del travestimento sul mio router raspbian (che parla a un altro router, tramite eth0 dove l'indirizzo IP delle interfacce è 192.168.8.2 ed è statico) e la condivisione di Internet ha continuato a funzionare. I comandi che ho provato sono stati: -
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.8.2