@
TashinV 那你只需要这样配置就够了啊:
[Proxy]
Wireguard=...
[Proxy Group]
PG1 = subnet, default=Wireguard, "ROUTER:192.168.1.0/23"=DIRECT
PG8 = subnet, default=Wireguard, "ROUTER:192.168.8.0/24"=DIRECT
[Rule]
# # 使用 PG1 访问 192.168.1.0/24 ,192.168.2.0/24
IP-CIDR,192.168.1.0/23,PG1
# # 使用 PG8 访问 192.168.8.0/24
IP-CIDR,192.168.8.0/24,PG8
此时:
A 家:
1.蜂窝网络下,由于 Mac 不在"ROUTER:192.168.1.0/23"下,所以 PG1 会选择 default=Wireguard 为代理,于是通过 Wireguard 回家访问 192.168.1.0/24 网段、192.168.2.0/24 网段;
2.办公室 Wi-Fi 下,由于 Mac 不在"ROUTER:192.168.1.0/23"下,所以 PG1 会选择 default=Wireguard 为代理,于是通过 Wireguard 回家访问 192.168.1.0/24 网段、192.168.2.0/24 网段;
3.在自家内网中,由于 Mac 在"ROUTER:192.168.1.0/23"下,所以 PG1 会选择"ROUTER:192.168.1.0/23"=DIRECT 为代理,于是通过 DIRECT 访问 192.168.1.0/24 网段、192.168.2.0/24 网段;
4.以上三种情况,由于 Mac 都不在"ROUTER:192.168.8.0/24"下,所以 PG8 会选择 default=Wireguard 为代理,于是通过 Wireguard 回 B 家访问 192.168.8.0/24 网段。
B 家情况是一样的,不过由于你 Mac 在 B 家时正好能拿到一个 192.168.8.0/24 下的 IP ,所以即使不做额外配置,Mac 访问 192.168.8.0/24 时也能不经过 surge 直连 192.168.8.0/24 。(参考 surge 手册
https://manual.nssurge.com/book/understanding-surge/cn 的 2.2.2 章节,由于 surge 的增强代理模式是在系统创建一个 utun 网卡,并将一条 0.0.0.0/0 路由指向这个 utun ,于是:Mac 发出的数据包,只有从这个 utun 发出的时候,才会被 surge 代理(然后由 surge 处理后再选择别的网卡发出)。而当你 Mac 在别的网卡(例如 en0 )上有一个 IP 地址( 192.168.1.8 )时,系统会存在将 192.168.1.0/24 由 en0 发出的路由规则,于是发往 192.168.1.0/24 的数据会因该路由规则直接被 en0 发出,则不会被 surge 处理。)于是配置可以简化为:
[Proxy]
Wireguard=...
[Proxy Group]
PG1 = subnet, default=Wireguard, "ROUTER:192.168.1.0/24"=DIRECT
[Rule]
IP-CIDR,192.168.2.0/24,PG1
IP-CIDR,192.168.8.0/24,Wireguard
如果你在 A 家不能访问 B 家的 192.168.8.0/24 ,或者在 B 家不能访问 A 家的 192.168.1.0/23 ,那你应该检查你的 Wireguard 配置。假设你有若干不同的 Wireguard 配置分别用于不同的网络情况,你也可以通过[Proxy Group]的 subnet 规则,让 surge 按情况选择对应的 Wireguard ,例如:
[Proxy]
Wireguard1=...
Wireguard2=...
Wireguard3=...
Wireguard4=...
[Proxy Group]
PG1 = subnet, default=Wireguard1, "ROUTER:192.168.1.0/23"=DIRECT, "ROUTER:192.168.8.0/24"=Wireguard2
PG8 = subnet, default=Wireguard3, "ROUTER:192.168.1.0/23"=Wireguard4, "ROUTER:192.168.8.0/24"=DIRECT
[Rule]
IP-CIDR,192.168.1.0/23,PG1
IP-CIDR,192.168.8.0/24,PG8