我是新手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 地址的流量通过隧道传输所需的全部内容(来自一个端口)。我还没有测试过隧道全部交通,但应该不困难。