wireguard pc2 --> pc3 --> pc1

wireguard pc2 --> pc3 --> pc1

我有3台电脑pc1、pc2、pc3

这是我当前网络的拓扑

截屏 通常我使用pc2访问pc1,网络延迟如下

pc2 ping pc1 500ms
pc3 ping pc1 200ms
pc2 ping pc3 100ms

我想优化上述网络

pc2 --> pc3 --> pc1 300毫秒

是否可以通过 wireguard 实现,我应该怎么做?

附加信息

  • 不属于同一个局域网的pc1、pc2、pc3
  • pc1 和 pc3 具有静态公共 IP,均为 ubuntu 18.04
  • 我有这三台机器的 root 控制权
  • pc2 是 windows 10

pc1.conf

 [Interface]
 Address = 10.66.66.1/24,fd42:42:42::1/64
 ListenPort = 58241
 PrivateKey = pc1-PrivateKey

 ### Client pc2
 [Peer]
 PublicKey = pc2-PublicKey
 AllowedIPs = 10.66.66.2/32,fd42:42:42::2/128

 ### Client pc3
 [Peer]
 PublicKey = pc3-PublicKey
 AllowedIPs = 10.66.66.3/32,fd42:42:42::3/128

pc2.conf

[Interface]
PrivateKey = pc2-PrivateKey
Address = 10.66.66.2/32, fd42:42:42::2/128
DNS = 94.140.14.14, 94.140.15.15

[Peer]
PublicKey = pc1-PublicKey
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = pc1-ip:58241

pc3.conf

[Interface]
PrivateKey = pc3-PrivateKey
Address = 10.66.66.3/32, fd42:42:42::3/128
DNS = 94.140.14.14, 94.140.15.15

[Peer]
PublicKey = pc1-PublicKey
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = pc1-ip:58241

感谢大家

答案1

  1. 在 pc1 配置中,删除[Peer]pc2 的条目
  2. 在 pc1 配置中,使用包含 pc2 和 pc3 的 VPN 地址的设置更新[Peer]pc3 的条目AllowedIPs
  3. 在 pc2 配置中,将[Peer]pc1 的条目替换为[Peer]pc3 的条目(包括Endpointpc3 的地址,以及AllowedIPs要通过 pc3 访问的所有内容的设置)
  4. 在 pc3 配置中,添加静态ListenPort58243例如)
  5. 在 pc3 配置中,[Peer]为 pc2 添加条目
  6. 在 pc3 上,打开数据包转发(以 root 身份运行sysctl -w net.ipv4.ip_forward=1sysctl -w net.ipv6.conf.all.forwarding=1在 pc1 上执行此操作)

另外,还要确保 pc3 前面的防火墙允许到 UDP 端口 58243(或您用于 pc3 的任何监听端口)的新连接,与使用 UDP 端口 58241 的 pc1 的设置相同。

你的 3 个配置现在看起来像这样:

pc1.conf

[Interface]
Address = 10.66.66.1/24, fd42:42:42::1/64
ListenPort = 58241
PrivateKey = pc1-PrivateKey

### Client pc3
[Peer]
PublicKey = pc3-PublicKey
AllowedIPs = 10.66.66.2/32, fd42:42:42::2/128
AllowedIPs = 10.66.66.3/32, fd42:42:42::3/128

pc2.conf

[Interface]
PrivateKey = pc2-PrivateKey
Address = 10.66.66.2/32, fd42:42:42::2/128
DNS = 94.140.14.14, 94.140.15.15

### Client pc3
[Peer]
PublicKey = pc3-PublicKey
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = pc3-ip:58243

pc3.conf

[Interface]
PrivateKey = pc3-PrivateKey
Address = 10.66.66.3/32, fd42:42:42::3/128
ListenPort = 58243
DNS = 94.140.14.14, 94.140.15.15

### Client pc1
[Peer]
PublicKey = pc1-PublicKey
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = pc1-ip:58241

### Client pc2
[Peer]
PublicKey = pc2-PublicKey
AllowedIPs = 10.66.66.2/32, fd42:42:42::2/128

由于您已经通过 pc1 路由来自 pc2 和 pc3 的所有互联网流量,因此您很可能已经在 pc1 上为此设置了数据包伪装或 SNAT —— 保留它,它应该仍能像以前一样工作。您需要给pc3添加伪装/SNAT。

相关内容