我当前的 Wireguard 设置有一个 VPS 连接到不同本地网络上的两个设备。每个家庭网络设备都使用 Wireguard 连接到 VPS,但未配置为接受彼此的连接(它们尚未在彼此的配置文件中添加为对等设备)。
我想使用类似于反向代理服务器的 VPS,以便家庭设备 1 可以连接到 VPS 并将其流量路由到家庭设备 2,而无需在两个家庭设备之间配置直接连接(本质上是集线器和辐射模型)。有没有办法以这种方式路由流量?
当前家庭网络设备配置文件:
[Interface]
Address = 10.0.0.2/8
SaveConfig = true
ListenPort = 53910
FwMark = 0xca6c
PrivateKey = <privkey>
[Peer]
PublicKey = <pubkey>
AllowedIPs = 10.0.0.1/32
Endpoint = <IP address>
服务器配置文件:
[Interface]
Address = 10.0.0.1/8
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE;
ListenPort = 51820
PrivateKey = <privkey>
[Peer]
PublicKey = <pubkey>
AllowedIPs = 10.0.0.2/32
Endpoint = <IP of home network device 1>
[Peer]
PublicKey = <pubkey>
AllowedIPs = 10.0.0.3/32
Endpoint = <IP of home network device 2>
根据当前规则,如果我尝试从设备 1 ping 设备 2,我会收到此错误消息(这似乎表明对等方彼此知道,但它们的配置不正确?)
user@device1:~/wireguard$ ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
From 10.0.0.2 icmp_seq=1 Destination Host Unreachable
ping: sendmsg: Required key not available
谢谢!
答案1
更新客户端的 WireGuardAllowedIPs
设置,以包含您希望每个客户端通过其与 VPS 的 WireGuard 连接访问的其他设备的 IP 地址。例如,像这样允许设备 1 使用 WireGuard 仅连接到设备 2:
[Interface]
Address = 10.0.0.2/8
...
[Peer]
PublicKey = <VPS pubkey>
AllowedIPs = 10.0.0.3/32
...
或者像这样允许设备 1 通过 WireGuard 连接到设备 2 以及 VPS 本身:
[Interface]
Address = 10.0.0.2/8
...
[Peer]
PublicKey = <VPS pubkey>
AllowedIPs = 10.0.0.1/32, 10.0.0.3/32
...
或者像这样允许设备 1 使用 WireGuard 连接来连接到该10.0.0.0/8
块中的任何主机:
[Interface]
Address = 10.0.0.2/8
...
[Peer]
PublicKey = <VPS pubkey>
AllowedIPs = 10.0.0.0/8
...
看到这个WireGuard 中心辐射指南请参阅完整示例。