iOS 8 IKEv2 Ondemand 的蛋疼问题,目前无解

2014-10-10 23:24:05 +08:00
 cattyhouse
由于IKEv2具备Mobike的功能,iOS也继承了这一点,但是它做的真尼玛蛋疼。具体表现为(以下的前提是你设置了Ondemand或者Alwayson的rule):

1, 假设你现在连接3G,wifi没有打开,当你访问任何网站的时候,VPN会自动连接。然后你打开WIFI,按理说此刻网络流量应该全部走WIFI了,VPN应该自动断开并且自动重连接,但iOS蛋疼的是,它不断开!!! 接下来你的所有流量都经由3G的VPN,与WIFI半毛钱关系也没有!!!

2,假设你在现在连着WIFI,并且VPN是关闭状态(比如你手动关闭了),此时上任何网站,VPN都会自动重连,然后再关闭WIFI,此时VPN断开了,但是它却是『正在连接』状态,它在等待你的WIFI重新联网,此时此刻,你的3G网络形同虚设,根本没用,任何网站都打不开。。。除非你再打开WIFI,它就会自动现实已连接。

总结一下就是,IKEv2在iOS上,它会坚持等待它拨号的时候通过的那个网络,如果那个网络关闭了,那么,他会一直等待,然后让其他网络根本无法用,其实iOS上就2个网络,WIFI和Cellular。这与IKEv2的mobike功能相悖。。。也就是说iOS上的IKEv2不能在WIFI和Cellular之间漫游!!!

以上测试在iOS 8.1 beta 2上完成,服务器用的Debian+Strongswan 5.2.0,为此我也咨询了12vpn这个服务商,他们的回复跟我遇到的情况一模一样:

Unfortunately this is standard behaviour for iOS and OS/X. Existing connections will stay on the old network if the old network is still available.

You've found that VPN will use cellular if WiFi is switched on after the VPN connected. The same is true for other connections: if you connect something else first, then connect the VPN, the old connection will not use the VPN.

I agree that it would be better if the VPN can reconnect automatically when you change networks. In fact, IKEv2 can technically do this, but it's up to Apple to enable it.
16845 次点击
所在节点    iPhone
21 条回复
GPU
2014-10-10 23:51:43 +08:00
感觉好无奈 。
1nt
2014-10-10 23:58:00 +08:00
是啊,可能是由于新加入的特性吧,
我用的也是 12vpn 家的,
iKEv2 有时候明明状态栏有 VPN 图标,却打不开任何网站。。。

还是 AnyConnect 好用,就是速度太太太太慢,
用了换端口/切换 DTLS 到 TLS都不会超过 2Mbps
cattyhouse
2014-10-11 00:19:49 +08:00
@1nt 对的,自从iOS8之后,anyconnect速度就超不过2Mbps,所以不用了。。。
cattyhouse
2014-10-11 00:26:24 +08:00
@1nt 我看了你在纠结ipsec或者ikev2 alwayson的问题,其实你只需要修改一下ondemandrules 为下面的,就实现了,不需要把设备变成监督模式。你可以在12vpn的配置文件基础上做简单的修改,只需要覆盖他们给的那个OnDemandRules部分,不通过任何网址出发,只要联网,就自动拨VPN。但IKEv2有我说的这个bug,所以我现在用IPSEC的IKEv1,同样是这个代码,一样实现alwayson:

<key>OnDemandEnabled</key>
<integer>0</integer>
<key>OnDemandRules</key>
<array>
<dict>
<key>Action</key>
<string>Connect</string>
</dict>
</array>
1nt
2014-10-11 09:04:10 +08:00
@cattyhouse 非常感谢!试了下可用。
goodbest
2014-10-11 10:06:08 +08:00
为啥你们都执着于全局vpn,而我只想让vpn在访问特定网站时启用...

但是ikev2的路由我又配置不了,见
http://v2ex.com/t/137653#reply60
cattyhouse
2014-10-11 11:15:43 +08:00
@goodbest 我执着于自动按需连接的vpn
goodbest
2014-10-11 11:19:08 +08:00
@cattyhouse 我也执着于自动按需连接的vpn,但我也执着于不需的时候自动断(或者bypass)的vpn...
fuck010bj
2014-10-11 12:38:26 +08:00
这个是不是在设置里打开VPN开关后所有的都走VPN,而关掉后就不走VPN?像一般的L2TP那样的,我觉得那样适合大多数人
1nt
2014-10-11 15:20:08 +08:00
@goodbest

我执着于全局是因为网络环境问题,
需要无时无刻保持 VPN 加密发送所有流量,
而不是单纯的为了翻墙
lex
2014-10-12 17:31:00 +08:00
https://bugreport.apple.com/
去提 bug 吧,不说定 8.1 GM 就修正了。
troyl
2015-01-04 18:44:30 +08:00
IKEv2 on iOS 8 has a fatal bug, after the connection established on a Wi-Fi, if your iPhone’s network changes to Cellular, the connection will not disconnect automatically, it will show “connecting”, until you reconnect to the Wi-Fi, well under this situation, the network is still accessible on Cellular but without a VPN protection. If you connect the IKEv2 vpn on Cellular, then you turn Wi-Fi on, the connection will not disconnect nor show “connecting”, but all the traffic will go through Cellular.
cattyhouse
2015-01-04 22:03:45 +08:00
@troyl 这就是我写的吧?
troyl
2015-01-05 01:40:10 +08:00
@cattyhouse 是的,我在搜相关文档的时候看见有人指出来这个问题,想起这个帖子,就复制过来了。双重确认~
fuck010bj
2015-04-16 14:40:29 +08:00
8.3 这个问题没有了 正在用
cattyhouse
2015-04-16 15:24:27 +08:00
@fuck010bj 修复了?真的假的?看来我的那个bug report有效了?
fuck010bj
2015-04-16 15:30:20 +08:00
@cattyhouse 我用的时候WIiFi连上VPN,直接关掉WIiFi,然后连上4G,VPN就自动连上了
cattyhouse
2015-04-16 16:15:44 +08:00
@fuck010bj 试试这个步骤: 连上WIFI - 拨VPN - 在不断开VPN的情况下,关闭WIFI。 然后看VPN可否自动拨上?
fuck010bj
2015-04-16 16:49:34 +08:00
@cattyhouse 我就是这样搞的,能自动拨上并且能用推特。
cattyhouse
2015-04-16 16:51:58 +08:00
@fuck010bj 非常赞!感谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/138171

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX