之前聊过暴露服务器到外网,比如有公网IP通过NAT或DMZ方式暴露机器到公网,那还多余搭建VPN干啥, 从某些角度看确实有相同的地方,比如都可以从外网访问到内网机器,但是VPN更像是把外网的机器虚拟的放到内网中,这样就可以访问内网中的任何设备了.
如果服务端部署在公司机器上,那么有疫情就可以居家办公了.
如果服务端部署在家庭网中树莓派或闲置机器,也可以随时访问家中的设备了.如远程养鱼等.
今天使用的是Docker来搭建,需要基本的Docker使用知识,以下操作基于Debian的树莓派,CentOS系统基本一样,操作步骤超级简单:
0.前提
需要在服务端提前安装好Docker,如果不会操作也可以留言.
1.搭建VPN服务器
拉取镜像
docker pull hwdsl2/ipsec-vpn-server:debian
启动一个容器实例
docker run \
--name ipsec-vpn-server \
--env-file /usr/local/etc/ipsecVpn.env \
--restart=always \
-p 500:500/udp \
-p 4500:4500/udp \
-d --privileged \
hwdsl2/ipsec-vpn-server:debian
参数说明:
每行后边的\不要去掉,它表示一条命令没结束,在下一行继续
--name 表示启动后实例的名称
--env-file 表示配置文件的位置,可配置用户名密码,密钥等,参考如下, VPN_IPSEC_PSK的长度至少20位
VPN_IPSEC_PSK=abcx1x2x3x4x5xx67890x
VPN_USER=test
VPN_PASSWORD=testvpn123
--restart 表示每次启动docker服务后自动启动这个实例
-p 表示把容器中的端口映射到主机的对应端口上
启动后验证是否启动成功,可以用docker ps 命令, 也可以用netstat查看端口是否在监听
更深入的操作参考 https://github.com/hwdsl2/docker-ipsec-vpn-server/blob/master/README-zh.md
2.防火墙开端口
执行如下两行命令
ufw allow 500/udp comment 'docker的VPN使用'
ufw allow 4500/udp comment 'docker的VPN使用'
如果是CenterOs系列,则用Firewall-cmd开端口
3.客户连连接
可以是Mac,Windows,Linux,鸿蒙,Android,iOS等.