risposta-alla-domanda-sullo-sviluppo-web-bd.com

Differenza tra SNAT e Masquerade

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?

40
Chankey Pathak

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 .

41
Shawn J. Goff

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

21
Terry Wang

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
0
Rebroad