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

strongswan5.4 /5.5/5.5.1 对安卓手机自带拨号( ikev1)支持不行有 bug, 5.3.5 就正常!

  •  
  •   itiger88 · 2016-11-24 12:49:45 +08:00 · 10917 次点击
    这是一个创建于 2940 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近发现 strongswan 更新到了 5.5.1 版本据说解决 iOS9 和 iOS10 的兼容性问题(连接 8 分钟就断线?)
    因此我把正常用的 5.3.5 升级到了 5.5.1 .当然是手工编译,用 https://github.com/quericy/one-key-ikev2-vpn 一键安装版本。可是实际上发现我的华为 mate8 (安卓 6 )自带的 vpn 拨号软件,拨号我的 VPS ,出现能拨号成功,但是不能上网。
    详细回滚重新检测一下,在 strongswan 5.3.5 下
    先开手机的中国移动 4G ,然后开始拨号成功,(用 PSK 预设密钥+ 用户名 /密码方式),并成功上网(手机开 Juice SSH 连 local 手机后能在终端窗口 ping 通 8.8.8.8, 这时运行 ifconfig 能看到手机其实能获得 10.31.2.1 这地址)
    在 strongswan 5.4.0 / 5.5.0/5.5.1 下
    同样先开手机的中国移动 4G ,然后开始拨号成功,(用 PSK 预设密钥+ 用户名 /密码方式),手机开 Juice SSH 连 local 手机后能在终端窗口 ping 通不通 8.8.8.8, 这时运行 ifconfig 能看到手机其实能获得 10.31.2.1 这地址的,可是网络就是不通。
    咱们是老司机了, iptables 应该没设置错,否则 5.3.5 下就不能上网啦

    cat /etc/sysconfig/iptables
    ---------------------------
    Generated by iptables-save v1.4.7 on Wed Nov 23 02:51:30 2016
    *nat
    :PREROUTING ACCEPT [0:0]
    :POSTROUTING ACCEPT [1:140]
    :OUTPUT ACCEPT [1:140]
    -A POSTROUTING -s 10.31.0.0/24 -o eth0 -j MASQUERADE
    -A POSTROUTING -s 10.31.1.0/24 -o eth0 -j MASQUERADE
    -A POSTROUTING -s 10.31.2.0/24 -o eth0 -j MASQUERADE
    COMMIT
    Completed on Wed Nov 23 02:51:30 2016
    Generated by iptables-save v1.4.7 on Wed Nov 23 02:51:30 2016
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [1:140]
    -A INPUT -i eth0 -p esp -j ACCEPT
    -A INPUT -i eth0 -p udp -m udp --dport 500 -j ACCEPT
    -A INPUT -i eth0 -p tcp -m tcp --dport 500 -j ACCEPT
    -A INPUT -i eth0 -p udp -m udp --dport 4500 -j ACCEPT
    -A INPUT -i eth0 -p udp -m udp --dport 1701 -j ACCEPT
    -A INPUT -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
    -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -s 10.31.0.0/24 -j ACCEPT
    -A FORWARD -s 10.31.1.0/24 -j ACCEPT
    -A FORWARD -s 10.31.2.0/24 -j ACCEPT
    COMMIT
    --------------------
    同时, sysctl 也设置了 net.ipv4.ip_forward = 1

    太奇怪了,欢迎各位大神来探讨一下!
    4 条回复    2016-11-26 23:55:24 +08:00
    itiger88
        1
    itiger88  
    OP
       2016-11-24 12:52:28 +08:00
    我今天继续测试,在 centos6.7 mini iso 安装环境下, yum install 安装二进制包 ( strongswan-5.4.0-2.el6 ), 发现这版本对安卓手机的 psk 方式都兼容性同样不行,能拨号成功,但是 ping 外网 ping 不通,当然就不能上网。
    itiger88
        2
    itiger88  
    OP
       2016-11-24 12:53:30 +08:00
    cat /usr/local/etc/ipsec.conf
    -------------------------
    config setup
    uniqueids=never

    conn iOS_cert
    keyexchange=ikev1
    fragmentation=yes
    left=%defaultroute
    leftauth=pubkey
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    right=%any
    rightauth=pubkey
    rightauth2=xauth
    rightsourceip=10.31.2.0/24
    rightcert=client.cert.pem
    auto=add

    conn android_xauth_psk
    keyexchange=ikev1
    left=%defaultroute
    leftauth=psk
    leftsubnet=0.0.0.0/0
    right=%any
    rightauth=psk
    rightauth2=xauth
    rightsourceip=10.31.2.0/24
    auto=add

    conn networkmanager-strongswan
    keyexchange=ikev2
    left=%defaultroute
    leftauth=pubkey
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    right=%any
    rightauth=pubkey
    rightsourceip=10.31.2.0/24
    rightcert=client.cert.pem
    auto=add

    conn ios_ikev2
    keyexchange=ikev2
    ike=aes256-sha256-modp2048,3des-sha1-modp2048,aes256-sha1-modp2048!
    esp=aes256-sha256,3des-sha1,aes256-sha1!
    rekey=no
    left=%defaultroute
    leftid=${vps_ip}
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    right=%any
    rightauth=eap-mschapv2
    rightsourceip=10.31.2.0/24
    rightsendcert=never
    eap_identity=%any
    dpdaction=clear
    fragmentation=yes
    auto=add

    conn windows7
    keyexchange=ikev2
    ike=aes256-sha1-modp1024!
    rekey=no
    left=%defaultroute
    leftauth=pubkey
    leftsubnet=0.0.0.0/0
    leftcert=server.cert.pem
    right=%any
    rightauth=eap-mschapv2
    rightsourceip=10.31.2.0/24
    rightsendcert=never
    eap_identity=%any
    auto=add
    Balthild
        3
    Balthild  
       2016-11-25 18:33:27 +08:00 via Android
    https://code.google.com/p/android/issues/detail?id=196939

    Android 6.0 下, AES-256 加密方式和 RFC 標準不一致,導致不兼容。解決方式是在 ipsec.conf 禁止 AES-256 加密,或者加 sha2_truncbug=yes
    itiger88
        4
    itiger88  
    OP
       2016-11-26 23:55:24 +08:00
    @Balthild
    问题是我都是同一台手机,同一个 4G 环境,唯一不同就是 strongswan 的版本,难道 5.3.5 和 5.4.0/5.5.0/5.5.1 对 AES-256 加密方式有所区别?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2851 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 12:45 · PVG 20:45 · LAX 04:45 · JFK 07:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.