为什么使用VPN访问您的家
快速链接
- 为什么使用VPN访问您的家
- 设置Pi
- 安装Raspbian
- 设置OpenVPN
- 证书颁发机构
- 进行一些按键
- 服务器配置
- 启动服务器
- 客户端设置
- 客户端配置
- 转发端口
- 连接到客户端
- 总结思想
您有很多理由想要远程访问家庭网络,而最好的方法是使用VPN服务器。 实际上,有些路由器允许您直接在路由器内设置VPN服务器,但是在很多情况下,您需要自己设置一个。
Raspberry Pi是实现此目的的好方法。 它们不需要大量的能量来运行,而且它们具有足够的能力来运行VPN服务器。 您可以在路由器旁边设置一个,基本上不用理会。
远程访问家庭网络后,您可以从任何地方访问文件。 您可以远程运行家用计算机。 您甚至可以在路上使用家中的VPN连接。 这样的设置可让您的手机,平板电脑或笔记本电脑像在家中任何地方一样工作。
设置Pi
在开始设置VPN之前,您需要设置Raspberry Pi。 最好用一个外壳和适当大小的存储卡来设置Pi,16GB应该足够了。 如果可能,请使用以太网电缆将Pi连接到路由器。 它将最大程度地减少网络延迟。
安装Raspbian
在树莓派上使用的最佳操作系统是Raspbian。 这是Raspberry Pi基金会提出的默认选择,它基于Debian(目前最安全,最稳定的Linux版本之一)。
转到Rasbian下载页面 ,并获取最新版本。 您可以在此处使用“精简版”版本,因为您实际上不需要图形桌面。
下载时,获取适用于您操作系统的最新版本的Etcher 。 下载完成后,解压缩Raspbian映像。 然后,打开Etcher。 从提取图像的位置选择Raspbian图像。 选择您的SD卡(首先插入它)。 最后,将图像写入卡中。
完成后,将SD卡留在您的计算机中。 打开文件管理器并浏览到存储卡。 您应该看到几个不同的分区。 查找“启动”分区。 这是其中包含“ kernel.img”文件的文件。 在“启动”分区上创建一个空的文本文件,并将其命名为“ ssh”,没有文件扩展名。
您终于可以连接您的Pi了。 确保最后插入它。 您将不需要屏幕,键盘或鼠标。 您将通过网络远程访问Raspberry Pi。
给Pi几分钟时间进行设置。 然后,打开Web浏览器并导航到路由器的管理屏幕。 找到Raspberry Pi,并记下其IP地址。
无论您使用的是Windows,Linux还是Mac,请打开OpenSSH。 使用SSH连接到Raspberry Pi。
$ ssh
显然,请使用Pi的实际IP地址。 用户名始终为 pi,密码为raspberry。
设置OpenVPN
将OpenVPN设置为服务器并不完全简单。 好消息是,您只需要执行一次。 因此,在深入研究之前,请确保Raspbian完全是最新的。
$ sudo apt更新$ sudo apt升级
更新完成后,您可以安装OpenVPN和所需的证书实用程序。
$ sudo apt install openvpn easy-rsa
证书颁发机构
为了在设备尝试连接到服务器时对它们进行身份验证,您需要设置一个证书颁发机构来创建sigining密钥。 这些密钥将确保只有您的设备才能连接到家庭网络。
首先,为您的证书创建一个目录。 移至该目录。
$ sudo make-cadir / etc / openvpn / certs $ cd / etc / openvpn / certs
到处寻找OpenSSL配置文件。 然后,将最新的链接到openssl.cnf。
$ ls | grep -i openssl $ sudo ln -s openssl-1.0.0.cnf openssl.cnf
在同一“ certs”文件夹中有一个名为“ vars”的文件。使用文本编辑器打开该文件。 Nano是默认设置,但是如果您更喜欢它,可以随时安装Vim。
首先找到KEY_SIZE变量。 默认设置为2048。 将其更改为4096。
出口KEY_SIZE = 4096
您需要处理的主要模块建立有关证书颁发机构的信息。 如果此信息准确无误,但可以记住的任何内容都可以。
导出KEY_COUNTRY =“ US”导出KEY_PROVINCE =“ CA”导出KEY_CITY =“ San Francisco”导出KEY_ORG =“ Fort-Funston”导出KEY_EMAIL =“”导出KEY_OU =“ MyOrganizationalUnit”导出KEY_NAME =“ HomeVPN”
一切准备就绪后,保存并退出。
您之前安装的Easy-RSA软件包包含许多脚本,可帮助您设置所需的所有内容。 您只需要运行它们。 首先添加“ vars”文件作为源。 这将加载您刚刚设置的所有变量。
$ sudo源./vars
接下来,清理密钥。 您没有任何密钥,因此不必担心会提示您密钥被删除的消息。
$ sudo ./clean-install
最后,建立您的证书颁发机构。 您已经设置了默认值,因此您可以接受它提供的默认值。 记住要设置一个强密码,并在密码后面的最后两个问题中回答“是”。
进行一些按键
您经历了所有麻烦来设置证书颁发机构,以便可以对密钥进行签名。 现在,该做些了。 首先为服务器构建密钥。
$ sudo ./build-key-server服务器
接下来,构建Diffie-Hellman PEM。 这就是OpenVPN用于保护您的客户端与服务器连接的方式。
$ sudo openssl dhparam 4096> /etc/openvpn/dh4096.pem
您现在需要的最后一个密钥称为HMAC密钥。 OpenVPN使用此密钥对客户端和服务器之间交换的每个单独的信息包进行签名。 它有助于防止对连接的某些类型的攻击。
$ sudo openvpn --genkey --secret /etc/openvpn/certs/keys/ta.key
服务器配置
你有钥匙。 设置OpenVPN的下一部分是服务器配置本身。 值得庆幸的是,您在这里不需要做很多事情。 Debian提供了一个基本配置,您可以使用它进行入门。 因此,首先获取该配置文件。
$ sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz> /etc/openvpn/server.conf
再次使用您作为文本编辑器来打开/etc/openvpn/server.conf。 您需要查找的第一件事是ca,cert和key文件。 您需要设置它们以匹配所创建文件的实际位置,这些文件全部位于/ etc / openvpn / certs / keys中。
ca /etc/openvpn/certs/keys/ca.crt cert /etc/openvpn/certs/keys/server.crt密钥/etc/openvpn/certs/keys/server.key#此文件应保密
找到dh设置,然后更改它以匹配您创建的Diffie-Hellman .pem。
dh dh4096.pem
还要设置HMAC密钥的路径。
tls-auth /etc/openvpn/certs/keys/ta.key 0
找到密码并确保它与下面的示例匹配。
密码AES-256-CBC
接下来有两个选项,但是用;注释掉。 删除每个选项前面的分号以启用它们。
推送“重定向网关def1旁路dhcp”推送“ dhcp选项DNS 208.67.222.222”推送“ dhcp选项DNS 208.67.220.220”
查找用户和组选项。 取消注释它们,然后将用户更改为“ openvpn”。
用户openvpn组nogroup
最后,这最后两行不是默认配置。 您需要在文件末尾添加它们。
设置身份验证摘要以为用户身份验证指定更强的加密。
#身份验证摘要身份验证SHA512
然后,将OpenVPN可以使用的密码限制为仅更强的密码。 这有助于限制对弱密码的可能攻击。
#限制密码tls密码TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256- CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC- SHA
这就是配置的全部。 保存文件并退出。
启动服务器
在启动服务器之前,需要使您指定的openvpn用户。
$ sudo adduser --system --shell / usr / sbin / nologin --no-create-home openvpn
它是仅用于运行OpenVPN的特殊用户,它不会做其他任何事情。
现在,启动服务器。
$ sudo systemctl start openvpn $ sudo systemctl start
检查它们是否都在运行
$ sudo systemctl状态openvpn * .service
如果一切正常,请在启动时启用它们。
$ sudo systemctl enable openvpn $ sudo systemctl enable
客户端设置
您的服务器现已设置并正在运行。 接下来,您需要设置客户端配置。 这是用于将设备连接到服务器的配置。 返回certs文件夹并准备构建客户端密钥。 您可以选择为每个客户端构建单独的密钥,也可以为所有客户端构建一个密钥。 对于家庭使用,一把钥匙应该没问题。
$ cd / etc / openvpn / certs $ sudo源./vars $ sudo ./build-key客户端
该过程几乎与服务器相同,因此请遵循相同的过程。
客户端配置
客户端的配置与服务器的配置非常相似。 同样,您有一个预制模板可作为您配置的基础。 您只需要修改它以匹配服务器。
切换到客户端目录。 然后,解压缩样本配置。
$ cd / etc / openvpn / client $ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/client.ovpn
使用文本编辑器打开client.ovpn文件。 然后,找到远程选项。 假设您尚未使用VPN,则Google搜索“我的IP是什么”。获取它显示的地址,然后为其设置远程IP地址。 保留端口号。
remote 107.150.28.83 1194#该IP具有讽刺意味的是VPN
更改证书以反映您创建的证书,就像对服务器所做的一样。
ca ca.crt cert client.crt密钥client.key
找到用户选项,然后取消注释。 以没有人的身份运行客户端很好。
用户无人组nogroup
取消注释HMAC的tls-auth选项。
tls-auth ta.key 1
接下来,寻找cipher选项,并确保它与服务器匹配。
密码AES-256-CBC
然后,只需在文件底部添加身份验证摘要和密码限制。
#身份验证摘要身份验证SHA512#密码限制tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH -AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA -128-CBC-SHA
一切正常后,保存文件并退出。 使用tar打包配置和证书,以便将它们发送到客户端。
$ sudo tar cJf /etc/openvpn/clients/client.tar.xz -C / etc / openvpn / certs / keys ca.crt client.crt client.key ta.key -C /etc/openvpn/clients/client.ovpn
随心所欲地将该软件包传送给客户端。 SFTP,FTP和USB驱动器都是不错的选择。
转发端口
为了使任何一种都能正常工作,您需要配置路由器以将传入的VPN流量转发到Pi。 如果您已经在使用VPN,则需要确保您不在同一端口上进行连接。 如果是这样,请更改客户端和服务器配置上的端口。
通过在浏览器中输入路由器的IP地址来连接到路由器的Web界面。
每个路由器都不同。 即使如此,它们所有人都应该具有某种形式的此功能。 在路由器上找到它。
每个路由器的设置基本相同。 输入开始和结束端口。 它们应彼此相同,并且应与您在配置中设置的相同。 然后,将IP地址设置为Raspberry Pi的IP。 保存您的更改。
连接到客户端
每个客户都是不同的,因此没有通用的解决方案。 如果您使用的是Windows,则需要Windows OpenVPN客户端 。
在Android上,您可以打开tarball,然后将密钥转移到手机上。 然后,安装OpenVPN应用程序。 打开应用程序,然后插入配置文件中的信息。 然后选择您的密钥。
在Linux上,您需要非常像安装服务器一样安装OpenVPN。
$ sudo apt安装openvpn
然后,转到/ etc / openvpn,然后解压缩您发送过来的tarball。
$ cd / etc / openvpn $ sudo tar xJf /path/to/client.tar.xz
重命名客户端文件。
$ sudo mv client.ovpn client.conf
暂时不要启动客户端。 它会失败。 您需要首先在路由器上启用端口转发。
总结思想
现在,您应该可以正常使用了。 您的客户端将直接通过路由器连接到Pi。 从那里,只要所有设备都连接到VPN,就可以在虚拟网络上共享和连接。 没有限制,因此您始终可以将所有计算机连接到Pi VPN。