用Docker快速为办公室搭建VPN

由于武汉肺炎疫情原因,随时可能会封城,导致无法前往办公室办公。如果公司没有提供VPN,为了在居家办公时能有一个连接办公室资源的方法,可以考虑自己搭一个简易的VPN。

搭建VPN

服务器准备

准备一个服务器,能够访问公司办公室各资源,而且能连接互联网。配置好之后,安装Docker,并开放服务器443端口。

安装容器和VPN配置

前往https://github.com/wppurking/ocserv-docker,将内容全部下载。也可以直接输入命令:

git clone https://github.com/wppurking/ocserv-docker.git

进入ocserv-docker/ocserv目录,清空ocpasswd文件内容,删除默认账号。

再修改ocserv.conf,在结尾增加:

route = 192.168.0.0/255.255.255.0

custom-header = "X-CSTP-Client-Bypass-Protocol: true"

route后面的IP需要根据实际情况配置。例如公司内网采用192.168网段,那么就是192.168.0.0/255.255.255.0。如果不确定,也可以不增加route这行配置,这样连上VPN后所有流量都会通过VPN访问。

启动VPN

下载完成后,进入该目录并启动容器:

cd ocserv-docker
docker run -d --privileged --restart unless-stopped --name ocserv-docker -v ~/ocserv-docker/ocserv:/etc/ocserv -p 443:443/tcp wppurking/ocserv

# 查看日志,检查是否正常运行
docker logs ocserv-docker

分配账号密码

docker exec -it ocserv-docker ocpasswd 用户名

输入两遍密码,修改立即生效,无需重启VPN服务器。

公网映射

VPN搭好之后,需要将该VPN服务器的443端口映射到公网上面。如果公司有公网IP,而且能够进行配置,可找相应部门把端口配置好。如果没有相应资源,可参考内网穿透教程进行配置。

VPN客户端

下载Cisco AnyConnect客户端,下载完成后进行安装。

第一次启动时,需要进入设置页面,将“Block connections to untrusted servers”前面的勾取消。

输入VPN公网映射之后的地址和端口,点击Connect即可连接。启动后会出现安全提示,点击“Connect Anyway”连接,然后输入账号密码即可连接VPN。

扩展思考:能不能用来翻墙?

当然可以,在国外服务器上用相同方式部署一套VPN软件即可,但是由于Cisco AnyConnect的流量特征太明显,所以建议用其他更可靠的方式翻墙。