3.6. Configurar una VPN de malla
Una red VPN en malla, que también se conoce como VPN any-to-any, es una red en la que todos los nodos se comunican utilizando IPsec. La configuración permite excepciones para los nodos que no pueden utilizar IPsec. La red VPN en malla puede configurarse de dos maneras:
-
Requerir
IPsec. -
Para preferir
IPsec, pero permitir una vuelta a la comunicación en texto claro.
La autenticación entre los nodos puede basarse en certificados X.509 o en extensiones de seguridad DNS (DNSSEC).
El siguiente procedimiento utiliza certificados X.509. Estos certificados pueden generarse utilizando cualquier tipo de sistema de gestión de autoridades de certificación (CA), como el sistema de certificados Dogtag. Dogtag asume que los certificados de cada nodo están disponibles en el formato PKCS #12 (archivos .p12), que contienen la clave privada, el certificado del nodo y el certificado de la CA Raíz utilizado para validar los certificados X.509 de otros nodos.
Cada nodo tiene una configuración idéntica con la excepción de su certificado X.509. Esto permite añadir nuevos nodos sin reconfigurar ninguno de los existentes en la red. Los archivos PKCS #12 requieren un "nombre amistoso", para el que utilizamos el nombre "nodo", de modo que los archivos de configuración que hacen referencia al nombre amistoso pueden ser idénticos para todos los nodos.
Requisitos previos
-
se instala
Libreswany se inicia el servicioipsecen cada nodo.
Procedimiento
En cada nodo, importe los archivos PKCS #12. Este paso requiere la contraseña utilizada para generar los archivos PKCS #12:
ipsec import nodeXXX.p12
# ipsec import nodeXXX.p12Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cree las siguientes tres definiciones de conexión para los perfiles
IPsec required(privado),IPsec optional(privado o claro) yNo IPsec(claro):Copy to Clipboard Copied! Toggle word wrap Toggle overflow Añada la dirección IP de la red en la categoría adecuada. Por ejemplo, si todos los nodos residen en la red 10.15.0.0/16, y todos los nodos deben ordenar el cifrado
IPsec:echo "10.15.0.0/16" >> /etc/ipsec.d/policies/private
# echo "10.15.0.0/16" >> /etc/ipsec.d/policies/privateCopy to Clipboard Copied! Toggle word wrap Toggle overflow Para permitir que ciertos nodos, por ejemplo, 10.15.34.0/24, trabajen con y sin
IPsec, añada esos nodos al grupo de privados o limpios mediante:echo "10.15.34.0/24" >> /etc/ipsec.d/policies/private-or-clear
# echo "10.15.34.0/24" >> /etc/ipsec.d/policies/private-or-clearCopy to Clipboard Copied! Toggle word wrap Toggle overflow Para definir un host, por ejemplo, 10.15.1.2, que no es capaz de
IPsecen el grupo claro, utilice:echo "10.15.1.2/32" >> /etc/ipsec.d/policies/clear
# echo "10.15.1.2/32" >> /etc/ipsec.d/policies/clearCopy to Clipboard Copied! Toggle word wrap Toggle overflow Los archivos del directorio
/etc/ipsec.d/policiesse pueden crear a partir de una plantilla para cada nuevo nodo, o se pueden aprovisionar utilizando Puppet o Ansible.Tenga en cuenta que cada nodo tiene la misma lista de excepciones o diferentes expectativas de flujo de tráfico. Por lo tanto, dos nodos podrían no ser capaces de comunicarse porque uno requiere
IPsecy el otro no puede utilizarIPsec.Reinicie el nodo para añadirlo a la malla configurada:
systemctl restart ipsec
# systemctl restart ipsecCopy to Clipboard Copied! Toggle word wrap Toggle overflow Una vez que haya terminado con la adición de nodos, un comando
pinges suficiente para abrir un túnelIPsec. Para ver qué túneles ha abierto un nodo:ipsec trafficstatus
# ipsec trafficstatusCopy to Clipboard Copied! Toggle word wrap Toggle overflow