1、前言:
pptp和l2tp是我们最常用的vpn,之前我们用pptp,使用过程中发现新版ios系统不支持pptp协议;另客户端连接iphone的热点后使用pptp无法连接vpn。为了更方便办公,我们需要搭建l2tp/ipsec vpn。如果基于原生态的安装,还是比较麻烦的 请参照:https://blog.csdn.net/yanggd1987/article/details/77285056。这里介绍的是基于docker的安装,实际上就是直接使用别人安装编译好的镜像文件。非常简单方便。
2、下载镜像到本地:
docker pull fcojean/l2tp-ipsec-vpn-server3、设置vpn账号(vpn.env):
$vi vpn.env
VPN_IPSEC_PSK=shiguanghui
VPN_USER_CREDENTIAL_LIST=[{"login":"admin","password":"admin"},{"login":"test","password":"test"}]
4、制作启动脚本(vpn.sh):
#!/bin/bash
APP_NAME=vpn
IP=172.72.0.98
echo "restart $APP_NAME..."
docker stop $APP_NAME && echo "停止服务成功!" || echo "停止服务失败!"
docker rm $APP_NAME && echo "销毁服务成功!" || echo "销毁服务失败!"
docker run --detach\
--name $APP_NAME \
--hostname $APP_NAME \
--net yaoknet --ip $IP \
--env-file ./vpn.env \
-p 500:500/udp \
-p 4500:4500/udp \
-v /lib/modules:/lib/modules:ro \
-d --privileged \
fcojean/l2tp-ipsec-vpn-server
网络和ip都是个性化子定义的, 可以不定义,直接删除这行: --net yaoknet --ip $IP
5、启动
$ ./vpn.sh到此VPN安装已经完成。 你可以使用常规的vpn客户端连接。如果在linux环境下,有点麻烦,又要需要配置一堆东西。参见步骤6;
6、centos客户端设置
a) 安装vpn客户端
yum -y install epel-release
yum -y install strongswan xl2tpd
b) 设置环境变量
当然你也可以不用设置,在下面的内容里面直接使用真实的环境替换;
$ vi /etc/profile
VPN_SERVER_IP='your_vpn_server_ip'
VPN_IPSEC_PSK='your_ipsec_pre_shared_key'
VPN_USER='your_vpn_username'
VPN_PASSWORD='your_vpn_password'
配置strongSwan:
cat > /etc/ipsec.conf <<EOF
config setup
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev1
authby=secret
ike=aes128-sha1-modp1024,3des-sha1-modp1024!
esp=aes128-sha1-modp1024,3des-sha1-modp1024!
conn myvpn
keyexchange=ikev1
left=%defaultroute
auto=add
authby=secret
type=transport
leftprotoport=17/1701
rightprotoport=17/1701
right=$VPN_SERVER_IP
EOF
cat > /etc/ipsec.secrets <<EOF
: PSK "$VPN_IPSEC_PSK"
EOF
修改访问权限,备份与配置文件的连接
chmod 600 /etc/ipsec.secrets
mv /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.old 2>/dev/null
mv /etc/strongswan/ipsec.secrets /etc/strongswan/ipsec.secrets.old 2>/dev/null
ln -s /etc/ipsec.conf /etc/strongswan/ipsec.conf
ln -s /etc/ipsec.secrets /etc/strongswan/ipsec.secrets
xl2tpd的配置:
cat > /etc/xl2tpd/xl2tpd.conf <<EOF
[lac myvpn]
lns = $VPN_SERVER_IP
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes
EOF
cat > /etc/ppp/options.l2tpd.client <<EOF
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
noccp
noauth
mtu 1280
mru 1280
noipdefault
defaultroute
usepeerdns
connect-delay 5000
name $VPN_USER
password $VPN_PASSWORD
EOF
chmod 600 /etc/ppp/options.l2tpd.client
c) 创建xl2tpd的控制文件:
mkdir -p /var/run/xl2tpd
touch /var/run/xl2tpd/l2tp-control
d) 重启vpn客户端,让配置生效
service strongswan restart
service xl2tpd restart
e) 启动IPsec和L2TP 的连接
strongswan up myvpn
echo "c myvpn" > /var/run/xl2tpd/l2tp-control
f)停止连接
echo "d myvpn" > /var/run/xl2tpd/l2tp-control
strongswan down myvpn
客户端设置请参照:
https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients.md#linux-vpn-clients