Wireguard - 具有多个接口的单个​​服务器

Wireguard - 具有多个接口的单个​​服务器

我有一台树莓派,它有以太网连接到互联网eth0,还有另一个无线连接wlan0,也通过其他路由器连接到互联网。

是否可以创建wg0wireguard eth0(以便连接那里的客户端始终只通过 eth0 转发),并wg1创建 wireguard wlan0(以便连接那里的客户端始终通过 wlan0 转发)?

答案1

刚刚快速浏览了他们的文档,似乎via在添加路线时使用关键字就可以实现这一点。

您可以在其文档的“经典解决方案”部分中看到具体内容。 https://www.wireguard.com/netns/#the-classic-solutions

答案2

wg我在使用多个接口(如wg0、等)时遇到问题。wg1当服务器启动时,Wireguard 接口会相互竞争并尝试使用相同的路由表编号。第一个成功了,第二个失败,并显示“RTNETLINK 答案:文件存在”,这意味着表已经存在,因为第一个实例创建成功。

您可以通过指定表号来修复它。不幸的是,在指定表号后,wireguard 停止创建 ip 规则。看起来他希望我们提供一个带有表的自定义配置,其中提到了 fwmark 等classic example。但我不想因为 wireguard 有这么多错误而使我的 vpn 设置过于复杂。

我发现的第二个问题是 AllowedIPs 问题。Wireguard 不提供 DisallowedIPs 列表,一些用户向我提供了 AllowedIPs 列表,它将计算允许的 IP 列表,而不计算禁止的 IP。另一个用户正在尝试使用 iptables(不使用允许的 IP 计算器)将流量丢弃到禁止的 IP。当您尝试维护多个 wg 接口时,这个问题非常烦人:如果您想添加新的 wg 接口,则应该将其 CIDR 从其他 wg 配置中排除。

我添加了自定义路由来实现 wireguard 中未实现的功能(不允许的 ips)。但之后我将 AllowedIPs 从 0.0.0.0/0 更改为 10.10.0.1/24,因为我将来可以进行这样的切换。Wireguard 失败了,因为它试图添加我已经添加的相同路由。我不得不通过向我的路由添加一些非零度量来解决这个问题,以阻止这种冲突。

总结我的经验:我不知道 Linus Torvalds 在 wireguard 中发现了什么,以及他为什么要把它放入内核。但今天我要回到 OpenVPN,因为我的 wireguard 配置不可读,它充满了无法维护的 bash 脚本。我很生气我的 vpn 的一部分在我手中,因为我不打算维护它,我不打算将它与最近的 wg 架构更新合并,我不打算合并这些配置中的冲突,我不打算处理我的 bash 脚本和未来的 wg 不兼容性等。

同时,当我们谈论同一台机器上的多个接口时,OpenVPN 工作得很好。当然,OpenVPN 有很多缺点,但它们与你在尝试维护多个 wg 接口时将收到的无限痛苦相比是微不足道的。

如果您居住在欧盟/美国,Wireguard 就没问题了,您不会遇到 UDP、QOS、GFC 问题,也不需要任何隧道。您只需租用一台服务器,启动一个 wg 界面,在上面撒上漂亮的 iptable 规则就可以了。

相关内容