[本文自2023年此博客英文版翻译而来]
你是否曾担心过和朋友联机时,Steam 远程畅玩或 Parsec 等出现连接失败?又或者在网络状况极差的情况下,搭建 SSR 隧道连接海外服务器时遇到各种麻烦?自建一个家庭 WireGuard 节点或许正是解决之道。
WireGuard 是一款开源软件及通信协议,通过 UDP 隧道传输数据流量,旨在提供比 IPsec 和 OpenVPN 更快、更稳定的连接。其非对称加密过程涉及多种密码学协议的实现,包括 Noise 协议框架、Curve25519、ChaCha20、Poly1305、BLAKE2、SipHash24、HKDF 等。
部署
依赖项
请确保 OpenWRT 上已安装以下插件:
wireguard-toolskmod-wireguardluci-app-wireguardluci-proto-wireguard
如有需要,请运行以下命令进行安装:
opkg update
opkg install luci-proto-wireguard
opkg install luci-app-wireguard
opkg install kmod-wireguard
opkg install wireguard-tools
reboot生成密钥与 Luci 配置
请注意,WireGuard 使用非对称加密方法(外加可选的对称密钥附加),因此需要为每个节点(“服务器”端也是一个节点)设置公钥、私钥和预共享密钥。
服务器端的密钥
创建目录
mkdir wireguard #为节点创建文件夹
cd wireguard生成密钥
umask 077 #设置权限级别
wg genkey | tee sprivatekey | wg pubkey > spublickey #生成密钥,"sprivatekey" 代表服务器私钥,"spublickey" 代表服务器公钥
cat sprivatekey #查看并保存密钥以备后用
cat spublickeyLuci 设置
WireGuard VPN 配置
前往 OpenWRT>Network>Interfaces>Add New Interface,选择一个接口名称,并选择 WireGuard VPN 协议。
填入刚刚创建的服务器私钥,选择一个监听端口(范围 1024 到 65535),并指定一个用于节点路由的网段(例如 192.168.100.1/24)。
在防火墙设置中,请确保将该接口分配到 VPN 区域。(如果没有 VPN 区域,则分配到 LAN 区域)
最后,保存并应用该接口。
防火墙设置
在 OpenWRT>Network>Firewall>Custom Rules 中添加以下行:
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o br-lan -j MASQUERADE
#根据你的自定义设置修改 192.168.100.0/24,此规则允许 WireGuard 节点访问局域网设备。
#如果禁用了 LAN 的桥接,请将 "-o br-lan" 改为 "-o eth0"。
最后,在 Firewall>Traffic Rules 中开放相应端口,如果你的路由器不是自行拨号,还需在家庭调制解调器(猫)上设置对应的端口转发。
生成客户端密钥
运行以下命令:
umask 077 #设置文件权限
cd wireguard
mkdir node_1
cd node_1
wg genpsk > sharekey #生成预共享密钥。
cat sharekey #查看并保存 sharekey 以备后用
wg genkey | tee cprivatekey | wg pubkey > cpublickey #生成密钥,"cprivatekey" 代表客户端私钥,"cpublickey" 代表客户端公钥
cat cprivatekey #查看并保存密钥
cat cpublickey #查看并保存密钥请注意:预共享密钥是可选的,能增强安全性,但建议使用以获得更快的连接速度。
配置客户端节点设置
前往 OpenWRT>Network>Interfaces>Wireguard>Edit 填入客户端公钥和预共享密钥(勾选左下角的“添加预共享密钥”选项)。为节点指定一个 IP 地址(不要与服务器 IP 冲突)。并勾选“Route Allowed IPs”复选框。
如果需要设置多个客户端节点,请重复“生成客户端密钥”和“配置客户端节点设置”部分。
保存并应用,重启路由器以使更改生效。
创建客户端配置文件
下面是一个标准客户端配置文件的模板:
[Interface]
Address = 192.168.100.2 #你在 Interface 部分定义的客户端 IP
PrivateKey = cprivatekey #填入你的客户端私钥
DNS = #路由器的 IP 地址
[Peer]
PublicKey = spublickey #填入你的服务器公钥
AllowedIPs = 0.0.0.0/0 #选择允许客户端节点路由的网段,如果不清楚请勿更改
Endpoint = #填入你的域名,如果没有域名则填公网 IP
PersistentKeepalive = 25
#使用时删除所有注释将文件保存为 Node_1.conf
在客户端应用中使用配置文件
选择“从文件添加隧道”,然后选择我们刚刚创建的 .conf 文件。
点击激活,应该就能正常运行了。
如果内容对你有点帮助,留个评论吧~







Comments | NOTHING