在树莓派上搭建VPN可以让你远程安全访问家庭网络或保护公共Wi-Fi下的流量,以下是两种常见方案:
方案1:使用OpenVPN(推荐)
准备工作
- 树莓派联网(建议有线连接)
- 公网IP或DDNS(如使用动态IP,需配置动态域名解析)
- 路由器端口转发(默认UDP 1194)
安装OpenVPN
# 安装OpenVPN和Easy-RSA(证书工具) sudo apt install openvpn easy-rsa -y
配置证书
# 复制Easy-RSA模板 make-cadir ~/openvpn-ca cd ~/openvpn-ca # 编辑变量文件(按需修改) nano vars # 设置以下参数(示例): export KEY_COUNTRY="US" export KEY_PROVINCE="California" export KEY_CITY="SanFrancisco" export KEY_ORG="YourOrg" export KEY_EMAIL="user@example.com" # 生成证书 source vars ./clean-all ./build-ca # 一直按Enter使用默认值 ./build-key-server server # 服务器证书 ./build-dh # Diffie-Hellman参数 ./build-key client1 # 客户端证书
配置OpenVPN服务器
# 复制配置文件
sudo cp ~/openvpn-ca/keys/{server.crt,server.key,ca.crt,dh2048.pem} /etc/openvpn/
# 复制示例配置
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
# 编辑配置
sudo nano /etc/openvpn/server.conf
关键修改项:
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh2048.pem server 10.8.0.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" # 客户端流量全走VPN push "dhcp-option DNS 8.8.8.8" # 推送DNS keepalive 10 120 comp-lzo user nobody group nogroup persist-key persist-tun status openvpn-status.log verb 3
启用IP转发和防火墙
# 启用IP转发 sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf sudo sysctl -p # 配置防火墙(假设eth0为外网接口) sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo apt install iptables-persistent -y sudo netfilter-persistent save
启动服务
sudo systemctl enable --now openvpn@server sudo systemctl status openvpn@server
生成客户端配置
# 创建客户端配置文件 mkdir -p ~/client-configs/files cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf # 编辑基础配置 nano ~/client-configs/base.conf
修改为:
client dev tun proto udp remote your-server-ip 1194 # 替换为你的公网IP或DDNS域名 resolv-retry infinite nobind user nobody group nogroup persist-key persist-tun remote-cert-tls server comp-lzo verb 3 <ca> [粘贴ca.crt内容] </ca> <cert> [粘贴client1.crt内容] </cert> <key> [粘贴client1.key内容] </key>
方案2:使用WireGuard(更轻量)
安装WireGuard
sudo apt install wireguard -y
生成密钥
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
创建配置文件
sudo nano /etc/wireguard/wg0.conf
示例配置:
[Interface] PrivateKey = <服务器私钥(/etc/wireguard/privatekey内容)> Address = 10.9.0.1/24 ListenPort = 51820 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = <客户端公钥> AllowedIPs = 10.9.0.2/32
启用服务
sudo systemctl enable --now wg-quick@wg0
客户端连接
- OpenVPN:使用生成的
.ovpn文件导入OpenVPN客户端(如Windows的OpenVPN GUI或Android应用)。 - WireGuard:安装客户端后配置对端的公钥和IP。
注意事项
- 公网IP需在路由器转发对应端口(OpenVPN默认1194/UDP,WireGuard默认51820/UDP)。
- 动态IP建议使用DDNS服务(如No-IP)。
- 安全性:限制VPN访问IP、使用强密码或证书认证。
如需更详细的步骤或遇到问题,可提供具体需求进一步解答!









