====== IKEv2+IPsec (StrongSwan) Support in APdesk and MESHdesk ====== ===== MESHdesk Firmware ===== * The MESHdesk firmware includes support for IKEv2+IPsec since Jan 2026. * When you build the firmware make sure you include: * Network -> VPN -> StrongSwan -> strongswan-default (Meta Package) * Network -> xfrm (Needed for route based IPsec) * To make those packages appear in the available list of packages you need to insall them into the SDK ./scripts/feeds install strongswan ./scripts/feeds install xfrm * Note that StrongSwan might not fit on devices with limited flash. * Fortunately OpenWrt can also be running as a VM. * In our setup we created a virtual setup in VirtualBox and ran an OpenWrt instance which are then configured using APdesk ----------- ===== Defining a IKEv2+IPsec per AP ===== * See the screenshot below and the discussion which follows on the various items required: * {{:technical:ipsec:strongswan-01.png?nolink}} ------ ==== Required Items ==== ^ Item ^ Description ^ Comment ^ |Name |Descriptive name for VPN connection | | |VPN Type |IKEv2+IPsec | | |Server |FQDN or IP Addres of StrongSwan server | | |Server ID |Unique ID when server cert was generated |In our case it was //- -san cloud.radiusdesk.com// | |Xfrm Id Nr |Match **if_id_*** configured on the server | | |Endpoint IP |Client's fixed IP Address |Should be on the server's subnet e.g. 10.3.x.x | |Gateway IP |The IP Address from server prep script | | |Client ID |Unique ID per Client when cert is created |In our case it was //- -san carol@strongswan.org// | |CA |CA certificate we created earlier | | |Certificate |Client certificate we created earlier | | |Key |Private key used to generate certificate | | |Proposals |list of cryto proposals |e.g. aes128-sha1-modp2048 | |ESP Proposals |list of ESP proposals |e.g. aes128-sha1-modp2048 | ------------ ===== Connection Info ===== * The MESHdesk firmware records and reports the status and usage in the VPN tunnel. * See screenshot below: {{:technical:ipsec:strongswan-02.png?nolink|}} ------------ ==== CLI Confirmation ==== * We can use the swanctl program on OpenWrt to confirm the SA has been established: root@SS-01:~# swanctl --list-sa plugin 'kdf': failed to load - kdf_plugin_create not found and no plugin file available xfrm01: #10, ESTABLISHED, IKEv2, 8dca7286ebd18a28_i 45a64d9d5c71acec_r* local 'carol@strongswan.org' @ 10.3.0.3[4500] [10.3.1.0] remote 'cloud.radiusdesk.com' @ 164.160.89.129[4500] AES_CBC-128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_2048 established 1243s ago, rekeying in 12771s tun_xfrm01: #10, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-128/HMAC_SHA1_96/MODP_2048 installed 2089s ago, rekeying in 1379s, expires in 1871s in c000ad9e (-|0x00000064), 22990 bytes, 38 packets, 237s ago out cb6ad2be (-|0x00000064), 2457 bytes, 28 packets, 237s ago local 0.0.0.0/0 remote 0.0.0.0/0