Avanti Indietro Indice

22. Masquerading, port forwarding

22.1 Masquerading

Il mascheramento (masquerading) è una tecnica con cui il primo pacchetto di una connessione provenienti dalla rete locale e diretto verso ad esempio internet, subisce da parte del firewall una modifica del campo source address (indirizzo sorgente) presente nell'intestazione IP, in modo che il pacchetto e i successivi sembreranno provenire dal firewall e non dalla macchina della rete locale, nascondendone così l'esistenza.

Questa tecnica si utilizza in quanto spesso si possiede un unico indirizzo IP statico (registrato), ma si desidera utilizzarlo con tutte le macchine della propria rete locale ad esempio per collegarsi ad internet. Senza il mascheramento ciò non sarebbe possibile, bisognerebbe infatti registrare un indirizzo statico per ogni macchina della propria rete locale (scomodo e costoso).

            +---+
192.168.1.5 |PC1|----+                          
            +---+    |                      
                     |                     
            +---+    |       +---+        
            |MAC|----+-------|   |-MASQ--+  INTERNET
            +---+    |       +---+        
                     |    151.99.180.5     
            +---+    |                       
            |PC2|----+                         
            +---+
             LAN            Linux box         Internet
                          [ firewall ] 

Nell'esempio supponiamo che la macchina PC1 voglia iniziare una connessione con www.kernelnotes.org, quindi invierà un pacchetto che avrà nell'intestazione le seguenti informazioni:

indirizzo IP sorgente       192.168.1.5    (indirizzo di PC1)
indirizzo IP destinazione   192.130.8.25   (ossia www.kernelnotes.org)

   +---+     +---+     +---+
   |PC1| --->|FW |     |KER|
   +---+     +---+     +---+
          [firewall]

Quando il pacchetto giunge al firewall, se abbiamo impostato una regola di mascheramento l'intestazione del pacchetto subirà la seguente modifica:

indirizzo IP sorgente       151.99.180.5   (indirizzo IP del firewall)
indirizzo IP destinazione   192.130.8.25   (www.kernelnotes.org)

   +---+     +---+     +---+
   |PC1|     |FW | --->|KER|
   +---+     +---+     +---+
          [firewall]

E quindi verrà spedito nella rete. Nota che quando arriverà da www.kernelnotes.org il pacchetto di risposta, questo avrà nell'intestazione le seguenti informazioni:

indirizzo IP sorgente       192.130.8.25   (www.kernelnotes.org)
indirizzo IP destinazione   151.99.180.5   (indirizzo IP del firewall)

   +---+     +---+     +---+
   |PC1|     |FW |<--- |KER|
   +---+     +---+     +---+
          [firewall]

A questo punto si nota che il pacchetto è destinato al firewall, ma in realtà deve arrivare a PC1! Nessun problema in quanto il firewall tiene traccia dei pacchetti inviati e mascherati, quando arriva il pacchetto di risposta, il firewall provvederà automaticamente a identificarlo, a modificare l'intestazione e a inviarlo a PC1, in questo modo tutto funziona correttamente.

Gran parte del lavoro viene effettuato da netfilter e dai moduli, in modo trasparente all'utente.

22.2 Port-forwarding, load-balancing, proxy trasparente

In molti casi invece si ha la necessità di cambiare dove i pacchetti sono destinati, ad esempio potremmo creare una rete con diversi server tra cui uno web e uno mail.

          +---+
          |PC1|----+                    
          +---+    |                    
                   |     Linux box
          +---+    |       +---+        
          |MAC|----+-------|PC0|---------- INTERNET
          +---+    |       +---+        
                   |         |           
          +---+    |         | +---+
          |PC2|----+         +-|WWW|
          +---+              | +---+
                             | +----+
                             +-|MAIL|
                               +----+

             LAN            SERVERS       Internet
        [rete locale]  
   

Come abbiamo visto abbiamo un solo indirizzo statico (151.99.180.5) ora però vogliamo che dall'esterno i nostri utenti possano accedere al nostro WWW server, in questo caso tutti i pacchetti saranno destinati al firewall (PC0), che dovrà quindi dirottarli rispettivamente al WWW server, se sono pacchetti www, o al server MAIL se sono pacchetti smtp.

Per ottenere ciò è necessario che il firewall modifichi l'indirizzo di destinazione dei pacchetti con quello del server corrispondente.

          +---+
          |PC1|----+                          
          +-- +    |                      
                   |     Linux box
          +---+    |       +---+<=========
          |MAC|----+-------|PC0|---------- INTERNET
          +---+    |       +---+        
                   |      !! |           
          +---+    |      !! | +---+
          |PC2|----+      !>>+-|WWW|
          +---+              | +---+
                             | +----+
                             +-|MAIL|
                               +----+

             LAN            SERVERS       Internet
        [rete locale]  
    

In altri casi si può desiderare di distribuire il traffico web su diversi server WWW (load-balancing), in altri ancora semplicemente inviare i pacchetti su porte differenti (proxy trasparente). Tutte queste operazioni richiedono la modifica dell'indirizzo destinazione dei pacchetti, che con netfilter si realizzano utilizzando l'obiettivo DNAT.


Avanti Indietro Indice