Страницы

воскресенье, 13 июля 2014 г.

IKEv2 с Nokia 930 до домашнего роутера Asus RT-AC68U

UPDATE 2015-10-22: Тут неактуальная информация. Для работы работы strongSwan нужно поставить из Entware-arm, подробнее здесь. Но прежде всего, необходимо собрать и установить прошивку с поддержкой IPsec.

Все вроде бы хорошо, и можно поставить strongswan из портов.
ipkg install strongswan
Это поставит strongswan-4.5.3-2 mbwe-bluering.
Можно попробовать настроить на телефоне и подключиться. Но будет ждать облом:
[IKE] peer requested EAP, config inacceptable

[CFG] no alternative config found

[IKE] peer supports MOBIKE

[ENC] generating IKE_AUTH response 1 [ N(AUTH_FAILED) ]

Это типа потому, что нет поддержки eap-mschapv2. Надо бы ее засунуть в пакет.
Есть инструкция по самостоятельной сборке пакетов для ipkg для этой платформы:
http://mybookworld.wikidot.com/cross-compile-for-mbwe-using-optware
При сборке будут косяки:
- uclibc.mk: не будет скачивать 0.9.28 к адресу скачивания надо добавить old-releases:
uclibc.org/downloads/old-releases/
- collect2.c:1535 привести вызове open к подобному виду:
open(tracefn, S_IRUSR|S_IWUSR, O_CREAT|O_TRUNC|O_WRONLY)
Для сборки пакета:
make strongswan-ipk
Там тоже непоняные проблемы были при сборке gnutls, пришлось в его папку копировать файлы exception_defines.h, exception, new, а так же после сборки создавать файлы .build, .staged ознаменовав, что сборка завершена. Так же такие же файлы придется создать в libsoap.

В итоге получился такой пакет: https://cloud.mail.ru/public/ae2ffc6f7d02/strongswan_4.5.3-2_arm.ipk

Чтобы его поставить надо будет закомментировать размер и md5 в optware.mbwe-bluering
для пакета strongswan.

Сертификаты хоста надо генерировать как описано http://wiki.openwrt.org/doc/howto/vpn.ipsec.roadwarrior

Пример настройки strongswan есть на сайте http://blog.miffyliye.org/2014/04/18/ 

Дальше все начало работать, как надо:
[IKE] 192.168.1.56 is initiating an IKE_SA
[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(MULT_AUTH) ]
[NET] sending packet: from 91.200.226.25[500] to 192.168.1.56[500]
[NET] received packet: from 192.168.1.56[4500] to 91.200.226.25[4500]
[ENC] unknown attribute type INTERNAL_IP4_SERVER
[ENC] unknown attribute type INTERNAL_IP6_SERVER
[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CP(ADDR DNS NBNS SRV ADDR6 DNS6 SRV6) SA TSi TSr ]
[IKE] received cert request for "C=CH, O=Linux strongSwan, CN=RT-AC68U"
[IKE] received 32 cert requests for an unknown ca
[CFG] looking for peer configs matching 91.200.226.25[%any]...192.168.1.56[192.168.1.56]
[CFG] selected peer config 'windows-eap-mschapv2'
[IKE] initiating EAP_IDENTITY method (id 0x00)
[IKE] peer supports MOBIKE
[IKE] authentication of 'ipsec.local-ix.ru' (myself) with RSA signature successful
[IKE] sending end entity cert "C=CH, O=Linux strongSwan, CN=ipsec.local-ix.ru"
[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
[NET] sending packet: from 91.200.226.25[4500] to 192.168.1.56[4500]
[NET] received packet: from 192.168.1.56[4500] to 91.200.226.25[4500]
[ENC] parsed IKE_AUTH request 2 [ EAP/RES/ID ]
[IKE] received EAP identity 'Windows Phone\leandr'
[IKE] initiating EAP_MSCHAPV2 method (id 0xDF)
[ENC] generating IKE_AUTH response 2 [ EAP/REQ/MSCHAPV2 ]
[NET] sending packet: from 91.200.226.25[4500] to 192.168.1.56[4500]
[NET] received packet: from 192.168.1.56[4500] to 91.200.226.25[4500]
[ENC] parsed IKE_AUTH request 3 [ EAP/RES/MSCHAPV2 ]
[ENC] generating IKE_AUTH response 3 [ EAP/REQ/MSCHAPV2 ]
[NET] sending packet: from 91.200.226.25[4500] to 192.168.1.56[4500]
[NET] received packet: from 192.168.1.56[4500] to 91.200.226.25[4500]
[ENC] parsed IKE_AUTH request 4 [ EAP/RES/MSCHAPV2 ]
[IKE] EAP method EAP_MSCHAPV2 succeeded, MSK established
[ENC] generating IKE_AUTH response 4 [ EAP/SUCC ]
[NET] sending packet: from 91.200.226.25[4500] to 192.168.1.56[4500]
[NET] received packet: from 192.168.1.56[4500] to 91.200.226.25[4500]
[ENC] parsed IKE_AUTH request 5 [ AUTH ]
[IKE] authentication of '192.168.1.56' with EAP successful
[IKE] authentication of 'ipsec.local-ix.ru' (myself) with EAP
[IKE] IKE_SA windows-eap-mschapv2[3] established between 91.200.226.25[ipsec.local-ix.ru]...192.168.1.56[192.168.1.56]
[IKE] peer requested virtual IP %any6
[CFG] reassigning offline lease to 'Windows Phone\leandr'
[IKE] assigning virtual IP 10.8.1.1 to peer 'Windows Phone\leandr'
[KNL] allocating SPI failed: Invalid argument (22)
[KNL] unable to get SPI for reqid {3}
[IKE] allocating SPI failed
[ENC] generating IKE_AUTH response 5 [ AUTH CP(ADDR) N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(NO_PROP) ]
[NET] sending packet: from 91.200.226.25[4500] to 192.168.1.56[4500]
[NET] received packet: from 192.168.1.56[4500] to 91.200.226.25[4500]
[ENC] parsed INFORMATIONAL request 6 [ D ]
[IKE] received DELETE for IKE_SA windows-eap-mschapv2[3]
[IKE] deleting IKE_SA windows-eap-mschapv2[3] between 91.200.226.25[ipsec.local-ix.ru]...192.168.1.56[192.168.1.56]
[IKE] IKE_SA deleted
[ENC] generating INFORMATIONAL response 6 [ ]
[NET] sending packet: from 91.200.226.25[4500] to 192.168.1.56[4500]
[CFG] lease 10.8.1.1 by 'Windows Phone\leandr' went offline
Но как видно, наш роутер не смог выдать вирутальный IP для клиента. Это печально. Придется пересобирать прошивку так, чтобы она удовлетворяла требованиям описанным в https://wiki.strongswan.org/projects/strongswan/wiki/KernelModules

Погуглив, я нашел, что господин Merlin уже добавил поддержку всех нужных модулей в свою прошивку http://forums.smallnetbuilder.com/showthread.php?t=12916

Значит проблема в другом.

В последних изменениях прошивки Merlin отключил поддержку IPSec для ARM:
- REMOVED: IPSEC support removed from ARM devices, as it's
             not compatible with the new DPI kernel modules.
             The option remains available in the build
             environment if anyone wishes to create their
             own IPSEC-enabled build, however they must ensure
             that they disable the BWDPI option. (AC56, AC68)