我有3台电脑pc1、pc2、pc3
这是我当前网络的拓扑
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
- 在 pc1 配置中,删除
[Peer]
pc2 的条目 - 在 pc1 配置中,使用包含 pc2 和 pc3 的 VPN 地址的设置更新
[Peer]
pc3 的条目AllowedIPs
- 在 pc2 配置中,将
[Peer]
pc1 的条目替换为[Peer]
pc3 的条目(包括Endpoint
pc3 的地址,以及AllowedIPs
要通过 pc3 访问的所有内容的设置) - 在 pc3 配置中,添加静态
ListenPort
(58243
例如) - 在 pc3 配置中,
[Peer]
为 pc2 添加条目 - 在 pc3 上,打开数据包转发(以 root 身份运行
sysctl -w net.ipv4.ip_forward=1
或sysctl -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。