V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LxnChan
V2EX  ›  WireGuard

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

  •  
  •   LxnChan · 2023-11-21 10:53:34 +08:00 · 2940 次点击
    这是一个创建于 366 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    那么请教一下:

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

    不如把 Switch1 上接个 OpenWrt ,让它变成右侧网络 Wireguard 专属网关,可行不
    mightybruce
        15
    mightybruce  
       2023-11-21 14:04:31 +08:00
    组网用 tailscale 和 headscale 吧, tailscale 拥有 wireguard 所具备的, 控制节点用开源的 headscale
    HOMO114514
        16
    HOMO114514  
       2023-11-21 14:28:50 +08:00
    http://arthurchiao.art/blog/how-nat-traversal-works-zh/
    lifekevin
        17
    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
        18
    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
        19
    mightybruce  
       2023-11-21 17:03:22 +08:00
    @mantouboji 你是不看描述就回复。
    Xunit
        20
    Xunit  
       2023-11-21 18:29:14 +08:00
    两 nat 搞俩网段,服务器做好转发就行(记得开 ipv4/6 的转发)。如果 ssh 也要走 wireguard ,就得把 mtu 改小。可以参考 arch wiki 这个部分
    https://wiki.archlinux.org/title/WireGuard#Server
    orancho
        21
    orancho  
       2023-11-21 19:18:48 +08:00
    Why not OSPF?
    f14g
        22
    f14g  
       2023-11-21 19:34:48 +08:00 via Android
    果断 OSPF 。如果是为了给 Windows/手机用,加一个默认路由即可
    f14g
        23
    f14g  
       2023-11-21 19:39:21 +08:00 via Android
    哦,没注意看路由器不支持 wireguard 。那就 server1 开一个 snat MASQUERADE 呗,另外别忘了把 IP 转发打开
    gaju
        24
    gaju  
       364 天前 via Android
    @Jimmyisme 考虑过,但太麻烦所以没弄了。一般 ipv6 前缀变化都在晚上,搞了一年 ddns 也无感。
    helsinglee
        25
    helsinglee  
       266 天前
    @flynaj #3 请教以下路由表怎么加呢?为两边分别加对方局域网网段指向本地 wireguard 网关,但是局域网的设备没办法互访。谢谢
    flynaj
        26
    flynaj  
       265 天前
    @helsinglee #25 局域网互联这样配置 ,在 zerotier 网站配置
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2537 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:42 · PVG 23:42 · LAX 07:42 · JFK 10:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.