用docker快速搭建l2tp服务器

作者: maofun 分类: 造船 发布时间: 2020-10-24 09:04

之前一直使用pptp的vpn,挺好用,搭建也挺简单,网上也有好多相关的博文,大家可以任找一篇参考。后来手贱,升级了ios10和mac os,结果新版系统不再支持pptp协议,只好重新搭建l2tp vpn,用了好几天,参考了好多篇博客,一直搭不出来。本来l2tp的配置要比pptp多的多,还有一些系统级的配置需要修改,有一定的技术门槛。后来快要放弃的时候,幻想如果有人已经弄好了一个系统,然后可以把他的系统拿过来用就好了,于是就想到了docker,后来在dockerhub中发现了l2tp的镜像,然后分分钟成功搭建vpn。
在开始搭建l2tp前,你的服务器需要安装git和docker,安装难度并不高,即便你不知道git和docker是什么,网上随便找个博客,照着执行一遍所有命令基本上就能安装成功。接下来就开始vpn的搭建了。备注:本文主要翻译自https://hub.docker.com/r/fcojean/l2tp-ipsec-vpn-server/

获取l2tp的镜像

这里有两种方式,一种是直接从docker hub上拉去已有的镜像,或者是从git上下载dockerfile然后通过命令行在本地生成镜像,两种方式都可用。

下载镜像

docker pull fcojean/l2tp-ipsec-vpn-server

本机build镜像

git clone https://github.com/fcojean/l2tp-ipsec-vpn-server.git
cd l2tp-ipsec-vpn-server
docker build -t fcojean/l2tp-ipsec-vpn-server 

开始使用镜像

我们会在git下载的目录l2tp-ipsec-vpn-server下看到一个 vpn.env.example文件,这文件就是用来保存你vpn账号、密码、和共享秘钥的。cat vpn.env.example > vpn.env 生成vpn.env文件,修改共享秘钥、账号密码,for example.

VPN_IPSEC_PSK=vmaofun
VPN_USER_CREDENTIAL_LIST=[{"login":"Test1","password":"test1"},{"login":"Test2","password":"test2"}]

这个配置文件就是使用共享秘钥 vmaofun, 并创建 Test1和Test2两个账号,另外如果要加更多账号,可以按json的格式往后加。

启动l2tp镜像

启动前有一点非常重要,需要运行如下命令以加载 IPsec NETKEY 内核模块,如果你忽略这一步,你的镜像启动后可能没法正常工作。

sudo modprobe af_key

然后就是启动镜像,加载env文件,并将对应端口和服务器的端口做绑定,直接执行如下命令。

docker run \
    --name l2tp-ipsec-vpn-server \
    --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

验证

你可以在服务器上执行下面这条命令验证下。

docker logs l2tp-ipsec-vpn-server

如果有如下输出,表示你的vpn正常工作了。
Connect to your new VPN with these details:

Server IP: xx.xx.xx.xx
IPsec PSK: xindoo.me
Users credentials :
Login : Test1 Password : test1
...
Login : Test2 Password : test2

经过这些步骤后,理论上你的l2tp服务器就搭建成功了,试试vpn是否可以正常使用。

一条评论
  • 不愿透露姓名的柳同学

    2022年3月23日 下午6:14

    您好,请问怎么修改会话时长?一段时间不用,就自动断开了,我想修改一下,如果您知道,请告知一下,谢谢!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注