Newsgroup: it.comp.os.openbsd
Titolo: NAT su IPSEC con OpenBSD/pf/isakmpd - NAT-IPSEC-OpenBSD.it.txt (1/1)


Lo scenario di riferimento è il seguente:
Sede1 deve creare un tunnel IPSEC verso Sede2.
Sede1 usa la rete 
192.168.0.0/24
, ma Sede2 ha già un tunnel verso Sede3 che
usa a sua volta la rete 
192.168.0.0/24
.
Diventa quindi necessario applicare la NAT ai pacchetti che da Sede1 vanno
verso Sede2 sul tunnel IPSEC.
Definiamo:
Internal LAN: 
192.168.0.0/24
RemoteLAN: 
192.168.3.0/24
Indirizzi per la NAT: 
192.168.113.0/24
In prima battuta si potrebbe pensare di applicare la NAT all'interfaccia enc0,
ma i pacchetti che hanno come source address un indirizzo della rete
192.168.0.0/24
 non passano attraverso enc0 in quanto le policy IPSEC non lo
consentono. Potremmo pensare di aggiungere a mano un flusso che consideri i
pacchetti da 
192.168.0.0/24
, come qualcuno ha suggerito su alcuni forum, ma
non sembra funzionare, almeno su versioni recenti di OpenBSD (sono state usate
3.6 e 3.8). Per di più l'interfaccia enc0 è presente solo su OpenBSD, ma non
sugli altri *BSD su cui è stato portato pf.
In seconda battuta si potrebbe applicare la NAT all'interfaccia interna del
firewall, ma ciò non funziona sebbene la NAT venga applicata ai
pacchetti che passano "attraverso" l'interfaccia, in sostanza ai pacchetti in
uscita da un'interfaccia. Sperimentalmente si ha che la NAT viene applicata
solo in uscita dal firewall.
La soluzione trovata è quella di avere, appunto, un intefaccia attraverso cui
tutti i pacchetti passino, ma che non sia ne l'interfaccia interna ne
l'interfaccia enc0.
Si tratta quindi di creare una loopback interface a cui assegnamo l'indirizzo
su cui fare la NAT. Per forzare i pacchetti a passare attraverso questa
interfaccia definiremo una route statica con destinazione la rete privata di
Sede2, attraverso l'indirizzo dato alla loopback interface. In pratica, uno
schema semplice è:
Internal->R->Loopback->NAT->IPSEC->External->RemoteGW->RemoteLAN
Dove R è il motore di routing, NAT il motore di NAT ed IPSEC il motore di
cifratura.
Si avrà:
ifconfig lo1 192.168.113.254
route add 
192.168.3.0/24
 192.168.113.254
in pf.conf
# NAT selettiva
nat on lo1 from 
192.168.0.0/24
 to 
192.168.3.0/24
 -> 192.168.113.254
Ovviamente, configureremo isakmpd o ipsecctl o ipsecadm per creare i flussi
tra le reti 
192.168.113.0/24
 e 
192.168.3.0/24
 dato che tutto il traffico fluirà
tra questi indirizzi.
In questo modo la nostra rete può raggiungere l'altra rete mediante l'utilizzo
di un singolo indirizzo IP (192.168.113.254). Ma cosa dobbiamo fare se abbiamo
bisogno di fornire servizi a Sede2, oppure se vogliamo tenere traccia di chi
accede alle risorse di Sede2?
Se configuriamo lo1 con il flag link1 attivo:
ifconfig lo1 
192.168.113.254/24
 link1
la documentazione cita:
"Configuring a loopback interface for inet(4) with the link1 flag set will
make the interface answer to the whole set of addresses identified as being in
super-net which is specified by the address and netmask"
Adesso lo1 risponde a tutti gli indirizzi della rete 
192.168.113.0/24
 (nel
nostro esempio) così possiamo cambiare la regola di nat in:
binat pass on lo1 from 
192.168.0.0/24
 to 
192.168.3.0/24
 -> 
192.168.113.0/24
così facendo abbiamo creato una mappatura 1-a-1 tra la rete 
192.168.0.0/24
 e
la rete 
192.168.113.0/24
.
Se non vogliamo una mappatura 1-a-1, ma abbiamo necessità di fornire servizi
alla rete 
192.168.3.0/24
 possiamo usare una regola di rdr come:
rdr pass on lo1 proto tcp from 
192.168.3.0/24
 to 192.168.113.1 port 110 -> 192.168.0.1 port 110

applausi, applausi per Andrea...

applausi, applausi per Andrea...
quoto.  
Troppa gente su openbsd si tiene per se quello che sa'.
La comunita' Linux da questo punto di vista e' ben diversa.
my 2 cents

 OpenBSD, non ha mai nemmeno cercato niente e spara fregnacce a vanvera..
vai spara io conosco lucky.openbsd   fa.www.openbsd e questa, mentre tu
da dove attingi info?
e tanto che ci sono consiglio: 
http://openbsd.nu/links.php
 per i
maggiori link ai siti.

Mink, proprio un sito svedese... io ho di meglio..
allora postalo, qui non si chiede che di imparare.

Non c'è motivo di essere volgari.
-- 
"Guerra nel Libano. Israele non risparmia sulle bombe.
Stupore nel mondo: o che Ebrei sono?!"
(Il Vernacoliere)
http://spookyh.altervista.org


Lo sanno tutti che se ti rincoglionisci due ore con ricerche e crawler
scavi e trovi il mondo ma non tutti hanno voglia o tempo.
Il sito svedese l'ho consigliato per i linki aggiornati e basta.
Il tempo che eri qua a tirarci le storie avevi pubblicato qualcosa in
questa mailing list a tema che rimaneva come reminder per tutti e che
non e' il messaggio automatico di fine mese, tutto qua.

Thorin Oakenshield ha scritto:
camminando in un vicolo per tornare a casa incontrai un muro parlante.
26 settembre 2006

 La comunita' Linux da questo punto di vista e' ben diversa.
Ovvio. Su OpenBSD c'e' documentazione e ben fatta. Su Linux c'e'
un marasma che la meta' basterebbe.
-- 
Hi, I'm a .signature virus! Copy me to your .signature file and
help me propagate, thanks!

 un marasma che la meta' basterebbe.
questo e' verissimo! il sacro man e' il mio occhio sulla conoscenza di
questo bellissimo sistema operativo... peccato che il riverbero era
nato da una proposta di postare i link o mailing list che conoscevamo
su obsd, perche' in effetti essi sono dinamici e non tutti facilmente
trovabili. Anche se come diceva il saccente thorin basta un google per
avere pane a sufficienza per i propri denti.

 avere pane a sufficienza per i propri denti.
Ha ragione. basta iscriversi alle ml ufficiali di openbsd :)


 stato bocciato all'esame per troll del Cepu.
siii daii, tu invece sei stato assimilato dal lato oscuro della forza e
piu' ti sforzi a dire fesserie piu' ti cresce il QI...
cmq io non e' che non ho niente da fare, anzi tuttaltro. Semmai e' una
resistenza che ho a tutto quello che faccio e che metto in un pozzo di
cui non si vede il fondo.....