您正在出差,连接着酒店或共享办公空间的Wi-Fi,突然发现某些网站被屏蔽——或者更糟,您的流量可能被拦截。解决方案?一个个人VPN,托管在您家中,使用Raspberry Pi和WireGuard协议。与商业VPN服务不同,您可以完全控制自己的数据和配置。而且,设置起来比您想象的要简单得多。
为什么选择个人VPN而不是付费服务?
商业VPN承诺匿名和地理解锁,但它们有两个主要缺点:它们可以看到您的所有流量,并且经常被最严格的防火墙屏蔽。通过在您家中的Raspberry Pi上搭建自己的VPN服务器,您可以获得一个加密连接到您家中的通道,就像您在自己的本地网络上一样。正如Jeff Geerling博客中的一篇文章所指出的,这允许您从外部访问您的NAS、编辑服务器或任何其他本地服务,而无需暴露敏感端口。此外,这种基于WireGuard的个人VPN更难被屏蔽,因为它使用单个UDP端口,甚至可以伪装成HTTPS流量。
所需硬件和准备
开始之前,您需要:
- 一个Raspberry Pi(3B+或更高版本,推荐Pi 4或5以获得更好的性能)
- 一张microSD卡(16GB足够)
- 稳定的电源
- 首选有线互联网连接(Wi-Fi可能可行,但以太网更可靠)
- 一个域名或公共IP地址(如果可能,固定IP,否则使用DDNS)
在SD卡上安装Raspberry Pi OS Lite(无图形界面),启用SSH并登录。使用`sudo apt update && sudo apt upgrade -y`更新系统。
安装PiVPN:简化一切的利器
与其手动配置WireGuard,不如使用PiVPN,这是一个自动创建服务器和生成客户端配置文件的安装脚本。它的优点在于:它还管理防火墙规则、路由,甚至通过DDNS服务集成动态IP地址。Level1techs论坛提醒正确配置iptables的重要性,以便VPN可以访问互联网,同时必要时限制对本地网络的访问。
执行命令:`curl -L https://install.pivpn.io | bash`
按照屏幕上的说明操作:选择WireGuard作为协议,选择网络接口(首选eth0),设置端口(默认51820即可),并配置您的DNS(例如1.1.1.1或您的ISP的DNS)。安装完成后,使用`pivpn add`生成客户端配置文件,并导出`.conf`文件。
路由器配置:关键步骤
要使您的VPN可以从外部访问,您必须在路由器上打开UDP端口51820,并将其重定向到Raspberry Pi的本地IP地址。这一步通常是最棘手的,因为每个路由器的界面不同。请查阅您的设备文档,或者如果您信任您的本地网络,可以使用UPnP。如果没有此端口转发,传入流量将无法到达您的VPN服务器。
> 需要避免的陷阱:如果您的ISP使用CGNAT(共享IP地址),您将无法直接打开端口。在这种情况下,请使用便宜的VPS作为中继,或使用隧道服务(如Tailscale,它在底层使用WireGuard)。
从任何地方连接
导出配置文件后,在您的智能手机、平板电脑或笔记本电脑上安装WireGuard应用程序。导入`.conf`文件并激活连接。您现在应该可以访问您的家庭网络,就像您在家一样。Reddit用户证实,即使在大学等非常严格的环境中,这种方法也有效,而商业VPN通常被屏蔽。轻量且快速的WireGuard协议可实现几乎即时连接。
家庭VPN的迷思与现实
迷思:对于非计算机专业人士来说太复杂了。
现实:使用PiVPN,安装只需大约20分钟。最困难的部分是路由器配置,但一旦设置好,一切都可以正常运行而无需干预。
迷思:Raspberry Pi不够强大,无法用作VPN。
现实:WireGuard非常轻量。即使是Pi 3也可以处理多个同时连接而不会变慢。Pi 4或5可以达到接近千兆的吞吐量,对于个人使用来说绰绰有余。
迷思:个人VPN不如商业服务安全。
现实:使用WireGuard,您将获得最先进的加密(Curve25519、ChaCha20、Poly1305)。主要风险来自您自己的配置:不要不必要地暴露端口,使用强密钥,并定期更新系统。
故障排除和高级技巧
- 连接问题:使用`canyouseeme.org`等工具检查端口是否已打开。还要测试Pi的防火墙是否允许WireGuard流量。
- 访问本地网络:默认情况下,PiVPN允许访问本地子网。如果您想将VPN客户端与LAN的其余部分隔离,请按照Level1techs论坛的讨论修改iptables规则。
- 多个客户端:使用`pivpn add`为每个设备生成一个配置文件。每个客户端都有自己的私钥,从而可以单独撤销访问权限。
- 性能:为Pi使用以太网电缆,避免服务器使用Wi-Fi。在客户端,Wi-Fi可以正常使用。
额外安全措施
为了增强安全性,您可以:
- 禁用从外部对Pi的SSH访问(仅通过VPN进行远程管理)
- 使用`ufw`或`iptables`设置防火墙,仅允许传入连接到WireGuard端口
- 使用`unattended-upgrades`启用自动更新
- 如果您想在VPN后面暴露Web服务,请使用像Nginx这样的反向代理
如果没有固定连接怎么办?
如果您的家庭没有公共IP地址(CGNAT),您有两个选择:
- 使用VPS:从托管商(DigitalOcean、Linode)租用服务器,并在其上安装WireGuard。您将获得固定IP,但流量将通过第三方。像Algo(在GL.iNet论坛中提到)这样的脚本可以自动化此安装。
- 使用Tailscale:这个免费服务(个人使用)创建一个基于WireGuard的网状网络,无需打开端口。这是家庭VPN和商业服务之间的中间解决方案。
个人VPN的未来
随着网络限制(审查、地理封锁、企业和大学过滤器)的增加,个人VPN已成为移动专业人士和注重隐私的个人的必备工具。WireGuard现已集成到Linux内核中,有望成为VPN连接的事实标准。借助PiVPN等项目,它的普及正在加速。
那么,您准备好重新控制您的互联网访问了吗?配置时间很短,但它提供的自由是巨大的。
进一步阅读
- Build your own private WireGuard VPN with PiVPN - Jeff Geerling - 完整指南和经验分享
- IPTables & Wireguard Connection to Internet, restricted Local Lan - Forum Level1techs - 关于路由的技术讨论
- Do any commercial VPN services support Wireguard? - GL.iNet Forum - 个人VPN与商业VPN的比较
- EasyTether and WireGuard on a Raspberry Pi 4 - DataBurst Medium - 共享连接配置
- Traveling while working. Need to hide location. Is this vpn method ... - Reddit - 数字游民的经验分享
- How can I bypass extreme website restrictions in my university wifi? - Reddit - 在限制性环境中的使用
- 3rd Party VPN provider - Reddit - 关于本地网络访问的讨论
- Best way for remote access to homelab - Reddit - 远程访问建议
