如何通过 Wireguard 隧道传输多个 IP 地址?

如何通过 Wireguard 隧道传输多个 IP 地址?

我是新手Wireguard以及一般的网络。我有两台服务器:一台有 /24 IP 块和很少的计算能力,另一台有很多计算能力但没有 IP。

我无法将 IP 地址重新分配给第二台服务器,因此我必须建立某种隧道。我的最终目标是让服务器 2 运行许多 Docker 容器,每个容器都有自己的公共 IP 地址。我愿意留下一个 IP 来保留对第一台服务器的访问权限。谢谢大家的时间。

答案1

这比我想象的要容易。
首先,我在两台服务器上安装了 Wireguard,使用这个脚本以使其更容易。然后,我使用这个问题的答案,令人惊讶的是,来自每个 IP 地址(在所需端口上)的所有流量都被重新路由到 Wireguard 客户端。

在具有该IP地址的服务器上,其netplan配置完全正常。

network:
  version: 2
  renderer: networked
  ethernet:
    eno1:
    addresses:
      - 123.123.123.101/24
      - 123.123.123.102/24
      - ... etc
    routes:
      - to: 0.0.0.0/0
        via: gateway-ip-address-here
        on-link: true
    nameservers:
      addresses:
        - 1.1.1.1

当然,我运行了必要的 iptables 命令:(此示例中为 TCP 端口 80,客户端的 wireguard IP 地址为 10.66.66.2。您可以在服务器或客户端上iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.66.66.2运行来找到客户端的 wireguard 地址。)wg

客户端根本不需要 netplan 配置。相反,它需要使用命令来允许绑定到非本地 IP sudo sysctl -w net.ipv4.ip_nonlocal_bind=1

这就是将来自 IP 块中所有 IP 地址的流量通过隧道传输所需的全部内容(来自一个端口)。我还没有测试过隧道全部交通,但应该不困难。

相关内容