V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cattyhouse
V2EX  ›  iPhone

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

  •  1
     
  •   cattyhouse · 2014-10-10 23:24:05 +08:00 · 12685 次点击
    这是一个创建于 3485 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于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.
    第 1 条附言  ·  2014-10-11 00:20:44 +08:00
    所以目前,只能用ipsec ikev1了,表现基本完美。。。但就是受不了ikev2的那些新特性和新的诱惑。。。
    第 2 条附言  ·  2015-05-05 17:40:06 +08:00
    iOS 8.3已经解决这个问题了。
    21 条回复    2015-11-17 18:26:30 +08:00
    GPU
        1
    GPU  
       2014-10-10 23:51:43 +08:00
    感觉好无奈 。
    1nt
        2
    1nt  
       2014-10-10 23:58:00 +08:00   ❤️ 1
    是啊,可能是由于新加入的特性吧,
    我用的也是 12vpn 家的,
    iKEv2 有时候明明状态栏有 VPN 图标,却打不开任何网站。。。

    还是 AnyConnect 好用,就是速度太太太太慢,
    用了换端口/切换 DTLS 到 TLS都不会超过 2Mbps
    cattyhouse
        3
    cattyhouse  
    OP
       2014-10-11 00:19:49 +08:00   ❤️ 1
    @1nt 对的,自从iOS8之后,anyconnect速度就超不过2Mbps,所以不用了。。。
    cattyhouse
        4
    cattyhouse  
    OP
       2014-10-11 00:26:24 +08:00   ❤️ 1
    @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
        5
    1nt  
       2014-10-11 09:04:10 +08:00
    @cattyhouse 非常感谢!试了下可用。
    goodbest
        6
    goodbest  
       2014-10-11 10:06:08 +08:00
    为啥你们都执着于全局vpn,而我只想让vpn在访问特定网站时启用...

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

    我执着于全局是因为网络环境问题,
    需要无时无刻保持 VPN 加密发送所有流量,
    而不是单纯的为了翻墙
    lex
        11
    lex  
       2014-10-12 17:31:00 +08:00
    https://bugreport.apple.com/
    去提 bug 吧,不说定 8.1 GM 就修正了。
    troyl
        12
    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
        13
    cattyhouse  
    OP
       2015-01-04 22:03:45 +08:00
    @troyl 这就是我写的吧?
    troyl
        14
    troyl  
       2015-01-05 01:40:10 +08:00 via iPhone
    @cattyhouse 是的,我在搜相关文档的时候看见有人指出来这个问题,想起这个帖子,就复制过来了。双重确认~
    fuck010bj
        15
    fuck010bj  
       2015-04-16 14:40:29 +08:00
    8.3 这个问题没有了 正在用
    cattyhouse
        16
    cattyhouse  
    OP
       2015-04-16 15:24:27 +08:00 via iPhone
    @fuck010bj 修复了?真的假的?看来我的那个bug report有效了?
    fuck010bj
        17
    fuck010bj  
       2015-04-16 15:30:20 +08:00
    @cattyhouse 我用的时候WIiFi连上VPN,直接关掉WIiFi,然后连上4G,VPN就自动连上了
    cattyhouse
        18
    cattyhouse  
    OP
       2015-04-16 16:15:44 +08:00
    @fuck010bj 试试这个步骤: 连上WIFI - 拨VPN - 在不断开VPN的情况下,关闭WIFI。 然后看VPN可否自动拨上?
    fuck010bj
        19
    fuck010bj  
       2015-04-16 16:49:34 +08:00
    @cattyhouse 我就是这样搞的,能自动拨上并且能用推特。
    cattyhouse
        20
    cattyhouse  
    OP
       2015-04-16 16:51:58 +08:00 via iPhone
    @fuck010bj 非常赞!感谢。
    xuJaff
        21
    xuJaff  
       2015-11-17 18:26:30 +08:00
    我用的 strongSwan 搭建的 vpn 服务器,安卓的 ipsec 和 ikev2 都支持, iOS 端支持 ipsec 但是不支持 ikev2 ikev2 证书怎么配置的 大神们能指点指点吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4906 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:50 · PVG 17:50 · LAX 02:50 · JFK 05:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.