Я успешно установил IPSec Xauth RSA, используя эту инструкцию: http://jsharkey.org/blog/2012/09/22/deploying-a-pure-ipsec-pki-vpn-server-for-android-devices/
Вкратце:
apt-get install ipsec-tools racoon
chmod 700 /etc/racoon/certs
cd /etc/racoon/certs
openssl req -new -x509 -extensions v3_ca -out myca.crt -keyout myca.key -days 3650
openssl req -new -keyout myserver.key -out myserver.csr -days 3650
openssl x509 -req -in myserver.csr -CA myca.crt -CAkey myca.key -CAcreateserial -out myserver.crt
chmod 600 myserver.key
openssl rsa -in myserver.key -out myserver.key
openssl req -new -keyout myphone.key -out myphone.csr -days 3650
openssl x509 -req -in myphone.csr -CA myca.crt -CAkey myca.key -CAcreateserial -out myphone.crt
openssl pkcs12 -export -in myphone.crt -inkey myphone.key -certfile myca.crt -name myphone -out myphone.p12
а затем в racoon.conf:
path certificate "/etc/racoon/certs";
timer {
# NOTE: varies between carriers
natt_keepalive 45 sec;
}
listen {
isakmp 106.187.34.245[500];
isakmp_natt 106.187.34.245[4500];
}
remote anonymous {
exchange_mode aggressive,main;
my_identifier asn1dn;
certificate_type x509 "myserver.crt" "myserver.key";
ca_type x509 "myca.crt";
peers_certfile x509 "myphone.crt";
passive on;
proposal_check strict;
generate_policy on;
nat_traversal force;
proposal {
encryption_algorithm aes256;
hash_algorithm sha1;
authentication_method xauth_rsa_server;
dh_group modp1024;
}
}
sainfo anonymous {
encryption_algorithm aes256;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
log info;
mode_cfg {
auth_source system;
conf_source local;
accounting system;
network4 10.44.0.0;
netmask4 255.255.255.255;
}
Android подключен к VPN со следующими настройками:
Type: IPSec Xauth RSA
IPSec user certificate: myphone
IPSec CA certificate: myphone
IPSec server certificate: (received from server)
И он успешно подключается. Я могу просматривать сайты (некоторые из них не загружаются, а на некоторых у меня возникают задержки, но пока это нормально), использовать другие приложения, требующие подключения, чтобы оно работало.
К сожалению, я не могу понять, как подключить мой Macbook к этому VPN.
Я импортировал сертификаты в системную связку ключей, создал Cisco IPSec VPN, выбрал сертификат myphone в качестве сертификата машины, установил пользователя / pwd. После нажатия кнопки «Подключить» отображается сообщение «Не удалось проверить сертификат сервера».
В системном журнале на сервере:
Apr 19 19:12:50 playground racoon: INFO: Adding remote and local NAT-D payloads.
Apr 19 19:12:51 playground racoon: INFO: NAT-T: ports changed to: 2.30.143.181[4501]<->109.74.205.143[4500]
Apr 19 19:12:51 playground racoon: INFO: KA found: 109.74.205.143[4500]->2.30.143.181[4501] (in_use=7)
Apr 19 19:12:51 playground racoon: INFO: Sending Xauth request
Apr 19 19:12:51 playground racoon: [2.30.143.181] INFO: received INITIAL-CONTACT
Apr 19 19:12:51 playground racoon: INFO: ISAKMP-SA established 109.74.205.143[4500]-2.30.143.181[4501] spi:72cc05a48011e3e6:9b2eef1f1823779b
Apr 19 19:12:51 playground racoon: ERROR: ignore information because the message is too short - 76 byte(s).
Если я изменю сертификат сервера IPSec на устройстве Android, он отобразит аналогичное сообщение об ошибке (слишком короткое), поэтому я предполагаю, что мне нужно либо включить сертификат сервера в настройки Android, либо установить аналогичные параметры в настройках Mac OS VPN (возможно, в config файлы?).
В качестве альтернативы, я буду счастлив, если вы дадите мне знать о каком-либо рабочем решении для настройки сервера Debian VPN, который поддерживает соединение Android Always-On VPN и Mac OS X / iPhone по требованию.