2.7.7.2. Configuración manual de una conexión IPsec de tipo red-a-red.
Suponga que
LAN A (lana.ejemplo.com) y
LAN B (lanb.ejemplo.com) quieren conectarse entre ellas mediante un túnel
IPsec. La dirección de red para
LAN A está en el rango 192.168.1.0/24. mientras qye
LAN B utiliza el rango 192.168.2.0/24. La dirección IP de la puerta de enlace es 192.1686.1.254 para
LAN A y 192.168.2.254 para
LAN B. Los enrutadores
IPsec están separados de cada puerta de enlace
LAN y utilizan dos dispositivos de red: eth0 está asignado a una dirección IP estática accesible desde el exterior que tiene acceso a Internet, mientras eth1 actúa como un punto de enrutamiento para procesar y transmitir los paquetes
LAN de un nodo de red a otro.
La conexión
IPsec entre cada red utiliza una clave pre-compartida con el valor de
r3dh4tl1nux
, y los administradores de A y B están de acuerdo en permitir que
racoon
genere automáticamente y comparta una clave de autenticación entre cada enrutador
IPsec. El administrador de
LAN A decide identificar a la conexión
IPsec como
ipsec0
, mientras que el administrador de
LAN B decide identificarla como
ipsec1
.
El siguiente ejemplo muestra los contenidos del archivo
ifcfg
para una conexión
IPsec de tipo red-a-red para
LAN A. El único nombre para identificar la conexión en este ejemplo es
ipsec0
, de modo que el archivo resultante es
/etc/sysconfig/network-scripts/ifcfg-ipsec0
.
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
La siguiente lista describe los contenidos de este archivo:
- TYPE=IPSEC
Especifica el tipo de conexión.
- ONBOOT=yes
Indica que la conexión debería iniciarse en el arranque.
- IKE_METHOD=PSK
Indica que la conexión utiliza el método de clave pre-compartida para su autenticación.
- SRCGW=192.168.1.254
La dirección IP de la puerta de enlace origen. Para LAN A, es la puerta de enlace de LAN A, y para LAN B, la puerta de enlace LAN B.
- DSTGW=192.168.2.254
La dirección IP de la puerta de enlace destino. Para LAN A, es la puerta de enlace de LAN B, y para LAN B, la puerta de enlace de LAN A.
- SRCNET=192.168.1.0/24
Indica la red de origen para la conexión
IPsec, que en nuestro ejemplo es el rango de red para LAN A.
- DSTNET=192.168.2.0/24
Indica la red destino para la conexión
IPsec, que en nuestro ejemplo, es el rango de red para
LAN B.
- DST=X.X.X.X
La dirección IP accesible desde el exterior de
LAN B.
El siguiente ejemplo es el contenido del archivo de clave pre-compartida denominado
/etc/sysconfig/network-scripts/keys-ipsecX
(donde
X
es 0 para
LAN A, y 1 para
LAN B), que utilizan ambas redes para autenticarse entre ellas. Los contenidos de este archivo deberían ser idénticos y solo el usuario root debería ser capaz de leer o escribir sobre este archivo.
IKE_PSK=r3dh4tl1nux
Importante
Para modificar el arhivo keys-ipsecX
de modo que solo el usuario root pueda leerlo o editarlo, utilice el siguiente comando luego de haberlo creado:
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
Para modificar la clave de autenticación en cualquier momento, edite el archivo
keys-ipsecX
en ambos enrutadores
IPsec.
Ambas claves deben ser idénticas para una conexión correcta.
En el siguiente ejemplo se muestran los contenidos del archivo de configuración
/etc/racoon/racoon.conf
para la conexión
IPsec. Fíjese que la línea
include
al final del archivo es generada automáticamente y solo aparece si el tunel
IPsec está ejecutándose.
# 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 siguiente es la configuración específica para la conexión con la red remota. El archivo es denominado
X.X.X.X
.conf
(donde
X.X.X.X
es la dirección IP del enrutador
IPsec remoto). Fíjese que este archivo es automáticamente generado cuando el túnel
IPsec es activado y no debería ser editado directamente.
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 ;
}
}
Antes de empezar la conexión
IPsec, debería ser habilitado el reenvío de IP en el kernel. Para hacerlo:
Edite el archivo /etc/sysctl.conf
y establezca net.ipv4.ip_forward
a 1
.
Use el siguiente comando para habilitar los cambios:
[root@myServer ~] # sysctl -p /etc/sysctl.conf
Para iniciar la conexión
IPsec, utilice el siguiente comando en cada enrutador:
[root@myServer ~] # /sbin/ifup ipsec0
Las conexiones están activas, y tanto
LAN A como
LAN B son capaces de comunicarse entre ellas. Las rutas fueron creadas automáticamente mediante la inicialización de un programa que fue activado al ejecutarse
ifup
en la conexión
IPsec. Para mostrar una lista de rutas para la red, utilice el siguiente comando:
[root@myServer ~] # /sbin/ip route list
Para verificar la conexión
IPsec, ejecute la herramienta
tcpdump
en el dispositivo enrutable externamente (en nuestro ejemplo, eth0) para ver los paquetes de red que están siendo transferidos entre los equipos (o redes) y verifique que estén encriptados mediante IPsec. Por ejemplo, para verificar la conectividad
IPsec de
LAN A, utilice el siguiente comando:
[root@myServer ~] # tcpdump -n -i eth0 host lana.ejemplo.com
El paquete debería incluir un encabezado AH y debería mostrarse como paquetes ESP. ESP significa que está encriptado. Por ejemplo (las líneas invertidas indican que la línea continúa):
12:24:26.155529 lanb.ejemplo.com > lana.ejemplo.com: AH(spi=0x021c9834,seq=0x358): \
lanb.ejemplo.com > lana.ejemplo.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \
(ipip-proto-4)