如何在 FreeBSD 上设置一个简单且实际工作的 WireGuard 服务器
发布日期:2023 年 4 月 17 日
译者:ykla & ChatGPT
在我努力使 WireGuard 正常运行的过程中,我碰到了许多指南和教程。但它们都缺少关键信息,或者依赖于过时的信息。通常只是微妙的指示出现了问题。当与其他潜在故障点一起出现时,这很快就会变成一个令人沮丧的打地鼠游戏,让人走入很多死胡同。
话虽如此,以下是一个最小化的设置,截止到今天,在运行 FreeBSD 13.2 的具有单个以太网连接的树莓派 3 上有效。
首先,安装所需的软件:
pkg install wireguard wireguard-tools libqrencode开启 Wireguard 服务:
service wireguard enable
sysrc wireguard_interfaces="wg0"启用 IP 转发并立即激活:
sysrc gateway_enable=YES
sysctl -w net.inet.ip.forwarding=1设置防火墙和日志记录:
service pf enable
service pflog enable# /etc/pf.conf
ext_if="ue0"
wg_net="10.10.10.0/24"
scrub in all
nat on $ext_if from $wg_net to any -> ($ext_if)
pass log all接下来生成服务器密钥:
你还需要客户端密钥。这个示例假设使用 iPhone 作为名称,但对于任何客户端,流程都是相同的:
创建服务器配置:
创建客户端配置:
对于额外的客户端,使用不同的文件名重复密钥生成。然后在服务器配置中添加另一个 [Peer] 部分,其中包含唯一的 IP 和客户端密钥内容。还要创建相应的客户端配置。在更改了服务器配置之后重新启动 WireGuard。
为了方便传输到 iPhone,在 WireGuard 应用程序中生成一个二维码,并通过摄像头导入:
开启 Wireguard 服务:
现在,你应该能够成功地使用 iPhone 进行连接,并且能够访问你的内部网络以及互联网了。
几点注意事项:
在家中进行此操作时,请不要忘记在路由器中设置端口转发。WireGuard 专门使用 UDP。
可以使用本地 DNS 服务器,比如 Adguard Home。我就是这么做的。这样你就可以在任何地方实现全面的广告拦截。
如果遇到问题,首先重新启动机器。如果问题仍然存在,请使用
tcpdump -n -e -i pflog0检查连接日志。在几乎所有连接无法工作的情况下,要么你忘记设置 IP 转发,要么有其他干扰的防火墙规则,要么 NAT 规则错误。
我发现握手可靠性不稳定。你可能需要多次停止和启动客户端连接才能使其正常工作。
最后更新于
这有帮助吗?