导语:想要保护好自己Raspberry Pi的网络隐私,OpenVPN无疑是Linux下开源VPN的先锋,它可以提供良好的性能和友好的用户操作界面。
为什么选择Raspberry Pi+OpenVPN的组合
如果你是个DIY发烧友,那么Raspberry Pi一定是你最好的选择。而想要保护好自己的网络隐私,OpenVPN无疑是Linux下开源VPN的先锋,它可以提供良好的性能和友好的用户操作界面。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。目前OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Microsoft Windows以及Android和iOS上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。
由于OpenVPN是私有协议,需要专有的客户端,因此在Android、iOS、WP8上使用比较困难。把Raspberry Pi和OpenVPN结合起来搭建软AP可以较方便的解决这些问题。
piVPN是一组shell脚本,可以使用免费的开源OpenVPN软件轻松地将Raspberry Pi转换为VPN服务器。该脚本的主要部分安装并配置了在Raspbian Jessie上的OpenVPN,并在Ubuntu 14.04上测试了从Amazon AWS镜像运行的版本。这些脚本会尝试检测不同的发行版并相应地做出调整,它们应该会在大多数基于Ubuntu和Debian的设备上运行,包括那些默认使用UFW而不是原始iptables的版本。UFW即简单防火墙,是一个Arch Linux、Debian 或 Ubuntu 中管理防火墙规则的前端。而IPTABLES则是与最新的3.5版本Linux内核集成的IP信息包过滤系统。如果Linux系统连接到因特网或 LAN、服务器或连接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。
这个脚本的主要任务是允许用户拥有一个尽可能高性价比的家庭VPN。因此,piVPN的设计可以使用Raspberry Pi(35美元)和一个命令安装程序,然后使用“pivpn”命令轻松管理VPN。
所需的软件、硬件及注意事项
需要什么:
1.带有以太网端口的Raspberry Pi Model B或更高版本;
2.安装了Raspbian的SD或microSD卡(具体取决于型号);
3.符合你设备型号的电源适配器;
4.一个以太网电缆或WiFi适配器,以将你的Pi连接到你的路由器或网关。
注意事项:
1.使用通过https://raspberrypi.org/downloads来下载Raspbian Jessie Lite的最新映像,否则,请务必在搭建piVPN之前制作将现有的备份进行映像。
2.应该使用静态IP地址设置你的Pi,具体过程请点击源代码1或源代码2,但这不是必需的,因为脚本可以为你自动执行此操作。
3.转发1994端口(UDP)到树莓派的内部IP地址或在安装程序中选择的任何自定义端口,如何操作取决于你的路由器型号。
4.强烈建议在你的Pi上启用SSH,这样在设置树莓派的时候我们就不需要显示器和无线键盘了。
安装过程
curl -L https://install.pivpn.io | bash
该脚本将首先更新你的APT存储库、升级包和安装OpenVPN,这需要一些时间。它还会询问你希望服务器使用哪种加密位数,比如时1024位,2048位,或4096位。如果你不确定用哪种加密方法,我还是建议用2048位。
在密码学里,数字证书认证机构(CA)是一个签发数字证书的实体。这个数字证书证明对一个公钥的所有权。
你可能使用过,但却不知道它。比如,登录网银的时候,如果我点击地址栏前HTTPS的链接那把锁,会看见一个公司的名字GeoTrust,验证了当前访问的银行网站的合法性。在这里,我充当自己的认证授权机构,签发给我自己OpenVPN的密钥,而不是信赖某个第三方公司。
对于非对称密钥,一般的看法是,1024位密钥已经不足以起到防御作用了,使用2048位是最保险的,所以确保激活的PKI(包括CA根密钥对)中的所有密钥至少使用2048位密钥是明智的选择。
虽然目前几乎所有的RSA系统(包括OpenVPN)都可以接受高达4096位的数据,但是使用这个高位的密钥会大大增加TLS操作的生成时间,TLS握手延迟和CPU使用率。
加密位数确定好以后,脚本将返回到命令行,因为它构建了服务器自己的证书颁发机构,也就是说我充当了自己的认证授权机构,签发了自己OpenVPN的密钥。此时脚本会询问你是否愿意更改证书字段、默认端口以及客户端的DNS服务器等。如果你知道你想要更改的内容,请随时查看,因为脚本会将所有需要的信息放到不同的配置文件中。如果你不确定有什么内容要更改,就按设计好的流程走就可以了,你可以通过简单地提示,不断点击直到所有的配置都完成。
设置完成后,脚本将花费一些时间来构建服务器的Diffie-Hellman密钥交换。如果你选择了1024位加密,这只需要几分钟,但是如果你选择了2048位,它将花费更长的时间,如果你使用的是Raspberry Pi Model B以上的版本,时间会在40分钟到几个小时不等。该脚本还将对你的系统进行一些更改,以允许它转发互联网流量并允许VPN连接通过Pi的防火墙。
切记,树莓派的防火墙配置在重启后将会重置为默认。我们必须保证它记得OpenVPN的访问总是允许的。需要编写一个小脚本在每次启动时运行。
nano /etc/firewall-openvpn-rules.sh
这是一个空白的可执行脚本文件,输入以下代码。
#!/bin/sh iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT –to-source 192.168.XX.X
别忘记把默认IP地址改为你的树莓派的IP地址。
其中10.8.0.0是默认的树莓派地址。“eth0”代表使用的以太网卡。如果使用无线网卡的话,可以修改为wan0,不过不推荐这样做。按CONTROL+X保存退出。
当脚本通知你已经完成配置OpenVPN时,它会询问你是否需要重新启动。切记一定要重启树莓派,这样piVPN服务器就构建成功了,具体的构建视频请点此链接观看视频演示:https://www.youtube.com/embed/9RSHSt4RuLk?feature=oembed
如何使用PiVPN
虽然,piVPN服务器已经构建成功了,不过因为现在还没有用户来连接,它还没有起到保护传输数据的作用,接下来要做的就是生成用户名。
由于你现在已经为客户端创建了访问的密钥,但是还没有告诉客户端服务器的访问地址、如何连接、以及用什么密钥访问。所以,此时你可以使用命令“pivpn”来管理服务器。
“pivpn add”将提示你为你的客户机输入一个名称,你可以选择任何你喜欢的名称。点击“进入”选项后,你将被要求输入客户端密钥,一定要记住你设置的密钥。此时,该脚本将组装客户端.ovpn文件并将其放置在主目录中的“ovpns”目录中。
如果你需要创建一个没有密码保护的客户端证书即在路由器上使用,那么你可以使用“pivpn add nopass”选项来生成该证书。
“pivpn revoke”会要求你撤销设置的用户名称,一旦你撤销了客户端,它将不再允许你使用给定的客户端证书(ovpn config)来连接。这在很多情况下都很有用,除了个别的情况,比如,你手机丢失或被盗,那配置文件也会随着丢失,就要撤销其证书并为你在新手机生成一个新证书。又或者你怀疑某个证书被攻击了,也要撤销该证书生成新证书。
如果你添加的用户数量很多,“pivpn list”将为你提供一个很好的用户名管理列表,告诉你这些用户名的证书是否仍然有效,或者是否已经被撤销,你可以运行“pivpn”来查看所有选项。
::: Control all PiVPN specific functions! ::: ::: Usage: pivpn <command> [option] ::: ::: Options: ::: -a, add [nopass] Create a client ovpn profile, optional nopass ::: -c, clients List any connected clients to the server ::: -d, debug Start a debugging session if having trouble ::: -l, list List all valid and revoked certificates ::: -r, revoke Revoke a client ovpn profile ::: -h, help Show this help dialog ::: -u, uninstall Uninstall PiVPN from your system!