IPsec può essere anche configurato per collegare una rete intera (come ad esempio una LAN o WAN), ad una rete remota tramite un collegamento network-to-network. Un collegamento network-to-network necessita di una impostazione del router IPsec su ogni lato delle reti collegate, in modo da processare e direzionare le informazioni da un nodo su di una rete, ad un nodo su di una rete remota. Figura 6-2 mostra un collegamento IPsec network-to-network 'tunneled'.
Il diagramma mostra due LAN separate, divise da Internet. Queste reti usano router IPsec per l'autenticazione e l'inizializzazione di un collegamento usando un tunnel sicuro attraverso Internet. I pacchetti intercettati in transito, richiedono una decodifica forzata per poter essere decifrati e per vincere la protezione dei pacchetti tra queste LAN. Il processo di comunicazione da un nodo sulla gamma IP 192.168.1.0/24 ad un altro su 192.168.2.0/24, è completamente trasparente ai nodi, in quanto il processo di codifica/decodifica, e del routing dei pacchetti IPsec, viene gestito completamente dal router IPsec.
Le informazioni necessarie per un collegamento network-to-network includono:
Gli indirizzi IP accessibili-esternamente dei router IPsec appositi
L'indirizzo della rete della LAN/WAN servito dai router IPsec può variare da (192.168.0.0/24 o 10.0.1.0/24)
Gli indirizzi IP dei dispositivi del gateway che dirigono i dati dai nodi della rete ad Internet
Un nome unico per identificare il collegamento IPsec e distinguerlo da altri dispositivi o collegamenti (per esempio, ipsec0)
Una chiave di cifratura fissa o una generata automaticamente da racoon
Una chiave di autenticazione pre-condivisa, usata per iniziare il collegamento e scambiare le chiavi di cifratura durante la sessione
Per esempio, supponiamo che LAN A (lana.example.com) e LAN B (lanb.example.com) vogliono collegarsi tra di loro attraverso un tunnel IPsec. L'indirizzo della rete per la LAN A rientra nella gamma 192.168.1.0/24, mentre LAN B usa la gamma 192.168.2.0/24. L'indirizzo IP del gateway è 192.168.1.254 per LAN A e 192.168.2.254 per LAN B. I router IPSEC sono separati da ogni gateway LAN e usano due dispositivi della rete: ad eth0 viene assegnato un indirizzo IP statico accessibile-esternamente il quale ha accesso ad Internet, mentre eth1 si comporta come un punto di direzionamento per processare e trasmettere i pacchetti LAN da un nodo della rete ai nodi della rete remota.
Il collegamento IPsec tra ogni rete usa una chiave pre-condivisa con il valore r3dh4tl1nux, e gli amministratori di A e B concordano nel generare automaticamente racoon e condividere una chiave di autenticazionetra ogni router IPsec. L'amministratore della LAN A decide di chiamare il collegamento IPSEC ipsec0, mentre l'amministratore della LAN B chiama il collegamento IPSEC ipsec1.
Il seguente rappresenta un file ifcfg per un collegamento IPsec network-to-network per LAN A. Il nome unico per identificare il collegamento in questo esempio è ipsec1, in questo modo il file risultante viene chiamato /etc/sysconfig/network-scripts/ifcfg-ipsec1.
TYPE=IPsec ONBOOT=yes IKE_METHOD=PSK SRCGW=192.168.1.254 DSTGW=192.168.2.254 SRCNET=192.168.1.0/24 DSTNET=192.168.2.0/24 DST=X.X.X.X |
Il collegamento è impostato in modo tale da iniziare al momento dell'avvio (ONBOOT=yes), e usa il metodo della chiave pre-condivisa di autenticazione (IKE_METHOD=PSK). L'amministratore per LAN A inserisce il gateway di destinazione, il quale è il gateway per LAN B (DSTGW=192.168.2.254) ed anche il gateway sorgente, il quale è l'indirizzo IP gateway per LAN A (SRCGW=192.168.1.254). L'amministratore inserisce successivamente la rete di destinazione, la quale rappresenta la gamma della rete per LAN B (DSTNET=192.168.2.0/24) ed anche la rete sorgente (SRCNET=192.168.1.0/24). Per finire, inserisce l'indirizzo IP di destinazione, il quale è l'indirizzo IP accessibile-esternamente per LAN B (X.X.X.X).
Il seguente è il file della chiave pre-condivisa (chiamata /etc/sysconfig/network-scripts/keys-ipsecX dove X è 0 per LAN A e 1 per LAN B) che entrambe le reti usano per la propria autenticazione. I contenuti di questo file dovrebbero essere identici, e solo l'utente root dovrebbe essere in grado di leggere e scrivere questo file.
IKE_PSK=r3dh4tl1nux |
![]() | Importante | |
---|---|---|
Per cambiare il file keys-ipsec0 in modo che solo l'utente root lo possa leggere o modificare, eseguire il seguente comando dopo aver creato il file:
|
Per cambiare la chiave di autenticazione in ogni momento, modificare il file keys-ipsecX su entrambi i router IPsec. Entrambe le chiavi devono essere identiche per una connettività corretta.
Il seguente rappresenta un file di configurazione /etc/racoon/racoon.conf per un collegamento IPsec. Da notare che la riga include in basso nel file, appare solo se collegata al tunnel IPsec, in quanto viene generata automaticamente ogni volta che il collegamento IPsec viene attivato.
# Racoon IKE daemon configuration file. # See 'man racoon.conf' for a description of the format and entries. path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; sainfo anonymous { pfs_group 2; lifetime time 1 hour ; encryption_algorithm 3des, blowfish 448, rijndael ; authentication_algorithm hmac_sha1, hmac_md5 ; compression_algorithm deflate ; } include "/etc/racoon/X.X.X.X.conf" |
La seguente rappresenta una configurazione specifica per il collegamento ad una rete remota. Il file viene chiamato X.X.X.X.conf (sostituire X.X.X.X con l'indirizzo IP del router IPsec remoto). Nota bene che questo file viene generato automaticamente una volta attivato il tunnel IPsec, e non deve essere modificato direttamente.
; remote X.X.X.X { exchange_mode aggressive, main; my_identifier address; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2 ; } } |
Prima di iniziare il collegamento IPsec, bisogna abilitare l'inoltro IP nel kernel. Come utente root ad un promt della shell, abilitare l'inoltro IP:
Modificare /etc/sysctl.conf e impostare net.ipv4.ip_forward su 1.
Eseguire il seguente comando per confermare i cambiamenti:
sysctl -p /etc/sysctl.conf |
Per iniziare il collegamento IP, riavviare i router IPsec, o eseguire il seguente comando come utente root su ogni router:
/sbin/ifup ipsec0 |
I collegamenti vengono attivati e sia LAN A che LAN B possono comunicare tra di loro. I router sono creati automaticamente tramite lo script di inizializzazione richiamato eseguendo ifup sul collegamento IPsec. Per visualizzare un elenco dei router per la rete, eseguire il seguente comando:
/sbin/ip route list |
Per provare il collegamento IPsec, eseguire la utility tcpdump sul dispositivo direzionabile-esternamente (eth0 in questo esempio) per visualizzare così i pacchetti della rete durante il loro trasferimento tra gli host (o tra le reti), e verificare che essi vengano cifrati tramite IPsec. Per esempio, per controllare la connettività IPsec di LAN A, digitare quanto segue:
tcpdump -n -i eth0 host lana.example.com |
Il pacchetto dovrebbe includere un testo AH e dovrebbe essere visualizzato come dei pacchetti ESP. ESP significa che il pacchetto è stato cifrato. Per esempio (i caratteri con una barra /, denotano la continuazione di una riga):
12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \ lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \ (ipip-proto-4) |