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

Wireguard 同时使用多台 iOS/Mac 设备通过 Surge 连接的问题

  •  
  •   TashinV · 11 天前 · 646 次点击
    Surge 在 iOS 和 macOS 上是通用的一份配置文件,该配置文件已经写好了 Wireguard 回家的规则。
    但是我了解到的信息是每个客户端需要创建一组密钥,例如需要两台手机、一台电脑进行远程访问,则需要创建三组密钥。
    目前 Surge 配置文件里面只有一组密钥,想请教下大神们,这样的情况如何写 Surge 配置,以达到让三台设备都能回家的目的?
    37 条回复    2024-12-20 20:28:06 +08:00
    Kite6
        1
    Kite6  
       11 天前 via Android   ❤️ 1
    那就写三个配置项?
    zieglar
        2
    zieglar  
       11 天前
    都用 Surge 了怎么不用 Ponte
    TashinV
        3
    TashinV  
    OP
       11 天前 via iPhone
    @zieglar
    要考虑 windows 设备
    TashinV
        4
    TashinV  
    OP
       11 天前 via iPhone
    @Kite6
    您的意思是写 3 个 surge 的 conf 文件还是在一个 conf 文件内写 3 个 wireguard 的规则?
    Donaldo
        5
    Donaldo  
       11 天前   ❤️ 1
    @TashinV #4 一个 conf 三个 wg 的规则,分别给三台设备用
    TashinV
        6
    TashinV  
    OP
       11 天前 via iPhone
    @Donaldo
    写 3 组密钥,共同一个规则( rule )吗?
    dfdd1811
        7
    dfdd1811  
       11 天前   ❤️ 1
    很麻烦,我看说要自己写脚本要么就三套配置文件。所以我干脆路由上开个 ss 就得了,不用 wireguard 了
    Danswerme
        8
    Danswerme  
       11 天前   ❤️ 1
    不了解 Surge , 但是我记得 WireGuard 每个设备都有自己的公钥和私钥,需要在自身的 WireGuard 配置文件里配置自己的私钥、其他两台设备的公钥和 Endpoint 。
    Donaldo
        9
    Donaldo  
       10 天前   ❤️ 1
    @TashinV #6 创建一个策略组,把你的三个 WG peers 配置都加入这个策略组中,需要走 WG 的规则都走这个策略组,这个策略组可以在不同的设备上选择不同的 peers 。
    TashinV
        10
    TashinV  
    OP
       10 天前 via iPhone
    @Donaldo
    那这样的话会跟我现有的出国的策略和节点选择冲突吗?
    Donaldo
        11
    Donaldo  
       10 天前   ❤️ 1
    @TashinV #10 没有想到为什么会冲突,你配置好什么网段走 WG 就好了吧。难道你这些内网网段还会和你需要出国的规则有重叠么。
    TashinV
        12
    TashinV  
    OP
       10 天前 via iPhone
    @Donaldo
    感谢思路,我研究研究。
    TashinV
        13
    TashinV  
    OP
       9 天前 via iPhone
    @Donaldo
    有点儿奇怪,surge 设置好策略组之后,iOS 设备可以打通,但是 mac 设备连不上……不知道问题出在哪里哦?
    Donaldo
        14
    Donaldo  
       9 天前   ❤️ 1
    @TashinV #13 描述的有点模糊,连不上的错误是什么?我有一台 Mini 一台 MBP ,也是按照上述思路配置的,目前没啥问题。iOS 我是单独的一套配置,不和电脑设备共享,不过理论上应该没什么区别。
    Donaldo
        15
    Donaldo  
       9 天前   ❤️ 1
    @TashinV #13 不过我这样配置可能会有一个 bug ,就是 Surge 初始化的时候会把所有 Proxy 都握手一遍,也即你三个 Peers 都会被同一台设备连接一次,可能会导致冲突,有时候就要等一会儿才能连接上,但这样非常不优雅,所以我在考虑要把这些配置分开了,建议你也考虑一下。。。

    我不知道你的问题是不是也出现在这里
    TashinV
        16
    TashinV  
    OP
       9 天前 via iPhone
    @Donaldo
    我的 iOS 和 Mac 是共用一套配置的,策略组里面都加入 iOS 和 Mac 设备,每台设备一个节点。目前情况是 iOS 设备不管是在外面的 Wi-Fi 还是蜂窝网络下都可以连接回家,换成 Mac 在外面的 Wi-Fi 或者连接手机热点就无法连接回家。
    Donaldo
        17
    Donaldo  
       9 天前   ❤️ 1
    @TashinV #13 找到了一个更好的解决方案,可以把 wg 的配置写在 modules 里面,具体参考 https://manual.nssurge.com/others/module.html 。module 语法和 profile 一致,就相当于当前 profile 的一个 patch 。这样多台设备共享一个 profile ,然后每个设备加载不同的 module ,应该就可以避免这个握手冲突的问题了
    Donaldo
        18
    Donaldo  
       9 天前   ❤️ 1
    TashinV
        19
    TashinV  
    OP
       9 天前 via iPhone
    @Donaldo
    module 完全不会写😭😭😭,规则还有一点点基础
    Donaldo
        20
    Donaldo  
       9 天前   ❤️ 1
    @TashinV #19

    Module 和 Profile 遵从一样的语法,我是这么写的:
    Profile 里面:

    [Rule]
    RULE-SET,192.168.9.0/24,wg

    [Proxy]
    wg = wireguard, section-name=WG

    然后就结束,规则里面不写 WG peers ,然后每个 module 里面(我用我给 Mini 用的做例子):

    # mini.sgmodule
    [WireGuard WG]
    private-key = <Peer Private Key>
    self-ip = 192.168.9.2
    self-ip-v6 = fd00:9::2
    dns-server = 10.0.0.1
    mtu = 1280
    peer = (public-key = <PubKey>, allowed-ips = "0.0.0.0/0, ::/0", endpoint = host:port, preshared-key = <PSK>, keepalive = 25)

    然后如常应用 Profile ,再去加载规则( Profiles 和 Modules 在一个文件夹内)
    TashinV
        21
    TashinV  
    OP
       9 天前
    @Donaldo #20
    尝试了一下,能挂载 sgmodule ,但是还是没用,连接不上。
    Donaldo
        22
    Donaldo  
       9 天前 via iPhone   ❤️ 1
    @TashinV #21 那真的爱莫能助了,看看 endpoint 的 log 有没有异常?
    TashinV
        23
    TashinV  
    OP
       9 天前 via iPhone
    @Donaldo
    看了一下没开增强模式。是不是 surge for mac 需要打开增强模式?
    Donaldo
        24
    Donaldo  
       9 天前   ❤️ 1
    @TashinV #23 不清楚,因为我从开始用 Surge 就是增强模式。。
    TashinV
        25
    TashinV  
    OP
       9 天前
    @Donaldo #24
    打开 surge for Mac 的增强模式,可以连上了。
    TashinV
        26
    TashinV  
    OP
       9 天前 via iPhone
    @Donaldo
    但是还想请问一下,surge 这个增强模式跟普通的模式有什么区别呀?我看有人开了增强模式,好像有找不到局域网下的共享打印机之类的问题
    TashinV
        27
    TashinV  
    OP
       9 天前 via iPhone
    TashinV
        28
    TashinV  
    OP
       8 天前 via iPhone
    还想请问一下,目前的设置大概是这样:

    [Proxy]
    Home = wireguard, section-name=iPhone
    Home = wireguard, section-name= MacBook

    [Proxy Group]
    Home = select, “iPhone”, “MacBook”

    [Rule]
    IP-CIDR,172.16.0.0/24, “Home”

    [iPhone]
    private-key = privatekey
    self-ip = 192.168.5.2
    dns-server = 114.114.114.114
    mtu = 1280
    peer = (public-key = public, allowed-ips = 172.16.0.0/24, endpoint = ip:port)


    这样会不会在内网和外网都通过 wireguard 来连接内网设备(比方 NAS )?

    @Donaldo
    Donaldo
        29
    Donaldo  
       8 天前   ❤️ 1
    @TashinV #28 会的,我的解决方案是设置一个 Subnet 策略组,根据 BSSID/SSID/网段来判断你所在的网络,自动选择走 Wireguard 还是 DIRECT
    TashinV
        30
    TashinV  
    OP
       8 天前 via iPhone
    @Donaldo
    可不可以分享一下您的 subnet 策略组是怎么写的?我照猫画虎。
    Donaldo
        31
    Donaldo  
       8 天前   ❤️ 1
    @TashinV #30

    Home = subnet, default = Wireguard, "SSID:<SSID Prefix>*" = DIRECT

    其实图形界面加一个就行,很直观。
    TashinV
        32
    TashinV  
    OP
       8 天前 via iPhone
    @Donaldo #30
    我的理解是这个命令是配合策略组里面的规则启用的,如果我把 wireguard 切换到 module 的形式启用,这个命令还会生效吗?
    Donaldo
        33
    Donaldo  
       8 天前   ❤️ 1
    @TashinV #32 会的,所谓 Module 也就是运行时对你的 Profile 打补丁,最终看的是打完补丁的那一份 Profile 。
    xpn282
        34
    xpn282  
       8 天前 via iPhone   ❤️ 1
    不用搞多配置文件,把多个 Wireguard 节点放进一个 smart 策略组,Surge 智能判断,哪个通用哪个,完事
    TashinV
        35
    TashinV  
    OP
       2 天前
    @Donaldo #33
    大佬,想请问一下,我现在的 allowed-ips 是这么写的
    allowed-ips = "192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24, ::0/0"
    是不是意味着我连回家里去只能访问 192.168.1.0, 192.168.2.0, 192.168.3.0 这 3 个网段?
    因为我看有人在家里是路由器上开机场,需要的时候连接 WG 回家通过家里机场出国。我这个配置是不是意味着我的全局流量没有连回家(只能访问家里 1 、2 、3 网段,但是不能连回家里的机场)?
    Donaldo
        36
    Donaldo  
       1 天前   ❤️ 1
    @TashinV #35 是的,你这个只有内网走。
    TashinV
        37
    TashinV  
    OP
       1 天前 via iPhone
    @Donaldo
    谢谢大佬解惑
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2478 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:54 · PVG 10:54 · LAX 18:54 · JFK 21:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.