关于我
 

xjpvictor's Blog
小老鼠,上灯台,两只耳朵竖起来

IKEv2 服务器 IPv6 配置


各种折腾·vpnvpsweb

本文最后编辑于超过2080天以前,部分内容可能已经失效

尝试从手机连接自己的 IKEv2,然而无法连接。排查后发现是因为手机是 IPv6 的地址。

在 iPhone 上,无论是 CISCO AnyConnect 还是自带的 IKEv1,都可以 fallback 去 IPv4 连接,只有自带的 IKEv2 不可以。研究了一下服务器配置,加上 IPv6 支持后,却仍然无法连接。

最后发现是forceencaps=yes这个设置导致的,删除后即可连接。

后来以这个关键词去搜索,发现 这篇博客

IP协议50(本地ESP隧道流量)不能通过大多数NAT路由器。通常,IKEv2将尝试检测NAT的存在并将切换到UDP封装的ESP。但是,IP协议50也可能不通过一些非NAT防火墙,这将不会被这种方式检测到。

从表面上看,启用forceencaps=yes似乎是一个好主意,不管NAT检测的结果如何,对所有隧道流量都使用UDP封装。

但是,Linux内核不会(当前)对IPv6 ESP实施UDP封装,因此如果您的VPN服务器发布IPv6地址,则在设置此选项时,IPv6客户端将无法连接。

因此我们不得不依靠NAT检测来适当地启用UDP封装。NAT后面的IPv4客户端将自动使用UDP; 没有NAT的IPv4客户端将使用IP协议50. IPv6客户端只能使用IP协议50

之后试着建立两个连接类型来区分 IPv4 和 IPv6 以便为 IPv4 启用forceencaps,然而虽然通过把 IPv6 的连接配置放在 IPv4 的之前,可以顺利连上,却无法访问网络,所以还是把两个合在一起,然后都使用自动 NAT。

另外发现 StrongSwan 的 DNS 设置似乎不起作用,所以只能在ipsec.conf中设置rightdns

ps. 如果要在 NAT 后使用 Windows 10 的自带 IKEv2,还需要以管理员身份打开 CMD 执行REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f并重启。

本文 "IKEv2 服务器 IPv6 配置" 由 K. Huang 首先发表于 xjpvictor's Blog 并以 CC BY-NC 4.0 许可证发布 © 2018
转载注明引用来源 https://blog.xjpvictor.info/2018/08/ipv6-setting-for-ikev2-server/


推广:使用 DigitalOcean 搭建属于你自己的博客,每月低至 5 美元,全球多数据中心,稳定高速

打赏我

评论

你的邮箱地址不会被公开。必填项以 * 标出

无意义或不相关评论将被删除

允许使用以下html标签:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

你可以上传文件,粘贴代码或长文至 Drop.it.r

本博客是言论不自由博客,评论只接受询问及赞同,不同观点请出门左转微博/发表于自己的博客。谢谢合作!

评论意味着你 同意 上传部分私人数据,包括邮箱和 IP, 这些数据不会被分享给第三方,不会用于商业用途或再推广用途。

更多相似文章