| name | homelab-wireguard-vpn |
| description | WireGuard VPN 服务器设置、对等配置、密钥生成、分隧道与全隧道路由,以及从手机和笔记本电脑客户端远程访问家庭网络。 |
| origin | 社区 |
家庭实验室 WireGuard VPN
WireGuard 是一种快速、现代的 VPN 协议。它是远程访问家庭网络的正确选择——比 OpenVPN 更简单,比大多数替代方案更快。
所有配置示例显示常见设置。在将其应用到您的系统之前,请查看每个命令——尤其是 iptables 转发规则和密钥文件权限——并在维护窗口中进行更改。
何时使用
- 在 Raspberry Pi、Linux 主机、pfSense 或路由器上设置 WireGuard 服务器
- 生成 WireGuard 密钥对并写入对等配置文件
- 从手机或笔记本电脑配置远程访问到家庭网络
- 解释分隧道(仅路由家庭流量)与全隧道(路由所有流量)
- 排除无法启动的 WireGuard 连接
- 为多个客户端自动对等配置生成
WireGuard 工作原理
您的手机 (WireGuard 客户端)
│
│ 加密 UDP 隧道(端口 51820)
│
您的家庭路由器 (WireGuard 服务器 — 需要公共 IP 或 DDNS)
│
您的家庭网络 (192.168.1.0/24, NAS, Pi 等)
每个设备都有一个密钥对(公钥 + 私钥)。
服务器知道每个客户端的公钥。
客户端知道服务器的公钥 + 端点 (IP:端口)。
流量端到端加密,无中央服务器或证书颁发机构。
服务器设置 (Linux)
sudo apt update && sudo apt install wireguard -y
sudo mkdir -p /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server_private.key'
sudo sh -c 'wg pubkey < /etc/wireguard/server_private.key > /etc/wireguard/server_public.key'
sudo /etc/wireguard/wg0.conf <<
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <paste_server_private_key_here>
PostUp = iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT
PostUp = iptables -A FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT
PostDown = iptables -D FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <phone_public_key>
AllowedIPs = 10.8.0.2/32
[Peer]
PublicKey = <laptop_public_key>
AllowedIPs = 10.8.0.3/32
EOF
600 /etc/wireguard/wg0.conf
| /etc/sysctl.d/99-wireguard.conf
sysctl --system
wg-quick up wg0
systemctl wg-quick@wg0