有关 Wireguard 组网有些问题想请教一下

2023-11-21 10:53:34 +08:00
 LxnChan

如图,现在有一个云服务器,具备公网 IP ;然后两边 Router0 和 Router2 分别代表两个 NAT 网络,都不具备公网 IP 。

那么请教一下:

3000 次点击
所在节点   WireGuard
26 条回复
gaju
2023-11-21 11:01:14 +08:00
ipv6 公网有吧? ipv6 ddns 公网连接,wg 默认不会更新域名 IP ,写个脚本检测断线就重启。然后两边的网关设置个静态路由就通了。
gaju
2023-11-21 11:03:13 +08:00
云服务器国内的太贵,国外的又容易被办。异地组网搞中转没前途的,直连才是爽歪歪
flynaj
2023-11-21 11:04:24 +08:00
Wireguard 安装到路由器上, 互联两个局域网
加路由表就行,要公网访问在你外网机上用 socat 加个端口转发 。
Jimmyisme
2023-11-21 11:14:50 +08:00
Router 都用 wireguard 连上 server0 ,要实现异地组网就要改 allowip 把两个 Router 的 allowip 要把除了自己的网段都写上( Router0 要写 server0 的 ip 和 Router2 的网段
Jimmyisme
2023-11-21 11:17:05 +08:00
@gaju #1 ddns 延迟比较大,想断网时间短的话可以用一个固定公网 ip 的服务器用 rsync 同步 ip
LxnChan
2023-11-21 11:23:26 +08:00
@gaju 直连行不通,两边都有防火墙
cksspk
2023-11-21 11:24:03 +08:00
nat 的子网转发吧,好难搞,之前也打算着这样,但是没弄明白,马
LxnChan
2023-11-21 11:24:03 +08:00
@Jimmyisme Router 不是 Linux 内核的,不支持 Wireguard
LxnChan
2023-11-21 11:25:28 +08:00
@cksspk 差不多,现在不是很明白作为 Peer 如果要转发 Peer 自己所在 NAT ,需不需要在自己的配置文件上加上别的 Peer 以把自己也作为一个中转服务器
Huelse
2023-11-21 11:41:27 +08:00
如果要访问 Server1 所在的内网资源就需要在 Server0 和 Client 的 Peers 设置 AllowedIPs(10.254.254.0/24),其实就是指定路由,需要注意的是防火墙设置正确。
windows 没操作过,估计关了防火墙会省事点?
LxnChan
2023-11-21 13:18:39 +08:00
@Huelse 那么 server1 上需要使用 iptables 设置转发吗
Huelse
2023-11-21 13:32:43 +08:00
@LxnChan #11 当然要
masterclock
2023-11-21 13:36:58 +08:00
netmaker 一把梭?
retanoj
2023-11-21 13:47:49 +08:00
需要 Server 1 有包转发能力

不如把 Switch1 上接个 OpenWrt ,让它变成右侧网络 Wireguard 专属网关,可行不
mightybruce
2023-11-21 14:04:31 +08:00
组网用 tailscale 和 headscale 吧, tailscale 拥有 wireguard 所具备的, 控制节点用开源的 headscale
HOMO114514
2023-11-21 14:28:50 +08:00
http://arthurchiao.art/blog/how-nat-traversal-works-zh/
lifekevin
2023-11-21 14:51:07 +08:00
https://www.henrychang.ca/how-to-setup-wireguard-vpn-server-on-windows/
参考一下这里的后半部分,Windows 的 nat 转发很难配置,如果是 linux 用 iptables 转发就可以了
如果 Windows 配不好,可以装一台 linux 的虚拟机用来做 nat 转发
mantouboji
2023-11-21 16:24:36 +08:00
这不是超级简单吗?

VPS 代表那个公网服务器,R1 和 R2 是你两个网段的边界路由器。

假设我们设置一个单独的网段 192.168.200.0/24 作为 wireguard 这个子网的地址。

看你图上,R1 后面的网段是 192.168.233.0/24, R2 后面是 10.254.254.0/24

VPS 的 wg0, 自己地址 192.168.20.1/24
然后建立两个 peer 。假设分别给地址 192.168.200.100 和 192.168.200.200

第一个 peer, AllowedIPs=192.168.200.100/32,192.168.233.0/24
第二个 peer, AllowedIPs=192.168.200.200/32,10.254.254.0/24

注意上面两个/32

然后在 R1 上的 wg0.conf 里,
[interface]
Address=192.168.20.100/24 #注意这里是 24

[peer]
endpoint=VPS:port
Allowed-address=0.0.0.0/0

R2 的也是一样,只是 Address=192.168.20.200/24

VPS 、R1 、R2 三个机器都要容许 ipv4_forward, 这种情况下 NAT 倒是不需要。
R1 、R2 两个网段里需要指定 default gw 是 R1 和 R2
mightybruce
2023-11-21 17:03:22 +08:00
@mantouboji 你是不看描述就回复。
Xunit
2023-11-21 18:29:14 +08:00
两 nat 搞俩网段,服务器做好转发就行(记得开 ipv4/6 的转发)。如果 ssh 也要走 wireguard ,就得把 mtu 改小。可以参考 arch wiki 这个部分
https://wiki.archlinux.org/title/WireGuard#Server

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/993746

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX