首页 > Linux > 通过Win10自带的VPN客户端访问strongSwan服务器

通过Win10自带的VPN客户端访问strongSwan服务器

2015年10月31日 LTNS     访问次数 76 发表评论 阅读评论

之前在VPS上用strongSwan搭建过pure IPsec VPN服务器,实现了iOS、Android、Win7/8、WinXP等多平台VPN客户端的访问(详见 前文1前文2)。

最近VPS供应商升级,Xen虚拟机换成了KVM,于是重装了strongSwan,iOS、Android、Win7/8、WinXP等平台的自带或第三方VPN客户端没问题,但使用Win10自带的VPN客户端却无法访问,经网上搜索折腾了一番最后解决问题,在此作个记录。

strongSwan目前最新版 v5.3.3,跟之前的4.x版本的安装略有差异。KVM虚拟机上已安装了Debian 7 (Wheezy)操作系统,ssh远程登录后运行如下命令

apt-get update
apt-get install build-essential     #安装编译环境
aptitude install libgmp3-dev libssl-dev pkg-config libpcsclite-dev libpam0g-dev     #编译所需要的软件
 
cd /usr/src
wget http://download.strongswan.org/strongswan-5.3.3.tar.gz
tar zxvf strongswan-5.3.3.tar.gz
cd strongswan-5.3.3
 
#配置编译参数,图省事把eap相关的都选上了,应该可以省去一些,请自行参考官网说明
./configure --prefix=/usr --sysconfdir=/etc --disable-gmp --enable-unity --enable-openssl --enable-md4 --enable-xauth-eap --enable-xauth-pam --enable-eap-mschapv2 --enable-eap-aka --enable-eap-aka-3gpp2 --enable-eap-gtc --enable-eap-identity --enable-eap-md5 --enable-eap-peap --enable-eap-radius --enable-eap-sim --enable-eap-sim-file --enable-eap-sim-pcsc --enable-eap-simaka-pseudonym --enable-eap-simaka-reauth --enable-eap-simaka-sql --enable-eap-tls --enable-eap-tnc --enable-eap-ttls
 
make
make install

strongSwan编译安装完成后,需要修改配置文件 /etc/ipsec.conf

config setup
        uniqueids=yes
        #charondebug="net 0"
        #crlcheckinterval=10m
        strictcrlpolicy=yes

ca vpnca
        cacert=caCert.pem
        crluri=crl.pem
        auto=add

conn %default
        auto=add
        left=%defaultroute
        leftsubnet=0.0.0.0/0
        right=%any

conn ios
        keyexchange=ikev1
        authby=xauthpsk
        xauth=server
        leftfirewall=yes
        rightsubnet=10.11.0.0/24
        rightsourceip=10.11.0.0/24
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=clear

conn win7&android
        keyexchange=ikev2
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        dpdaction=clear
        dpddelay=300s
        rekey=no
        leftauth=pubkey
        leftcert=serverCert.pem
        leftid="C=CH, O=strongSwan, CN=VPS的公网ip"
        rightsourceip=10.11.1.0/24
        rightauth=eap-mschapv2
        rightsendcert=never
        eap_identity=%any

conn cisco
        keyexchange=ikev1
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        dpdaction=clear
        dpddelay=300s
        rekey=no
        #leftauth=pubkey
        leftcert=serverCert.pem
        leftid="C=CH, O=strongSwan, CN=VPS的公网ip"
        rightsourceip=10.11.2.0/24
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
        type=tunnel
        authby=xauthrsasig
        xauth=server

 
以及 /etc/strongswan.conf,在charon项里添加dns等内容

# strongswan.conf - strongSwan configuration file

charon {
dns1 = 8.8.8.8
dns2 = 208.67.222.222
cisco_unity = yes
	load_modular = yes
...

 
运行如下十行命令然后添加到 /etc/rc.local文件的末尾(exit 0 那一行之前即可)

iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.11.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -s 10.11.0.0/24 -j ACCEPT
 
echo 1 > /proc/sys/net/ipv4/ip_forward
 
iptables -t nat -A POSTROUTING -s 10.11.1.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -s 10.11.1.0/24 -j ACCEPT
 
iptables -t nat -A POSTROUTING -s 10.11.2.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -s 10.11.2.0/24 -j ACCEPT
 
ipsec restart

添加账号、制作和注销客户端证书的方法跟以前一样,这里不再赘述,详见前文。

顺便提一下,为避免更换已有的客户端证书,升级或迁移服务器之后先恢复备份的ca证书等,然后只需重新制作服务器证书即可。至此,iOS、Android、Win7/8、WinXP等多平台自带或第三方的VPN客户端应该就能正常访问服务器了。

而Win10自带的VPN客户端虽然能连上服务端(具体设置方法可参考 这里),但无法全局代理(即,客户端的上网流量未走服务端)。在Win10的CMD窗口里用 route print 命令检查路由表,发现缺少走VPN服务端的路由,试着手工添加一条路由后问题解决,但还是不能FAN WALL,进一步检查这才发现是VPN服务端推送的DNS未生效的缘故。

经上网搜索,才得知Win10目前存在bug,连通后VPN服务器推送的DNS不会生效,需要关闭本地网卡的ipv6协议,以及vpn连接的split tunneling功能,才能解决这个问题。

如下图所示关闭本地网卡的ipv6协议
close win10 ipv6 protocol

然后进入CMD窗口,运行如下命令
powershell_____#进入ps控制台
___get-vpnconnection_____#检查vpn连接的设置(包括vpn连接的名称)
___set-vpnconnection “vpn连接名称” -splittunneling $false_____#关闭split tunneling
___get-vpnconnection_____#检查修改结果
___exit_____#退出ps控制台

 
 

参考文章
http://answers.microsoft.com/en-us/windows/forum/windows_10-networking/win-10-dns-resolution-of-remote-network-via-vpn/513bdeea-0d18-462e-9ec3-a41129eec736?auth=1

 

分类: Linux 标签: , , , , , ,
  1. ylx
    2016年3月14日09:43 | #1

    怎么联系..help

  2. ylx
    2016年3月14日09:43 | #2

    fk验证码是中文

  3. 夏诚
    2016年4月20日08:42 | #3

    楼主,你有没有遇到过这样的问题:
    strongswan 5.3.5,android6.0,华为,3G网络
    在有的地方可以连接vpn,而同样的android客户端,则在某些地方无法连接vpn,出现
    04-20 11:51:04.506 17143-17715/org.strongswan.android I/charon: 10[ENC] invalid DH public value size (128 bytes) for MODP_2048
    04-20 11:51:04.506 17143-17715/org.strongswan.android I/charon: 10[IKE] applying DH public value failed
    这样的错误的

    • LTNS
      2016年4月23日01:30 | #4

      没遇到过,我以前只遇到过通过wifi上网时因为路由器禁止了IPSec VPN穿透导致连接失败,改用移动运营商的数据网络后就正常了。

      我还在用android 4.x,另外,请问你用的是哪个客户端?

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
3 * 1 = (必填)