IP 路由问题(Wireguard 作为公司网络,Hetzner 专用网络作为服务器专用网络)

IP 路由问题(Wireguard 作为公司网络,Hetzner 专用网络作为服务器专用网络)

(教育目的)

大家好,

实际上,我正在尝试使用 wireguard 创建一个公司网络(员工客户端)。假设它的子网为 10.0.0.0/24。Wireguard 服务器是 Hetzner 云服务器,它肯定有一个公共 IP 地址(客户端可以访问它以建立内部网络),并且它还连接到 Hetzner 私有网络(第 2 层)-假设它的 IP 地址为 192.168.0.0/24(在 ens10 接口上)。

如何从连接到 wireguard vpn 且 wireguard ip 地址为 10.0.0.2/24 的员工客户端访问 192.168.0.0/24 内的所有服务器?

我尝试创建一个基本正确的图表

我向你展示我的做法:

客户端隧道文件:

[Interface]
PrivateKey = <CLIENTS-PRIVATE-KEY>
Address = 10.0.0.2/32

[Peer]
PublicKey = <SERVERS-PUBLIC-KEY>
AllowedIPs = 192.168.0.0/24, 10.0.0.0/24
Endpoint = <SERVERS-PUBLIC-IP>:51820

服务器隧道文件:

[Interface]
Address = 10.0.0.1/32
ListenPort = 51820
PrivateKey = <SERVERS-PRIVATE-KEY>

[Peer]
PublicKey = <CLIENTS-PUBLIC-KEY>
AllowedIPs = 192.168.0.0/24, 10.0.0.0/24

我还在 vpn 服务器中启用了 net.ip4.ip_forward 以将请求转发到 192.168.0.0/24 子网。

我的客户端能够解析他自己的 Wireguard IP(10.0.0.2),解析 VPN 服务器的 Wireguard IP(10.0.0.1),并且能够解析 VPN 服务器的私有 IP 地址(192.168.0.2) - 但无法解析私有网络内的其他主机,如 192.168.0.3/192.168.0.4 等。

也许您可以帮助我找出我做错的地方或遗漏了什么?

答案1

听起来你快完成了,但 192 网络中的服务器需要知道如何回复请求。默认情况下,它们会从 wireguard 客户端获取数据包,但通过其默认路由回复,这看起来不是你的 vpn 服务器。

为此,向所有 192 台服务器添加一条返回 10.0.0.0/24 网络的路由,例如在 192.168.0.3 上运行此路由:

sudo ip route add 10.0.0.0/24 via 192.168.0.2

现在这些服务器将知道如何路由回 10.0.0.0/24 网络,而不是仅仅将其扔到默认路由:)

相关内容