正确的 iptables 配置用于 ip 转发

正确的 iptables 配置用于 ip 转发

我认为我在配置过程中遗漏了某些内容。Ping 仍然显示主机无法访问

我的目标是从 10.0.0.99 访问远程主机 10.0.0.2。

在此处输入图片描述

更新: 在此处输入图片描述 尝试了不同的 AllowedIPs 之后,我终于获得了预期的流量。

答案1

  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

  1. 在 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

相关内容