一.背景
公司之前有用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内容:- version: '3'
- services:
- vpn:
- image: hwdsl2/ipsec-vpn-server
- restart: always
- env_file:
- - ./vpn.env
- ports:
- - "500:500/udp"
- - "4500:4500/udp"
- privileged: true
- hostname: ipsec-vpn-server
- container_name: ipsec-vpn-server
- volumes:
- - ./ikev2-vpn-data:/etc/ipsec.d
- - /lib/modules:/lib/modules:ro
复制代码 使用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添加相关账号信息连接即可. |