用docker快速搭建l2tp VPN服务器

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-server

3、设置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

猜你喜欢

转载自blog.csdn.net/shgh_2004/article/details/80775213