Tengo una instancia de AWS que quiero ser un servidor VPN. Conectará clientes de Windows 7 a una red privada en la nube de Amazon.
- He instalado Ubuntu 12.04 y el
strongswan-ikev2
paquete. ipsec version
informesLinux strongSwan U4.5.2/K3.2.0-52-virtual
- Tenga en cuenta que tanto el cliente como el servidor están detrás de NAT (el cliente porque está en la red de una oficina local y el servidor porque está en la nube de Amazon). He desbloqueado los puertos UDP 500 y 4500 tanto en el tablero de Amazon como en el firewall del cliente.
Esto es /etc/ipsec.conf:
config setup plutostart=no conn %default keyexchange=ikev2 ike=aes256-sha1-modp1024! esp=aes256-sha1! dpdaction=clear dpddelay=300s rekey=no conn win7vpn left=%any leftsubnet=<amazon VPC CIDR block> leftauth=pubkey leftcert=openssl-cert.pem leftid=<vpn server public dns name> right=%any rightsourceip=<amazon private IP address, which elastic ip is forwarded to> rightauth=eap-mschapv2 rightsendcert=never eap_identity=%any auto=add
Esto es /etc/ipsec.secrets:
: RSA openssl-key.rsa TESTDOMAIN\testuser : EAP "testpassword"
He agregado el certificado de CA que firmó el certificado de host del servidor al almacén de certificados de la máquina local (no del usuario) para que Windows pueda autenticar el servidor.
Luego trato de conectarme al servidor usando el cliente de Windows 7 como se prescribe aquí , con una excepción: estoy usando el nombre DNS en lugar de la dirección IP. Ingreso el nombre de usuario, el dominio y la contraseña en mi archivo ipsec.secrets, y trata de conectarse.
Cuando lo hace, obtengo fuertes registros de Swan que se ven así. Lo critiqué un poco por censura y claridad; CLIENTPUB / CLIENTPRIV son las direcciones IP públicas y privadas del cliente y AMAZONPRIV es la dirección IP privada del servidor (que es lo que la IP pública del servidor, Amazon llama a esto una "IP elástica", reenvía).
Sep 4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA
Sep 4 00:16:17 localhost charon: 14[NET] received packet: from CLIENTPUB[500] to AMAZONPRIV[500]
Sep 4 00:16:17 localhost charon: 14[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
Sep 4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA
Sep 4 00:16:17 localhost charon: 14[IKE] local host is behind NAT, sending keep alives
Sep 4 00:16:17 localhost charon: 14[IKE] remote host is behind NAT
Sep 4 00:16:17 localhost charon: 14[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(MULT_AUTH) ]
Sep 4 00:16:17 localhost charon: 14[NET] sending packet: from AMAZONPRIV[500] to CLIENTPUB[500]
Sep 4 00:16:17 localhost charon: 15[NET] received packet: from CLIENTPUB[4500] to AMAZONPRIV[4500]
Sep 4 00:16:17 localhost charon: 15[ENC] unknown attribute type INTERNAL_IP4_SERVER
Sep 4 00:16:17 localhost charon: 15[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CP(ADDR DNS NBNS SRV) SA TSi TSr ]
Sep 4 00:16:17 localhost charon: 15[IKE] received cert request for "C=US, ST=TX, O=Test CA, CN=Test CA"
Sep 4 00:16:17 localhost charon: 15[IKE] received 316 cert requests for an unknown ca
Sep 4 00:16:17 localhost charon: 15[CFG] looking for peer configs matching AMAZONPRIV[%any]...CLIENTPUB[CLIENTPRIV]
Sep 4 00:16:17 localhost charon: 15[CFG] selected peer config 'dlpvpn'
Sep 4 00:16:17 localhost charon: 15[IKE] initiating EAP-Identity request
Sep 4 00:16:17 localhost charon: 15[IKE] peer supports MOBIKE
Sep 4 00:16:17 localhost charon: 15[IKE] authentication of 'C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com' (myself) with RSA signature successful
Sep 4 00:16:17 localhost charon: 15[IKE] sending end entity cert "C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com"
Sep 4 00:16:17 localhost charon: 15[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
Sep 4 00:16:17 localhost charon: 15[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]
En este punto, Windows muestra un mensaje de error de inmediato:
Verifying user name and password...
Error 13801: IKE authentication credentials are unacceptable
Después de unos segundos, Charon lo intenta nuevamente y luego cierra la conexión.
Sep 4 00:16:37 localhost charon: 16[IKE] sending keep alive
Sep 4 00:16:37 localhost charon: 16[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]
Sep 4 00:16:47 localhost charon: 03[JOB] deleting half open IKE_SA after timeout
Y eso es.
Por lo que puedo decir, estoy siguiendo todas las instrucciones en la wiki de strongSwan.
¿Qué estoy haciendo mal aquí?
Editar: este es definitivamente un problema con los certificados. Deshabilité las verificaciones de validación extendidas editando el registro y reiniciando como se describe en MSKB926182 (jajaja si querías un enlace a eso) y ahora puedo conectarme a mi servidor VPN sin errores. Descubriré cómo generar certificados que satisfagan los requisitos y agregaré una respuesta. Gracias a @ecdsa por el puntero a la página de certificación en la wiki de strongSwan que me hizo apuntar en la dirección correcta.