Docker利用Linux核心中的资源分脱机制,以及 Linux 核心名字空间(name space),来创建独立的软件容器(containers),可以在Linux实体下运作,避免启动一个虚拟机造成的额外负担。
L2TP/IPsec的Docker镜像部署很方便,这里以Teddysun.com的镜像部署为例:
1.安装并启动Docker:
wget -qO- get.docker.com | bash
验证
docker version
启动
systemctl start docker
查看状态
systemctl status docker
设置开机自启
systemctl enable docker
2.拉取镜像
docker pull teddysun/l2tp
3.创建启动环境参数文件:
/etc/l2tp.env
内容:
VPN_IPSEC_PSK=nonnix.com
VPN_USER=vpnuser
VPN_PASSWORD=vpnpassword
VPN_PUBLIC_IP=
VPN_L2TP_NET=
VPN_L2TP_LOCAL=
VPN_L2TP_REMOTE=
VPN_XAUTH_NET=
VPN_XAUTH_REMOTE=
VPN_DNS1=
VPN_DNS2=
VPN_IPSEC_PSK:预共享密钥
VPN_USER:默认的登录用户名
VPN_PASSWORD:默认的登录用户密码
VPN_PUBLIC_IP:指定公网 IP 地址,当你的 VPS 有多个公网 IP 时,可能需要手动指定一下
VPN_L2TP_NET:内网 L2TP 网段范围,默认为 192.168.18.0/24,一般此处留空即可
VPN_L2TP_LOCAL:内网 L2TP 网关 IP,默认为 192.168.18.1,一般此处留空即可
VPN_L2TP_REMOTE:内网 L2TP 网段分配给连接的 IP 段,默认为 192.168.18.10-192.168.18.250,一般此处留空即可
VPN_XAUTH_NET:内网 XAUTH 网段范围,默认为 192.168.20.0/24,一般此处留空即可
VPN_XAUTH_REMOTE:内网 XAUTH 网段分配给连接的 IP 段,默认为 192.168.20.10-192.168.20.250,一般此处留空即可
VPN_DNS1:默认 DNS 服务器,8.8.8.8,一般此处留空即可
VPN_DNS2:默认 DNS 服务器,8.8.4.4,一般此处留空即可
4.启动容器:
(注意另外需要将 500 和 4500 端口的 UDP 映射到宿主机的对外端口上)
docker run -d --privileged -p 500:500/udp -p 4500:4500/udp --name l2tp --env-file /etc/l2tp.env -v /lib/modules:/lib/modules teddysun/l2tp
5.一般操作:
查看启动日志
docker logs l2tp
列出全部用户及其密码
docker exec -it l2tp l2tpctl -l
新增一个用户
docker exec -it l2tp l2tpctl -a
删除一个用户
docker exec -it l2tp l2tpctl -d
修改一个用户的密码
docker exec -it l2tp l2tpctl -m
打印容器里 libreswan 和 xl2tpd 的版本信息
docker exec -it l2tp l2tpctl -v
打印控制脚本 l2tpctl 的帮助信息
docker exec -it l2tp l2tpctl -h
此镜像基于官方debian:stretch制作,使用了libreswan-3.27和xl2tpd-1.3.12,支持L2TP/IPsec PSK和IPSec Xauth PSK 两种连接方式。