白驹过隙,这篇文章距今已有一年以上的历史。技术发展日新月异,文中的观点或代码很可能过时或失效,请自行甄别:)

背景

公司业务对接某第三方服务的需要,因为对方服务器白名单机制,需要一个固定IP. 而悲催的是由于公司网络环境无法提供公网IP,只好在外网测试机上面部署一个vpn来进行中转.PPTP因为安全原因现在osx和windows10好像都废弃了,那就直接上l2tp吧!想起以前搭建vpn那累死人的重复劳动,果断使用Docker集装箱.

部署

安装docker

这步骤就不说了,自己去docker.com上找教程,真的是分分钟

pull镜像

hub.docker.com上很多镜像,找了一个下载量最多的hub,pull下来

docker pull hwdsl2/ipsec-vpn-server

启动

启动之前,先执行下:

sudo modprobe af_key

然后建立一个vpn.env文件,内容如下:

VPN_IPSEC_PSK=这里填一个随机字符串,随便输吧,32位以内
VPN_USER=这里输入vpn的登录名
VPN_PASSWORD=这里输入vpn的登录密码

保存该文件在该文件当前目录下执行:

docker run \
    --name l2tp-vpn-server \
    --env-file ./vpn.env \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -v /lib/modules:/lib/modules:ro \
    -d --privileged \
    --restart=always \
    hwdsl2/ipsec-vpn-server

然后等几秒之后执行:

docker logs l2tp-vpn-server

应该可以看到如下的信息:

Connect to your new VPN with these details:

Server IP: xxxxx
IPsec PSK: xxxx
Username: xxxx
Password: xxxx

好了,基本上这个时候就可以了,如果你发现你连不上,最好检查下你的阿里云的这台主机对应的安全组,记得把500和4500的公网入和公网出的udp权限打开即可!