整体基于CentOS7.2实现。方案为“使用预共享密钥的L2TP/IPSec”
下载地址:http://download.csdn.net/download/gogoytgo/10266198
参考资料:https://teddysun.com/448.html
在此一键安装脚本上,删除了部分功能:
1)不配置防火墙,因为我们的业务不需要也不希望通过VPN直接转接到其他网络,而是通过程序实现。
2)仅保留CentOS相关的配置修改。
1.基本安装组件方法 :
yum -y install ppp libreswan
rpm -i xl2tpd-1.3.8-2.el7.x86_64.rpm
同时,建议不使用原装的libreswan, 新版本的兼容性更好,如果是CentOS7,可以直接使用我的编译结果
否则请按下面的方法自行编译
yum install nss-devel libevent-devel unbound unbound-devel systemd-devel libcap-ng-devel
make base USE_DNSSEC=false
#如果想要直接安装,make install
make install USE_DNSSEC=false
#如果想要移植,make tarpkg
make tarpkg USE_DNSSEC=false
2.关于Android设备的兼容问题 :
在测试时,发现华为手机无法接入,而使用IOS/PC/其他安卓手机均能接入。
查询了网络资料,看到了是Android 6.0和早期Linux内核的程序,使用了一个坏的SHA2-256算法。
有很多资料会建议你(上面的脚本也是)在/etc/ipsec.conf 中增加
sha2-truncbug=yes
这句话的意思就是让你使用坏的SHA2-256算法。那么,当正确的SHA2-256(例如华为手机)来连接时,就挂了。因此需要根据实际情况取舍。
IOS和WIN不使用SHA2-256,所以没影响。
3.日志诊断 :
1)服务端的鉴权日志在 /var/log/secure
2)客户端连接的日志在 /var/log/messages
4.文件说明 :
config_vpn_server.sh
#服务端配置脚本,配置完毕后自动启动
config_vpn_server.sh [你的公网IP] [PSK] [用户名] [密码]
config_vpn_client.sh
#服务端客户端配置脚本
config_vpn_client.sh [对端的公网IP] [PSK] [用户名] [密码]
#客户端配置完毕后,通过start_vpn.sh和stop_vpn.sh 启动/停止
start_vpn.sh
客户端启动脚本
stop_vpn.sh
客户端停止脚本
libreswan_src-3.23.tar.gz
libreswan最新版本源码
libreswan_dst-3.23.tgz
libreswan我基于CentOS7.2的编译结果包
部署方法:
cd /
tar xvf libreswan-3.23.tgz
systemctl enable ipsec.service
xl2tpd-1.3.8-2.el7.x86_64
前面提到的安装文件