树莓派打造ALL IN ONE(10):Docker部署OpenVPN服务器访问内网

除了可以通过内网穿透远程访问内网的服务以外,还可以自己搭建一个VPN虚拟专用网络直接接入到内网的网络,很高级的感觉有木有,自己搭建VPN听起来就是很牛批的一件事,我们通常所理解的VPN,俗称翻墙,大概意思就是 :我们在中国大陆,因为中国大陆和某些境外网站(Youtube,Google ,Facebook,twitter)之间有一道无形的网络安全防护墙,我们就无法直接访问这些境外网站,需要翻墙连接到国外网络。本文所讲VPN不是让你访问国外网站,本文所述VPN的使用场景是:我们家里的Wi-Fi,路由器网络等,是局域网,称为内网 ,内网的特点就是出了内网就不能访问内网上的网络服务了(简单来说就是你出门了就连不上Wi-Fi了,不属于这个内网了,自然也 无法访问内网的服务了)与之对应的就是公网(公网本身就是可以在任何地方访问的,比如百度,你在任何地方都可以访问百度,因为他在公网上),类比一下也就是说,出门之后,我们的手机就和家里的Wi-Fi网络直接 有了一道墙,不能够访问了,所以本文所述VPN是打通我们和家里局域网内网之间的墙,使得能够在任何地方访问家里的网络服务。与内网穿透相比 ,VPN的好处在于,不用每一个服务都要内网穿透一下,VPN挂上之后相当于我们就身处内网环境中了(打开了一个隧道,跟连上了内网没什么区别),可以直接访问内网下的所有网络服务,无需每个服务都穿透到公网上很麻烦,当然现在我是用家里的树莓派作为VPN服务器,所以还是需要把VPN这一个端口穿透一下,别的就可以不用了,连上VPN之后我就有了和树莓派一样的网络环境了。假设你有一个境外的服务器,那你可以直接架设到服务器上(当然就不是以docker的方式了,直接源码编译安装),你就免(zi)费(you)了。下面进入正题:

Step1:连上SSH,拉取镜像

sudo docker pull giggio/openvpn-arm

Step2:初始化保存配置文件和证书的容器

docker volume create --name ovpn-data
docker run -v ovpn-data:/etc/openvpn --rm giggio/openvpn-arm ovpn_genconfig -u udp://YOUR_PUBLIC_NET_ADRESS
docker run -v ovpn-data:/etc/openvpn --rm -it giggio/openvpn-arm ovpn_initpki nopass

Step3:启动 OpenVPN 服务器进程

docker run -v ovpn-data:/etc/openvpn -d --name openvpn -p 1194:1194/udp --cap-add=NET_ADMIN giggio/openvpn-arm

Step4:生成没有密码的客户端证书

docker run -v ovpn-data:/etc/openvpn --rm -it giggio/openvpn-arm easyrsa build-client-full YOUR_CLIENTNAME nopass

Step5:使用嵌入式证书检索客户端配置

sudo docker run -v ovpn-data:/etc/openvpn --rm giggio/openvpn-arm ovpn_getclient YOUR_CLIENTNAME > YOUR_CLIENTNAME.ovpn

Step6:客户端连接服务器

Step5执行完之后,会生成一个YOUR_CLIENTNAME.ovpn的文件在/home/pi路径下,下载下来记事本打开如下:

检查服务器公网IP和端口,记得要在frp里面配置1194端口穿透出来 。

下载OpenVPN Connect客户端,Windows,Android,iOS都有免费,这里以Windows为例:

到这个地址下载https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.4-I604-amd64.msi

安装完成后打开客户端,任务栏右下角会出现openvpn的图标:

右击图标,弹出菜单,选择导入配置文件:

导入之后,再次右击图标,就会出现连接选项,点击连接即可。

连接成功后,就跟在局域网内没有区别了,直接访问内网的IP地址即可访问对应内容。

可见我虽然不在家,一样可以通过内网IP访问我的Homeassistant,别的也一样。

累了,拜拜

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注