之前聊过暴露服务器到外网,比如有公网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等.
参考
https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md
如果Mac之前连过无密钥的VPN,请检查文件/etc/ppp/options ,本次连接VPN请注释掉 #l2tpnoipsec
当然如果内网中没有公网IP可以通过frp映射相应端口到有公网IP的机器上 (如VPS)也一样.参考<<没有公网IP的机器如何能被外网访问>>
扩展:
如果公司网络限制访问视频音乐等网站,则连接VPN后即可突破此限制,且手机亦同理.
如果有国外的VPS, 那么科学上网也是一样的道理
-----------------end-----------------