通过 Wireguard VPN 重定向流量

通过 Wireguard VPN 重定向流量

我有一个公共 IPv6 地址,但没有 IPv4。因此,我想通过具有公共 IPv4 和 IPv6 地址的 VPS 路由流量。我的问题是如何使用 Wireguard 创建这种类型的隧道。从 VPS 到我网络中的设备的隧道不是挑战,而是如何将服务器上的数据包重定向到该隧道。

我做了一些研究,我的方法是这样的。

我的网络设备

[Interface]
Address = <DEVICE IPv6>
PrivateKey = <private key>
ListenPort = <DEVICE PORT>

# Peer to VPS
[Peer]
PublicKey = [PUBLIC KEY VPS]
AllowedIPs = [VPS IPv6]
Endpoint = [VPS IPv6]:[VPS PORT]

虚拟专用服务器

[Interface]
Address = <VPS IPv6>
Address = <VPS IPv4>
PrivateKey = <private key>
ListenPort = <VPS PORT>

# Peer to device
[Peer]
PublicKey = [PUBLIC KEY DEVICE]
Endpoint = [DEVICE IPv6]:[DEVICE PORT]
AllowedIPs = 0.0.0.0/0, ::/0


# Example peer of client
[Peer]
PublicKey = <client public key>
AllowedIPs = 0.0.0.0/0, ::/0

示例客户端

[Interface]
PrivateKey = <private key>
ListenPort = <CLIENT PORT>

[Peer]
PublicKey = [PUBLIC KEY VPS]
Endpoint = [VPS IPv4]:[VPS PORT], [VPS IPv6]:[VPS PORT]
AllowedIPs = 0.0.0.0/0

这可能吗?还是我需要创建两个 WG 接口并在它们之间路由流量?

答案1

听起来你只是希望能够从网络设备连接到示例客户端,反之亦然?如果是这样,那么这是经典的Hub and Spoke WireGuard 场景,以 VPS 为枢纽,以网络设备和示例客户端为辐条。

对于 WireGuard 网络内部的隧道连接,您可以使用 IPv4 或 IPv6 地址 - 它不必与承载隧道连接的数据包的 IP 版本匹配。以下示例使用fd00::/56WireGuard 网络的 IPv6 地址块;198.51.100.123作为集线器的公共 IPv4 地址;以及2001:db8:1234:abcd::1作为集线器的公共 IPv6 地址:

网络设备(IPv6 分支):

# local settings for Network Device
[Interface]
PrivateKey = <Network Device private key>
Address = fd00:0:0:2::1/64

# remote settings for VPS
[Peer]
PublicKey = <VPS public key>
AllowedIPs = fd00::/56
Endpoint = [2001:db8:1234:abcd::1]:51820
PersistentKeepalive = 25

VPS(枢纽):

# local settings for VPS
[Interface]
PrivateKey = <VPS private key>
Address = fd00:0:0:1::1/64
ListenPort = 51820

PreUp = sysctl -w net.ipv6.conf.all.forwarding=1

# remote settings for Network Device
[Peer]
PublicKey = <Network Device public key>
AllowedIPs = fd00:0:0:2::/64

# remote settings for Example Client
[Peer]
PublicKey = <Example Client public key>
AllowedIPs = fd00:0:0:3::/64

示例客户端(IPv4 分支):

# local settings for Example Client
[Interface]
PrivateKey = <Example Client private key>
Address = fd00:0:0:3::1/64

# remote settings for VPS
[Peer]
PublicKey = <VPS public key>
AllowedIPs = fd00::/56
Endpoint = 198.51.100.123:51820
PersistentKeepalive = 25

然后,您可以从网络设备使用示例客户端的 WireGuard IP 地址 访问在示例客户端上运行的 Web 服务器fd00:0:0:3::1;或者从示例客户端使用网络设备的 WireGuard IP 地址通过 SSH 进入网络设备fd00:0:0:2::1

相关内容