Capire l’ordine in cui vengono applicate le regole di NAT e di filtraggio è importante quando si configura il firewall.
In questo articolo viene illustrato l’ordine in cui pfSense applica le regole di filtraggio, traduzione delle porte e NAT e l’impatto che questo ha sul modo in cui scriviamo le nostre regole.
1.Ordine di lavorazione – schema generale
Poiché un buon diagramma è spesso più informativo di un lungo testo, l’ordine in cui i pacchetti di rete vengono elaborati da pfSense può essere riassunto come segue:

Questo diagramma mostra il percorso seguito dal traffico in uscita (che lascia la rete locale per andare in Internet) e dal traffico in entrata (da Internet alla rete locale o a una DMZ///<<< METTRE LIEN WIKI ITALIEN DMZ /////). Il percorso è esattamente lo stesso in entrambe le direzioni.
Per ogni fase, se non esiste alcuna regola, questa viene semplicemente ignorata e pfSense passa alla fase successiva.
Prendiamo il caso di un pacchetto di rete che lascia la LAN per andare in Internet. Seguendo i numeri del nostro diagramma, l’ordine di elaborazione dettagliato è il seguente:
- tcpdump: eseguito sull’interfaccia LAN (accessibile tramite lo strumento “Packet Capture” nel menu “Diagnostics” di pfSense). Quando la cattura viene eseguita sull’interfaccia LAN (per un pacchetto in uscita dalla LAN verso Internet), pfSense non ha ancora eseguito alcuna elaborazione (NAT, filtraggio, routing, ecc.). Pertanto, si cattura il pacchetto “grezzo” così come viene inviato dal computer. I dettagli sul funzionamento dello strumento di Packet Capture saranno trattati in un articolo successivo.
- Port forward o NAT 1:1 configurato sull’interfaccia LAN. Raramente si configurano port forwarding (port forward) o regole NAT 1:1 sull’interfaccia LAN, ma ci si imbatte in regole NAT equivalenti quando si utilizzano proxy o reindirizzatori DNS. In questi casi, si parla anche di “DNAT” per Destination NAT; in altre parole, regole NAT che si applicano in relazione all’indirizzo IP di destinazione.
- Regole di filtraggio configurate per l’interfaccia LAN. Le regole di filtraggio vengono applicate nel seguente ordine: regole floating, regole di gruppo di interfaccia e infine regole per l’interfaccia stessa.
- 1:1 NAT o regole Outbound NAT in uscita configurate sull’interfaccia WAN. In questo caso, si parla di “SNAT” per Source NAT, cioè di regole NAT che si applicano in relazione all’indirizzo IP di origine. È in questa fase che il pacchetto di rete assume l’indirizzo IP dell’interfaccia WAN di pfSense come indirizzo IP di origine.
- Regole di filtro floating in direzione “out” per l’interfaccia WAN. Questo è un caso molto specifico. Per l’uso di base, è raramente utilizzato. Queste regole fluttuanti possono essere molto utili quando si vuole configurare la prioritizzazione del traffico in un ambiente multi-VLAN. Si tenga presente che in questa fase è già stato applicato l’Outbound NAT e quindi gli indirizzi IP di origine dei pacchetti non sono più gli indirizzi IP privati della LAN, ma l’indirizzo IP dell’interfaccia WAN (o quello configurato nelle regole Outbound NAT).
- tcpdump: eseguito sull’interfaccia WAN. In questa fase, tutta l’elaborazione è stata effettuata da pfSense (NAT, filtraggio, instradamento, ecc.). Pertanto, il pacchetto viene catturato mentre viene trasmesso a Internet (o al router dell’operatore, ad esempio).
Lo strumento tcpdump è sempre il primo e l’ultimo a vedere il traffico, a seconda dell’interfaccia su cui viene eseguito e della direzione del traffico.
Ad esempio, nel caso di traffico dalla LAN alla WAN, un tcpdump eseguito sull’interfaccia LAN vedrà i pacchetti di rete così come vengono inviati dal computer.
Un tcpdump eseguito sull’interfaccia WAN vedrà i pacchetti modificati da pfSense mentre vengono trasmessi da pfSense.
Si tratta quindi di uno strumento diagnostico molto pratico per monitorare l’instradamento e l’elaborazione dei pacchetti di rete.
Il nostro esempio si basa su una semplice architettura con un’interfaccia LAN e una WAN. Il principio di funzionamento è esattamente lo stesso per un’architettura con un numero maggiore di interfacce di rete. I passaggi seguiti saranno sempre gli stessi.
2.Impatto sulla configurazione delle regole
Quindi, per una determinata interfaccia, le regole NAT si applicano sempre prima delle regole di filtraggio. Per questo motivo è necessario adattare le regole di filtraggio con gli indirizzi IP di origine/destinazione corretti.
Facciamo un esempio: vogliamo reindirizzare il traffico che arriva sulla porta 80 dall’indirizzo IP pubblico del nostro firewall alla porta 80 di un server locale. Il diagramma di rete si presenta come segue:

In questo esempio, creeremo una regola di port forwarding dal menu Firewall > NAT, quindi dalla scheda Port Forward (scheda predefinita) :

Clicchiamo sul pulsante “Add”; i campi da compilare sono i seguenti:
- Disabled: disattiva la regola senza eliminarla. Si lascia questa casella deselezionata.
- No RDR (NOT): disabilita il reindirizzamento del traffico corrispondente a questa regola. Questa opzione sarà usata molto poco nella pratica. Preferiamo filtrare/raffinare le nostre regole di reindirizzamento usando le regole di filtro.
- Interface: l’interfaccia di arrivo dei pacchetti. Nel nostro esempio, si tratta dell’interfaccia WAN.
- Protocol: il protocollo coinvolto. Nel nostro esempio, abbiamo scelto TCP.
- Source: raramente è necessario specificare la sorgente di un port forwarding per il traffico in entrata. Lasciamo questi campi vuoti.
- Destination: l’indirizzo IP di destinazione su cui arriva il traffico esterno. Nel nostro caso, si tratta dell’indirizzo IP della nostra WAN. Scegliamo quindi “WAN Address”.
- Destination port range: la porta di rete di destinazione. Nel nostro caso, desideriamo reindirizzare il traffico che arriva sulla porta 80. Possiamo scegliere “HTTP” dall’elenco a discesa o scegliere “Other” e inserire 80 nel campo Custom.
- Redirect target IP: è l’indirizzo IP privato verso il quale si desidera reindirizzare il traffico. Nel nostro esempio: 192.168.1.10.
- Redirect target port: la porta di ascolto sul computer locale. In genere si tratta della stessa porta indicata in precedenza. Nel nostro caso “HTTP”.
- Description: campo puramente informativo.
- No XMLRPC Sync: selezionare questa casella se non si desidera che questa regola sia sincronizzata con altri membri CARP.
- NAT reflection: si tratta di una modalità avanzata che consente a un client interno di accedere a una risorsa interna tramite il suo indirizzo IP esterno. Poiché il nostro esempio non contempla questo utilizzo, abbiamo lasciato il valore predefinito, “Use system default”, che equivale a scegliere “Disable”.
- Filter rule association: questa opzione consente a pfSense di generare la regola filtro necessaria per il funzionamento del port forwarding. Per un utente avanzato, si consiglia di selezionare “None” e di configurare personalmente la regola di filtro, in modo da essere sicuri di posizionarla nel punto desiderato tra le altre regole e di personalizzarla se necessario. Per semplicità, nel nostro esempio lasceremo la scelta predefinita “Add associated filter rule”.
Esempio del risultato ottenuto:

Sulla nostra interfaccia WAN è stata creata una regola (se abbiamo scelto “None” per l’opzione di Filter rule association, è necessario creare questa regola da soli):

Possiamo notare che l’indirizzo IP di destinazione della nostra regola di filtraggio è l’indirizzo IP privato (qui, 192.168.1.10). Il motivo è che il NAT viene applicato prima del filtraggio. Pertanto, l’indirizzo IP di destinazione del pacchetto di rete è stato modificato dal firewall e corrisponde in questa fase all’indirizzo IP privato di destinazione. Il filtraggio deve quindi essere applicato all’indirizzo IP privato di destinazione.
Dobbiamo ancora ricordarci di fare clic su “Apply Changes” sia nella pagina di gestione delle regole di filtraggio che in quella delle regole NAT.
Il port forwarding è ora attivo.
Ora sapete esattamente come pfSense elabora i pacchetti di rete (NAT, filtraggio, routing, ecc.).
In un prossimo articolo, esamineremo il potente strumento di “packet capture” integrato in pfSense e la metodologia che suggeriamo per utilizzarlo per effettuare analisi di rete.
Per saperne di più