答案1
- 在 10.0.0.99 上启用 IP 转发
用户@wg-server:~$ cat /etc/sysctl.d/99-sysctl.conf | grep -i forw net.ipv4.ip_forward=1
重新加载 sysctl:sudo systemctl reload sysctl
- 在 wireguard 客户端上设置适当的路由:如果
AllowedIPs
.99 和 .2 上的指令不包括 0.0.0.0/0,或者网络不包括 10.0.0.0/24,则添加:AllowedIPs = 10.0.0.0/24
<<<<< 将其包含在客户端配置中或扩展当前的 AllowedIPs 列表。
答案2
问题肯定出在 wireguard 的加密密钥路由作品:
密钥路由
WireGuard 的核心是一个名为 Cryptokey Routing 的概念,其工作原理是将公钥与允许的隧道 IP 地址列表关联隧道內。
此关联用allowed-ips
/声明AllowedIPs
。因此,在给定时间,在给定的 wireguard 接口上,一个关联的 IP 地址可以与只有一个同侪。(可能没有什么可以阻止使用多个 wireguard 接口来“克服”这个问题,但这可能不会扩展得那么好。)
因此,如果每个节点都有此设置:
AllowedIPs = 10.0.0.0/24
对于连接到的节点来说一并因此宣布这一点一次,但对于具有多种的对等体。一个路由节点有多个对等体,这对它来说总是错误的。
在马拉特3C当读取第一个对等点的配置部分(我猜是 10.0.0.2 的对等点)时,10.0.0.0/24 与该对等点相关联。然后,当读取第二个对等点(10.0.0.99 的)的配置部分时,10.0.0.0/24已删除来自第一个对等点,并与第二个对等点相关联。如果你现在只wg
输入马拉特3C,你会得到类似这样的结果:
interface: wg0
[...]
peer: (right peer's public key)
endpoint: [...]
allowed ips: (none)
peer: (left peer's public key)
endpoint: [...]
allowed ips: 10.0.0.0/24
如果您更改配置的顺序,那么您只会逆转问题:您永远无法同时拥有allowed ips: 10.0.0.0/24
,另一个将切换到(none)
,正如开始时所解释的那样。
多对等节点应仅使用预期在给定对等节点上出现的 IP 地址(通常只有一个),以避免这种冲突。等等马拉特3C是 wg-quick 的配置,AllowedIPs = 10.0.0.99
用于左对等体和AllowedIPs = 10.0.0.2
右对等体。您还可以使用以下命令“手动”更正它(不会保存它)wg
代替wg-quick
和:
wg set wg0 peer 'longpublickeyforleftpeer' allowed-ips 10.0.0.99
wg set wg0 peer 'longpublickeyforrightpeer' allowed-ips 10.0.0.2