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

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

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

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

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

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

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

© 2021 V2EX