一.背景
公司之前有用PPTP搭建了一个办公VPN,但是平时大家也没怎么用. 疫情爆发,这玩意需求就上来了,但是PPTP效果实在是太差,刚连上几分钟就给我无缘无故给断了。。。很无奈,也找不到出现了什么问题。 还有一个不想用PPTP的原因就是,我macos的电脑不支持PPTP协议,找了一些替代品的软件也不行,最终抛弃这个PPTP的解决方案。既然老板想白嫖,不想花钱弄VPN那只能找开源方案了。正好找到了一个开源办公VPN项目,支持Docker容器化部署,正合我意,给大家分享一下.
docker-ipsec-vpn-server: https://github.com/hwdsl2/docker-ipsec-vpn-server
支持L2TP/IPsec协议,Windows/Macos/安卓/IOS都支持。使用感觉还是很OK的,比PPTP稳定太多,但是偶尔也有问题会掉线重启服务又好了,毕竟白嫖,没花太多时间去研究为什么断线了.
二.使用
docker-compose.yml内容:
1 | version: '3' |
使用docker-compose up -d将容器运行起来即可. 需要注意的是要注入环境变量:
VPN_ADDL_USERS= 用户名 空格分隔 #连接的用户名
VPN_ADDL_PASSWORDS= 密码空格分隔 #对应用户的密码
500:500/udp、4500:4500/udp 这2个端口也要做映射,注意是UDP端口而非TCP,特别在防火墙或者安全组设置的时候注意一下,要不然搞半天说连接不上。 为什么是UDP呢? UDP不可靠啊,能建立TCP连接么? 这个不用担心, 这些IPsec VPN就是一种隧道加密速度,把【原始TCP的数据包】通过物理UDP协议来进行传输, 在这个层面你可以理解UDP是底层基础网络设施跟网线的作用差不多,我们只管真实TCP即可. 如果UDP丢包,那么TCP协议本身就是会重传,所以这些问题不用担心.
使用客户端连接即可,具体操作看项目文档都有相关资料。特别是Windows的相对麻烦,Macos新增一个VPN添加相关账号信息连接即可.