Eu tenho uma instância da AWS que desejo ser um servidor VPN. Ele conectará os clientes do Windows 7 a uma rede privada na nuvem da Amazon.
- Eu instalei o Ubuntu 12.04 e o pacote
strongswan-ikev2
.
-
ipsec version
relatórios Linux strongSwan U4.5.2/K3.2.0-52-virtual
- Observe que o cliente e o servidor estão por trás do NAT (o cliente porque ele está em uma rede de escritório local e o servidor porque está na nuvem da Amazon). Desbloqueei as portas UDP 500 e 4500 no painel da Amazon e no firewall do cliente.
-
Isso é /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
-
Isso é /etc/ipsec.secrets:
: RSA openssl-key.rsa
TESTDOMAIN\testuser : EAP "testpassword"
-
Eu adicionei o certificado de CA que assinou o certificado de host do servidor no armazenamento de certificados de máquina local (não de usuário) para que o Windows possa autenticar o servidor.
Eu, então, tento me conectar ao servidor usando o cliente do Windows 7 conforme aqui , com um exceção - estou usando o nome DNS em vez do endereço IP. Eu insiro o nome de usuário, domínio e senha no meu arquivo ipsec.secrets, e ele tenta se conectar.
Quando isso acontece, recebo logs StrongSwan que se parecem com isso. Munged estes um pouco para a censura e clareza; CLIENTPUB / CLIENTPRIV são os endereços IP públicos e privados do cliente e AMAZONPRIV é o endereço IP privado do servidor (que é o que o IP público do servidor - o Amazon chama de "Elastic IP" - encaminha para).
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]
Neste ponto, o Windows exibe uma mensagem de erro imediatamente:
Verifying user name and password...
Error 13801: IKE authentication credentials are unacceptable
Após alguns segundos, o charon tenta novamente e fecha a conexão.
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
E é isso.
Até onde eu sei, estou seguindo todas as instruções no wiki strongSwan .
O que estou fazendo de errado aqui?
Edit: este é definitivamente um problema com certificados. Desativei as verificações de validação estendidas editando o registro e reinicializando conforme descrito em MSKB926182 (lol se você quiser um link para isso) e agora posso me conectar ao servidor VPN sem erros. Eu vou descobrir como gerar certificados que satisfaçam os requisitos e adicionar uma resposta. Obrigado a @ecdsa pelo ponteiro para a página do certificado no wiki strongSwan que me apontou na direção certa.