Giter VIP home page Giter VIP logo

Comments (25)

itiger88 avatar itiger88 commented on May 21, 2024

附上我测试B不行时的iptables文件

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 SNAT --to-source 192.168.88.250
-A POSTROUTING -s 10.31.1.0/24 -o eth0 -j SNAT --to-source 192.168.88.250
-A POSTROUTING -s 10.31.2.0/24 -o eth0 -j SNAT --to-source 192.168.88.250
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

Completed on Wed Nov 23 02:51:30 2016

ifconfig

eth0 Link encap:Ethernet HWaddr 00:50:56:AB:3B:41
inet addr:192.168.88.250 Bcast:192.168.88.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:feab:3b41/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1352 errors:0 dropped:0 overruns:0 frame:0
TX packets:483 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:166862 (162.9 KiB) TX bytes:95927 (93.6 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

from one-key-ikev2-vpn.

itiger88 avatar itiger88 commented on May 21, 2024

看服务器log 没发现和之前A实验有什么不同的地方

tail -f /var/log/messages

Nov 23 07:08:05 vpn250-c67-ike charon: 07[NET] received packet: from 117.136.40.149[60716] to 192.168.88.250[500] (612 bytes)
Nov 23 07:08:05 vpn250-c67-ike charon: 07[ENC] parsed ID_PROT request 0 [ SA V V V V V V V V ]
Nov 23 07:08:05 vpn250-c67-ike charon: 07[IKE] received NAT-T (RFC 3947) vendor ID
Nov 23 07:08:05 vpn250-c67-ike charon: 07[IKE] received draft-ietf-ipsec-nat-t-ike-02 vendor ID
Nov 23 07:08:05 vpn250-c67-ike charon: 07[IKE] received draft-ietf-ipsec-nat-t-ike-02\n vendor ID
Nov 23 07:08:05 vpn250-c67-ike charon: 07[IKE] received draft-ietf-ipsec-nat-t-ike-00 vendor ID
Nov 23 07:08:05 vpn250-c67-ike charon: 07[IKE] received XAuth vendor ID
Nov 23 07:08:05 vpn250-c67-ike charon: 07[IKE] received Cisco Unity vendor ID
Nov 23 07:08:05 vpn250-c67-ike charon: 07[IKE] received FRAGMENTATION vendor ID
Nov 23 07:08:05 vpn250-c67-ike charon: 07[IKE] received DPD vendor ID
Nov 23 07:08:05 vpn250-c67-ike charon: 07[IKE] 117.136.40.149 is initiating a Main Mode IKE_SA
Nov 23 07:08:05 vpn250-c67-ike charon: 07[ENC] generating ID_PROT response 0 [ SA V V V V ]
Nov 23 07:08:05 vpn250-c67-ike charon: 07[NET] sending packet: from 192.168.88.250[500] to 117.136.40.149[60716] (160 bytes)
Nov 23 07:08:05 vpn250-c67-ike charon: 09[NET] received packet: from 117.136.40.149[60716] to 192.168.88.250[500] (252 bytes)
Nov 23 07:08:05 vpn250-c67-ike charon: 09[ENC] parsed ID_PROT request 0 [ KE No NAT-D NAT-D ]
Nov 23 07:08:05 vpn250-c67-ike charon: 09[IKE] local host is behind NAT, sending keep alives
Nov 23 07:08:05 vpn250-c67-ike charon: 09[IKE] remote host is behind NAT
Nov 23 07:08:05 vpn250-c67-ike charon: 09[ENC] generating ID_PROT response 0 [ KE No NAT-D NAT-D ]
Nov 23 07:08:05 vpn250-c67-ike charon: 09[NET] sending packet: from 192.168.88.250[500] to 117.136.40.149[60716] (268 bytes)
Nov 23 07:08:05 vpn250-c67-ike charon: 05[NET] received packet: from 117.136.40.149[63785] to 192.168.88.250[4500] (108 bytes)
Nov 23 07:08:05 vpn250-c67-ike charon: 05[ENC] parsed ID_PROT request 0 [ ID HASH ]
Nov 23 07:08:05 vpn250-c67-ike charon: 05[CFG] looking for XAuthInitPSK peer configs matching 192.168.88.250...117.136.40.149[10.68.106.220]
Nov 23 07:08:05 vpn250-c67-ike charon: 05[CFG] selected peer config "android_xauth_psk"
Nov 23 07:08:05 vpn250-c67-ike charon: 05[ENC] generating ID_PROT response 0 [ ID HASH ]
Nov 23 07:08:05 vpn250-c67-ike charon: 05[NET] sending packet: from 192.168.88.250[4500] to 117.136.40.149[63785] (92 bytes)
Nov 23 07:08:05 vpn250-c67-ike charon: 05[ENC] generating TRANSACTION request 1801181778 [ HASH CPRQ(X_USER X_PWD) ]
Nov 23 07:08:05 vpn250-c67-ike charon: 05[NET] sending packet: from 192.168.88.250[4500] to 117.136.40.149[63785] (92 bytes)
Nov 23 07:08:06 vpn250-c67-ike charon: 12[NET] received packet: from 117.136.40.149[63785] to 192.168.88.250[4500] (124 bytes)
Nov 23 07:08:06 vpn250-c67-ike charon: 12[ENC] parsed INFORMATIONAL_V1 request 3170985511 [ HASH N(INITIAL_CONTACT) ]
Nov 23 07:08:06 vpn250-c67-ike charon: 12[NET] received packet: from 117.136.40.149[63785] to 192.168.88.250[4500] (124 bytes)
Nov 23 07:08:06 vpn250-c67-ike charon: 12[ENC] parsed TRANSACTION response 1801181778 [ HASH CPRP(X_USER X_PWD) ]
Nov 23 07:08:06 vpn250-c67-ike charon: 12[IKE] XAuth authentication of 'vpn' successful
Nov 23 07:08:06 vpn250-c67-ike charon: 12[ENC] generating TRANSACTION request 4071609174 [ HASH CPS(X_STATUS) ]
Nov 23 07:08:06 vpn250-c67-ike charon: 12[NET] sending packet: from 192.168.88.250[4500] to 117.136.40.149[63785] (92 bytes)
Nov 23 07:08:06 vpn250-c67-ike charon: 06[NET] received packet: from 117.136.40.149[63785] to 192.168.88.250[4500] (108 bytes)
Nov 23 07:08:06 vpn250-c67-ike charon: 06[ENC] parsed TRANSACTION response 4071609174 [ HASH CPA(X_STATUS) ]
Nov 23 07:08:06 vpn250-c67-ike charon: 06[IKE] IKE_SA android_xauth_psk[1] established between 192.168.88.250[192.168.88.250]...117.136.40.149[10.68.106.220]
Nov 23 07:08:06 vpn250-c67-ike charon: 06[IKE] scheduling reauthentication in 10005s
Nov 23 07:08:06 vpn250-c67-ike charon: 06[IKE] maximum IKE_SA lifetime 10545s
Nov 23 07:08:06 vpn250-c67-ike charon: 06[NET] received packet: from 117.136.40.149[63785] to 192.168.88.250[4500] (140 bytes)
Nov 23 07:08:06 vpn250-c67-ike charon: 06[ENC] parsed TRANSACTION request 3416981067 [ HASH CPRQ(ADDR MASK DNS NBNS U_BANNER U_DEFDOM U_SPLITDNS U_SPLITINC U_LOCALLAN VER) ]
Nov 23 07:08:06 vpn250-c67-ike charon: 06[IKE] peer requested virtual IP %any
Nov 23 07:08:06 vpn250-c67-ike charon: 06[CFG] assigning new lease to 'vpn'
Nov 23 07:08:06 vpn250-c67-ike charon: 06[IKE] assigning virtual IP 10.31.2.1 to peer 'vpn'
Nov 23 07:08:06 vpn250-c67-ike charon: 06[ENC] generating TRANSACTION response 3416981067 [ HASH CPRP(ADDR DNS NBNS DNS NBNS) ]
Nov 23 07:08:06 vpn250-c67-ike charon: 06[NET] sending packet: from 192.168.88.250[4500] to 117.136.40.149[63785] (124 bytes)
Nov 23 07:08:07 vpn250-c67-ike charon: 13[NET] received packet: from 117.136.40.149[63785] to 192.168.88.250[4500] (476 bytes)
Nov 23 07:08:07 vpn250-c67-ike charon: 13[ENC] parsed QUICK_MODE request 4141073583 [ HASH SA No ID ID ]
Nov 23 07:08:07 vpn250-c67-ike charon: 13[IKE] received 28800s lifetime, configured 3600s
Nov 23 07:08:07 vpn250-c67-ike charon: 13[ENC] generating QUICK_MODE response 4141073583 [ HASH SA No ID ID ]
Nov 23 07:08:07 vpn250-c67-ike charon: 13[NET] sending packet: from 192.168.88.250[4500] to 117.136.40.149[63785] (188 bytes)
Nov 23 07:08:07 vpn250-c67-ike charon: 16[NET] received packet: from 117.136.40.149[63785] to 192.168.88.250[4500] (92 bytes)
Nov 23 07:08:07 vpn250-c67-ike charon: 16[ENC] parsed QUICK_MODE request 4141073583 [ HASH ]
Nov 23 07:08:07 vpn250-c67-ike kernel: alg: No test for __gcm-aes-aesni (__driver-gcm-aes-aesni)
Nov 23 07:08:07 vpn250-c67-ike kernel: padlock: VIA PadLock not detected.
Nov 23 07:08:07 vpn250-c67-ike kernel: alg: No test for fips(ansi_cprng) (fips_ansi_cprng)
Nov 23 07:08:07 vpn250-c67-ike kernel: alg: No test for authenc(hmac(sha256),cbc(aes)) (authenc(hmac(sha256-ssse3),cbc-aes-aesni))
Nov 23 07:08:07 vpn250-c67-ike charon: 16[IKE] CHILD_SA android_xauth_psk{1} established with SPIs c981fbd3_i 0e54e515_o and TS 0.0.0.0/0 === 10.31.2.1/32
Nov 23 07:08:30 vpn250-c67-ike charon: 10[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:08:50 vpn250-c67-ike charon: 12[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:09:10 vpn250-c67-ike charon: 16[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:09:30 vpn250-c67-ike charon: 05[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:09:50 vpn250-c67-ike charon: 13[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:10:10 vpn250-c67-ike charon: 07[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:10:30 vpn250-c67-ike charon: 08[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:10:50 vpn250-c67-ike charon: 12[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:11:10 vpn250-c67-ike charon: 16[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:11:30 vpn250-c67-ike charon: 05[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:11:50 vpn250-c67-ike charon: 13[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:12:10 vpn250-c67-ike charon: 07[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:12:30 vpn250-c67-ike charon: 08[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:12:50 vpn250-c67-ike charon: 12[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:13:10 vpn250-c67-ike charon: 16[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:13:30 vpn250-c67-ike charon: 05[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:13:50 vpn250-c67-ike charon: 13[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:14:10 vpn250-c67-ike charon: 07[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:14:30 vpn250-c67-ike charon: 08[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:14:50 vpn250-c67-ike charon: 12[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:15:10 vpn250-c67-ike charon: 16[IKE] sending keep alive to 117.136.40.149[63785]
Nov 23 07:15:30 vpn250-c67-ike charon: 05[IKE] sending keep alive to 117.136.40.149[63785]

from one-key-ikev2-vpn.

itiger88 avatar itiger88 commented on May 21, 2024

我今天继续测试,在centos6.7 mini iso 安装环境下,从strongswan-5.4.0 / strongswan-5.5.0 ,手工编译; yum install 安装二进制包 (strongswan-5.4.0-2.el6 ), 发现这些版本对安卓手机的 psk 方式都兼容性不行,能拨号成功,但是ping 外网ping 不通,当然就不能上网,而5.35 的手工编译版本就没有这个问题。

from one-key-ikev2-vpn.

ShouShijin avatar ShouShijin commented on May 21, 2024

一样的现象,能不能确定是strongwan 的bug?

from one-key-ikev2-vpn.

quericy avatar quericy commented on May 21, 2024

@itiger88 @ShouShijin 感谢反馈!
将Strongswan从5.3.5升级到5.5.1的过程中,我没有修改IKEv1相关的配置.
由于没有安卓设备,脚本修改后使用iOS设备测试过IKEv1是没有问题的,
而ipsec.conf里,iOS使用IPsec和安卓是走同一个配置项的,所以也就没有测试安卓的IKEv1.

刚才使用安卓模拟器确实复现了这个问题.
从你提供的配置和日志里确实没有发现异常的地方,但我暂时也没办法确认这是strongswan新版本的bug,还是新版本配置项有哪些细节需要改变.

当然你也可以暂时使用stronswan的客户端来进行IKEv2的连接,在GooglePlay搜索strongswan或者下载其他渠道提供的安装包: strongSwan VPN Client

from one-key-ikev2-vpn.

itiger88 avatar itiger88 commented on May 21, 2024

https://www.v2ex.com/t/322933#reply3
有人回复我说是
Android 6.0 下, AES-256 加密方式和 RFC 標準不一致,導致不兼容。解決方式是在 ipsec.conf 禁止 AES-256 加密,或者加 sha2_truncbug=yes
https://code.google.com/p/android/issues/detail?id=196939

大家感觉有关联吗?
同一台手机,同一个 4G 环境,唯一不同就是 strongswan 的版本,难道 5.3.5 和 5.4.0/5.5.0/5.5.1 对 AES-256 加密方式有所区别?

from one-key-ikev2-vpn.

itiger88 avatar itiger88 commented on May 21, 2024

我今天测试出来了,好像就是hmac(sha256) 和 hmac(sha1) 的区别导致这个bug!
测试A
centos6.7 x64 , 手工编译 strongswan 5.5.1 ,ipsec.conf 采用下面

ipsec.conf - strongSwan IPsec configuration file

config setup
uniqueids=never #关闭ID唯一性,即允许多个客户端使用同一个证书,多设备同时在线

conn %default #默认配置项,其他conn配置项都会调用此默认项
left=%any #left表示local,即本地端(服务器端)IP地址;%any是魔数字,表示任意地址
leftsubnet=0.0.0.0/0 #本地端网络,0.0.0.0/0为通配,表示所有IP网段
right=%any #right表示remote,即远程端(客户端)IP地址可为任意地址
rightsourceip=10.10.10.0/24 #分配给远程端的虚拟IP地址段,尽量避免使用常用私网地址段以免冲突
dpdaction=clear #dpd表示Dead Peer Detection,对端失效检测,clear表示对端失效时关闭连接

conn IKEv1-PSK-XAUTH #供IOS, Android使用。IKEv1,使用预共享密钥和XAUTH验证
keyexchange=ikev1 #密钥交换使用IKEv1
leftauth=psk #本地端使用预共享密钥验证
rightauth=psk #远程端使用预共享密钥验证
rightauth2=xauth #远程端使用用户账号验证
auto=add #strongSwan启动时添加连接类型但不启动

手机华为mate6 (安卓6.0), 系统自带的vpn拨号,用ikev1 vpn 拨号,在**移动4G 下能成功拨号,但是不能上网,这时的 /var/log/message 报错为:
Nov 28 00:49:35 vpnserver250 kernel: alg: No test for __gcm-aes-aesni (__driver-gcm-aes-aesni)
Nov 28 00:49:35 vpnserver250 kernel: padlock: VIA PadLock not detected.
Nov 28 00:49:35 vpnserver250 kernel: alg: No test for fips(ansi_cprng) (fips_ansi_cprng)
Nov 28 00:49:35 vpnserver250 kernel: alg: No test for authenc(hmac(sha256),cbc(aes)) (authenc(hmac(sha256-generic),cbc-aes-aesni))

测试2: 删除所有5.5.1之后重新下载5.3.5,编译安装
ipsec.conf 和上面的相比一模一样 , strongswan.conf ipsec.secrets 也不变一样。
同样手机拨号,能成功拨号和上网 ,能ping 通 8.8.8.8
拨号瞬间服务器日志为
Nov 28 01:03:51 vpnserver250 kernel: alg: No test for authenc(hmac(sha1),cbc(aes)) (authenc(hmac(sha1-generic),cbc-aes-aesni))


我感觉就是这个旧版本 hmac(sha1) 和新版本 hmac(sha256) 的差异导致新版本下安卓ikev1+psk 拨号上不了网,但是如何解决还没有头绪......
请大家指教一下

from one-key-ikev2-vpn.

quericy avatar quericy commented on May 21, 2024

@itiger88 我觉得Android 6.0的AES-256加密问题可能不是无法联网的直接原因.

一方面我使用的模拟器Android版本为4.3 ;

另一方面,根据官网wiki 的记录,在5.4.0版本开始有许多调整,其中esp由aes128-sha1,3des-sha1调整为aes128-sha256 , ike 由aes128-sha1-modp2048,3des-sha1-modp1536调整为aes128-sha256-modp3072 .我尝试修改回原有的加密方式在Genymotion模拟器中连接仍会重现这个问题.

目前手里安卓模拟器环境有点问题,加载不了其他版本的镜像.其他版本的安卓我回去再调试一下看看.

from one-key-ikev2-vpn.

itiger88 avatar itiger88 commented on May 21, 2024

@quericy 我看了你给的那个官方wiki的连接,感觉这个esp 和 ike 的改变应该就是导致我遇到上面提及的现象的原因。
安卓6系统自带的ikev1 +psk 方式上网其实有个不好的地方,在5.3.5 版本虽然能上网,但是不敏感,明明vpn服务器在我手机拨号成功后我都shutdown掉vpn的ipsec服务了,手机还是处于vpn连接中的状态(那个“钥匙”小图标一直还在),导致微信等程序其实是不通网络的,反而不如以前普通的pptp拨号好用,pptp不行就马上断开vpn,不影响正常的微信通讯。而在5.4.0 /5.5.0/5.5.1 版本环境下,手机用ikev1+psk 方式好像拨号成功了,但是可能只是ike 通过了,但是实际数据传输需要用到的esp协议没通过,导致ping 不通外网,那个拨号成功的“钥匙”小图标其实是假的,不成功的。

之前你提议我用5.5.1 + strongswan的客户端(版本是1.62)来进行IKEv2的连接,其实我一早就有用,在5.3.5下能正常使用(证书方式),但是唯一缺点是受制于我们广州这边**移动4G,给的都是内网10.x.x.x的ip,对外访问internet采用的**移动的internet ip 是一个大的ip 池(所以我对外访问互联网这一时刻用的IP和下一时刻用的公网IP可能会不同的),所以对于这种udp的4500 / 500 的通讯会很大问题(个人理解?),导致我在广州时,十有八九基本不能用证书+ stronswan的客户端拨通 VPN。报错为服务器没响应? 而我同样的设置到广东的其他区域,例如肇庆、澳门、珠海就可以,感觉和各地机房的设备很有关系。当然同样的配置用我公司的固定IP的wifi上网通过手机strongswan客户端连ikev2 就肯定没有问题。而这种4G环境下,ikev2拨号不行的情况下,我用安卓6自带vpn拨号ikev1 是马上可以握手成功的,也能上外网,但是ikev1极不适合移动(上面提到的“不敏感”/假在线),我外出时肯定不敢用这种方式拨vpn,否则微信都在一段时间内收不了。
吐槽之后说回来,stongswan升级到5.5.1 之后我曾经用过1.62客户端加证书方式(只有证书方式能连,如果使用EAP密码是不行的)去连,发现用在移动4G的环境下一下就拨通了,拨通率大为提高。我感觉这适用性马上增强了,但是发现关闭屏幕一段时间之后再打开,网络就会假连通,钥匙的小图标还有但是微信是收发不了的信息,这点就比较难接受了。

我认为ikv1/ikv2拨号成功出现握手小图标只能证明认证阶段成功了,但是数据交换时的加密方式如果不匹配,客户端是反应不出来的,数据交换不通,那肯定不能ping 通和访问外网网站。

from one-key-ikev2-vpn.

orion594 avatar orion594 commented on May 21, 2024

@quericy 小白,按照你的一键教程安装的,现在能用了。反馈下两个问题:
1,你在教程里提到的wp10在14393.5已经修复bug了,但是我的是14393.67此bug仍存在,在智机网找到解决方法了
2,按照你的一键脚本安装完android是无法使用Ikev1的,出现 ESP decryption failed: invalid length 的错误,添加了esp=aes128-sha1,3des-sha1! 就能用了,按照你上面说的我改为 aes128-sha256,又出现了 ESP decryption failed: invalid length。
另外,问个小问题,虽然android上能用了,谷歌全家桶都能上除了 play store, play store 一直都是连接超时,这该怎么解决啊?

from one-key-ikev2-vpn.

itiger88 avatar itiger88 commented on May 21, 2024

@quericy 我不大懂配置文件,请问一下之前你提到的"我尝试修改回原有的加密方式在Genymotion模拟器中连接仍会重现这个问题." 你是怎么修改回原来的加密方式的?

是修改ipsec.conf中对应的项目的ike=xxxx 和 esp=xxxx 的参数吧?
另外请教一下你的一键脚本中的
conn ios_ikev2
keyexchange=ikev2
ike=aes256-sha256-modp2048,3des-sha1-modp2048,aes256-sha1-modp2048!
这句有个感叹号注明的,是什么作用呢?是不是只用前面3个协议进行协商?其他协议不使用?
esp=aes256-sha256,3des-sha1,aes256-sha1!
这句同样有个感叹号是不是和上面的感叹号同样作用?

最近我研究libreswan+l2tp(ipsec/psk) 发现 SHA-256-Compatible Mode(96Bit) 是安卓4/5 和 安卓6最大的不同,安卓4/5用的默认vpn拨号时采用的ipsec 是 aes256-sha1 , 而安卓6 用的默认vpn拨号时采用的ipsec是aes256-sha1、 aes256-sha2(96bit不是RFC标准的128bit),而storngswan 5.3.5 默认支持aes256-sha1,而 strongswan5.5.1版本估计默认先是支持aes256-sha2(128bit)。
导致我的安卓6手机连 5.3.5 用的aes256-sha1就没问题,而连5.5.1时用了 aes256-sha2(96bit)连接后就出现没法上网。
估计我发现这bug是客户端和服务器采用哪个协议先握手成功后引起的。

所以我猜想要StrongSwan5.5.1如果要支持安卓6的自带vpn中的ipsec就必须强行指定用aes256-sha1(禁止用aes256-sha2?),或者采用aes256-sha2(96bit)
参考https://www.strongswan.org/testing/testresults4/ikev1/alg-sha256-96/index.html 这个例子的参数
ike=aes128-sha256-modp2048!
esp=aes128-sha256_96!
具体我还没进行测试,但是我想这样做可能会对其他客户端例如苹果/win10采用ipsec 时造成影响,所以得专门做一个ipsec.conf 的子项Android6和其他Android4-5/IOS/Win7独立出来,这就得靠你完善测试了。 主要是我不熟悉ipsec.conf参数的具体作用,得慢慢google学习。

我一直不明白,strongswan是怎么区分各个客户端的呢?是由客户端一旦连过来,由客户端采用什么协议来决定是哪个ipsec.conf的子项对应反应?

from one-key-ikev2-vpn.

orion594 avatar orion594 commented on May 21, 2024

@itiger88 感叹号的作用是 To restrict it to the configured proposal an exclamation mark (!) can
be added at the end. 详细看这个文档说明https://wiki.strongswan.org/projects/strongswan/wiki/ConnSection

博主的一键安装完,ipsec.conf 下有几个conn ,其中有conn android_xauth_psk,conn ios_ikev2 和 conn windows7 ,我猜博主的思路是一个给android设备,一个给iOS OS X,最后一个给windows。strongswan区分客户端我感觉是 rightauth 这个参数有关。因为博主的conn ios_ikev2 中 ike、esp 都包含3个(而且加了!),一个用于iOS,一个用于OS X,还有一个用于win7,但是conn ios_ikev2 和 conn windows7 中rightauth 的值是一样的,都是 eap-mschapv2,而我的wp10 和win10 都连到了 conn ios_ikev2,即使我把 conn ios_ikev2 中 win7 部分的 aes256-sha1-modp1024 与 aes256-sha1 删掉,保留!加以限制,还是连到了 conn ios_ikev2。同时又和 conn 的次序有关,如果把 conn windows7 放在 conn ios_ikev2 前面,连上的就是 conn windows7 了。所以应该是从上到下第一个符合客户端的认证方式的 conn。

from one-key-ikev2-vpn.

orion594 avatar orion594 commented on May 21, 2024

@quericy 又去试了下,android 4.4.2 play store 在 esp=aes128-sha256 ike=aes128-sha256-modp3072( 也就是5.4.0之后)是正常的,可惜6.0.1在这种 esp 下不能用。算了,不搞了,反正android 有ss。

from one-key-ikev2-vpn.

quericy avatar quericy commented on May 21, 2024

@itiger88 @orion594
我上面提到的加密方式的修改,是指的由旧版升级到strongswan5.4.0以后的调整,我尝试的是改回旧的加密方式.
Wiki中:
ike项:
Defaults to aes128-sha256-modp3072 (aes128-sha1-modp2048,3des-sha1-modp1536 before 5.4.0) for IKEv1.
esp项:
Defaults to aes128-sha256 (aes128-sha1,3des-sha1 before 5.4.0).

但是我觉得需要把没有回包的问题和加密方式的问题分为两个问题来看待.
按照 @orion594 提供的信息,android 4.4.2 应该在strongswan5.4.0调整前后的两套加密方式都可以使用,没有回包可能就是和加密无关的另一种原因导致的.
而android 6的话,应该要调整回5.4.0之前的加密方式((aes128-sha1-modp2048,3des-sha1-modp1536和(aes128-sha1,3des-sha1 )才能有进一步的结论.

我现在使用的模拟器是Genymotion,没有Strongswan升级后回包的问题在安卓4.3和4.4一直存在,却并没有加密错误的相关日志信息.
而使用Android6+连接Ipsec会导致整个模拟器崩溃,所以我没法确定真机的情况和模拟器的异同...

至于 @itiger88 所说的干扰问题,原因可能非常复杂,但和内网ip无关,ipsec本身就支持NAT后的设备的连接的,更可能是运营商对协议的特征判断上的问题.

WP10的问题....嘛,微软多分支开发让解决过的bug重现也不是一两次了,而且也不能保证全机型都修了,反正WP已经差不多💊

from one-key-ikev2-vpn.

xsm1997 avatar xsm1997 commented on May 21, 2024

@itiger88
我这里碰到了一个关于内网连不通ikev2的情况,看看能不能帮你解决问题。
我的网络环境是方正宽带,也是10.x.x.x的大内网。之前为了方便,尝试用了StartSSL和Let's Encrypt等提供的免费SSL证书,但是Windows连接出现了服务器未响应的问题,同时ios客户端连接一切正常。
查看strongswan的log和查看了wiki发现,windows客户端不支持分包(fragmentation),而这些免费SSL提供的证书都是2kb左右,服务器log中传出应该是证书的包之后(大小也大约是2kb),在客户端抓包发现根本没有收到这个包,同时不停地重传。换了一家SSL提供商之后,还是同样的问题。而在ios连接时,服务器log中出现了fragmentation字样,分成了3个包。
再用这个一键脚本生成自签名证书后,连接就正常了。在看服务器log之后发现,这个包的大小缩小到了1.4kb左右,大约是自签名证书的大小。
推测是我这个运营商的出口服务器的NAT可能存在Bug,导致大于某个大小的UDP数据包不能转发。
也可能是我这个运营商对这个证书有干扰,因为同样的设备使用电信的网络连接没有问题。
我觉得你可以在strongswan客户端里手动强制打开分包,再连接试试。
本人小白一个,如有不对的地方,欢迎指出。

from one-key-ikev2-vpn.

Bestoa avatar Bestoa commented on May 21, 2024

@xsm1997 请问有没有开启任何TCP加速相关的服务?比如finalspeed/锐速之类的

from one-key-ikev2-vpn.

xsm1997 avatar xsm1997 commented on May 21, 2024

from one-key-ikev2-vpn.

Bestoa avatar Bestoa commented on May 21, 2024

@xsm1997 我发现使用锐速之后,同样的网络环境Windows 10/7都无法连接,更换网络环境,Windows10/7依然无法连接。

from one-key-ikev2-vpn.

xsm1997 avatar xsm1997 commented on May 21, 2024

from one-key-ikev2-vpn.

Bestoa avatar Bestoa commented on May 21, 2024

@xsm1997 是这样的。
这个时候我不知道应该批评Windows兼容性差还是,做的很符合标准协议。

锐速之类的加速软件,加速原理其实差不多,都是单边的TCP加速,说的难听一点,很可能伴随有多发包的行为。本来TCP的包,可能要超时再重发,现在可能直接重发了。windows端会觉得有些奇怪,不只是IKEv2的VPN,PPTP一样会受到这种单边TCP加速软件的影响。

亲测,Android/Mac/iOS不受这个影响。

from one-key-ikev2-vpn.

Liashui avatar Liashui commented on May 21, 2024

@itiger88 你在centos7运行有没有问题吗?脚本执行过程中可疑的地方贴出来 (我现在没有vps,我自己安装vmware funsion测试的,我的os类型选择了1,因为我没有查询到vmware funsion采用了什么虚拟技术)
1
warning: remember to run 'libtool --finish /usr/lib/ipsec/plugins'
2
/usr/local/sbin/ipsec:行184: /usr/sbin/ipsec: 没有那个文件或目录
/usr/local/sbin/ipsec:行187: /usr/sbin/ipsec: 没有那个文件或目录
3
/usr/local/sbin/ipsec:行219: /usr/libexec/ipsec/starter: 没有那个文件或目录

下面是提示成功的消息
#############################################################

[Install Complete]
Version:1.2.0
There is the default login info of your IPSec/IkeV2 VPN Service
UserName: myUserName
PassWord: myUserPass
PSK: myPSKkey
you should change default username and password in /usr/local/etc/ipsec.secrets
you cert: /root/my_key/ca.cert.pem
you must copy the cert to the client and install it.

#############################################################

from one-key-ikev2-vpn.

lonone avatar lonone commented on May 21, 2024

@itiger88 @quericy 谢谢二位的努力,我照你们的意思配置如下可以实现andriod 6.0正常上网
conn android_xauth_psk
keyexchange=ikev1
ike=aes256-sha256-modp2048,3des-sha1-modp2048,aes256-sha1-modp2048!
esp=aes256-sha256_96,3des-sha1,aes256-sha1!
left=%defaultroute
leftauth=psk
leftsubnet=0.0.0.0/0
right=%any
rightauth=psk
rightauth2=xauth
rightsourceip=10.7.0.0/24
auto=add

from one-key-ikev2-vpn.

hoore avatar hoore commented on May 21, 2024

@lonone 按你的方法改了配置文件,安卓6.0还是无法上网啊

from one-key-ikev2-vpn.

TroyChen avatar TroyChen commented on May 21, 2024

@quericy @itiger88 感谢二位!感谢 @lonone 的配置信息!遇到同样的问题,我按照 lonone的配置修改之后Android 7.0也能正常上网了。

from one-key-ikev2-vpn.

freeyoung avatar freeyoung commented on May 21, 2024

关键应该是这一行

esp=aes256-sha256_96,3des-sha1,aes256-sha1!

应该和 libreswan 的 sha2_truncbug=yes 等同

from one-key-ikev2-vpn.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.