测试环境:RouterOS 6.49.8
创建根证书
这里命名为 VPN_IKEv2_CA,有效期设置为 3650 天。

勾选 key cert. sign 和 crl sign 后点击 Apply。

然后点击旁边的 Sign 按钮

直接点击 Start 完成自签。

给服务端签发证书
这里命名为 VPN_IKEv2_SERVIDOR,Subject Alt. Name 默认选 IP 并填写 IKEv2 准备对外提供连接的IP地址。

这里需要特别说明下,证书签发后,Subject Alternative Name(SAN)无法直接修改,这是证书中用于标识服务器身份的字段,如果服务器IP更改了,再用之前签发的证书是无效的。
如果你的服务器 IP 经常变动,这边建议 Subject Alt. Name 直接选 DNS,然后直接填写你的域名,例如 ikev2.example.com,并将服务器 IP 的A记录绑定到这个域名下即可,后续更换 IP 也不用重新签发证书。
勾选 tls server 后点击 Apply。然后直接点击旁边的 Sign 按钮,选择刚才建好的 CA 根证书,点击 Start 开始签发。

这个证书默认直接放在服务端,作为受信任的“VPN服务器”。
给客户端签发证书
这里命名为 VPN_IKEv2_CLIENT。

勾选 tls client 后点击 Apply。同样点击旁边的 Sign 按钮,选择刚才建好的 CA 根证书,点击 Start 开始签发。

导出证书
客户端连接的话需要用到 CA 证书和客户端证书。

导出 CA 证书

导出的 CA 证书作为客户端的根证书,在 IOS 设备安装后,需要手动信任这个未知的证书,“通用>关于本机>证书信任设置>针对根证书启用完全信任”。
导出客户端证书(这里需要注意,要设置8位数的密码)

需要注意的是,这里导出客户端证书时,类型应该选择 PKCS12 而不是PEM,因为 IKEv2 的客户端证书认证要求设备同时拥有客户端证书+对应的私钥,而 PEM 证书通常只有公钥证书,导入 IOS 设备后通常只是被当成是受信任证书,而不是身份证书(Identity)。
客户端证书
对应私钥
配置 IPSec
IP Pool
首先创建一个地址池。

Profiles
这里命名为 ikev2-profile,只需修改前面的加密方式。

Proposals
这里命名为 ikev2-proposal,生存时间适当加长,PFS Group 选 none。

Groups
这里命名为 ikev2-group。

Policies
勾选 Template 后选择上面创建的 Group。

Action 栏目中修改 Proposal 为我们刚创建的即可。

Peers
这里创建了两个 peer。

Mode Configs
这里命名为 ikev2-cfg。

Identities
证书方式
此配置适用于在IOS、Android 或者是 Windows 上配置证书连接。

在 iPhone 中的配置示例,前提是先将 VPN_IKEv2_CA.crt 和 VPN_IKEv2_CLIENT.p12 证书下载后安装。

需要注意的是,一张 VPN_IKEv2_CLIENT 证书即使导入到多个客户端也无法同时连接使用,一个证书只能对应一个在线的客户端。
预共享密钥(PSK)方式

在小米手机中的配置示例。

Firewall
这里用到了 UDP 的 500 和 4500 端口,记得放开。之前添加了 Pool 的 IP 段记得做 SNAT,INPUT 和 Forward 也放行下。
/ip firewall filter
add action=accept chain=input ipsec-policy=in,ipsec src-address=\
192.168.123.0/24
add action=accept chain=forward ipsec-policy=in,ipsec src-address=\
192.168.123.0/24
add action=accept chain=input dst-port=500,4500 protocol=udp
/ip firewall nat
add action=masquerade chain=srcnat src-address=192.168.123.0/24
报错
identity not found for peer
这个通常都是由客户端配置参数填写错误导致的,明显的特征是点击连接后很快断开,客户端的配置与 Identities 中的配置不匹配( 存在 Identities,但客户端配置存在某些配置参数的错误)。
An unexpected error occurred
客户端连接时弹出连接错误提示,这个其实跟前面的错误类似。( 不存在 Identities,也因此客户端配置无法生效)
no suitable proposal found
这个还是客户端的配置问题,多半都是类型选择错误。例如:在 Identities 配置了 IKEv2/IPSec PSK ,但是安卓手机上选的类型为 IPSec Xauth PSK。
l2tp/ipsec 无法使用
出现这种错误很大可能就是改动或者删除了默认配置导致的。
failed to pre-process ph2 packet
最简单的方法是直接清除 IKEv2/IPSec 配置并还原 IPSec 至默认配置,可参考 l2tp/ipsec 正常使用的设备配置。
/ip ipsec policy
set 0 dst-address=0.0.0.0/0 src-address=0.0.0.0/0


评论区