1
TashinV OP 目前两个网段之间都无法互相访问,一 ping 就 timeout ,traceroute 返回的是 surge 虚拟网卡的 198.18.0.2 地址…
|
2
XunzhiJun 3 天前 1
你是用 mac 做路由?加上指定 interface 的规则:
[Proxy] P_VLAN1 = direct, interface=vlan1 [Rule] IP-CIDR,vlan1/24,P_VLAN1 |
3
TashinV OP @XunzhiJun
不是 Mac 做路由呢,路由是 udm pro max 。 Mac 开 surge 是组了 wireguard 。surge 的配置文件里面做了 wireguard 策略组,我看了一下 surge 日志,在打开增强模式的情况下,发现使用配置了 wg 的 surge.conf 就无法互通内网,走的是 wg 隧道,但是在打开增强模式的情况下使用无 wg 配置的 surge.conf (除了 wg 配置之外其他的配置都一样)是走的 skip proxy ,应该是直连,这样情况下就可以互通内网。 不知道问题出在哪里……折腾几天了 |
4
XunzhiJun 2 天前 1
@TashinV
那我推测情况是这样的: 在内网时,由于 Mac 本身有一个 192.168.1.8 ,所以访问 192.168.1.0/24 时没有被 surge 处理。而访问 192.168.2.0/24 会走 Wireguard 。这说明 Mac 在内网时不能正确连接 Wireguard 。 所以解决思路有两个: 1.通过修改配置使得 Mac 在内网也能连上 Wireguard 2.如果在内网 IP-CIDR,192.168.2.0/24,DIRECT 能访问到 192.168.2.0/24 的话那么 [Proxy Group] # 通过当前路由器地址选择代理方式: PG_VLAN2 = subnet, default=Wireguard, "ROUTER:192.168.1.x"=DIRECT # 或者通过 WiFi 的 SSID: # PG_VLAN2 = subnet, default=Wireguard, "SSID:家里的 WiFi"=DIRECT [Rule] IP-CIDR,192.168.2.0/24,PG_VLAN2 |
5
TashinV OP @XunzhiJun
1. 内网 IP-CIDR,192.168.2.0/24,DIRECT 能访问到 192.168.2.0/24 ,但是这样的话就无法在内网通过 wireguard 访问另一处地方的内网了。 2. 目前已经有一条 rule 了: IP-CIDR,192.168.1.0/24, Wireguard IP-CIDR,192.168.2.0/24, Wireguard 再加 IP-CIDR,192.168.2.0/24,PG_VLAN2 这一条会不会跟上面的冲突? |
6
XunzhiJun 11 小时 3 分钟前 1
@TashinV 你的意思是你在另一处也有 192.168.2.0/24 这个段,并且两个地方是通过 Wireguard 连接的?如果你的 Mac 在内网用 IP-CIDR,192.168.2.0/24,DIRECT (不配置 IP-CIDR,192.168.2.0/24, Wireguard 这条规则)访问不到另一处的 192.168.2.0/24 ,那你 ["不用增强模式", "使用不带 Wireguard 的 surge.conf", "192.168.1.0/24 下的其它机器在不配置 Wireguard 的情况下"] 应该也访问不到另一处的 192.168.2.0/24 啊。IP-CIDR,192.168.2.0/24,DIRECT 的行为和直接不让 surge 接管 192.168.2.0/24 的行为应该是一致的。那这种情况你应该检查你路由器的配置,按理说把本地发往 192.168.2.0/24 的数据发到本地,把发往另一处的 192.168.2.0/24 的数据通过 Wireguard 发往另一处,这应该是路由器(配置了 Wireguard )的行为。并且你本地的 192.168.2.0/24 设备要访问另一处 192.168.2.0/24 的设备,也需要路由器的 Wireguard 处理,那这些设备的互联有没有问题?
|
7
TashinV OP @XunzhiJun #6
目前是这样的场景: Surge 里面配置了 Wireguard 节点信息用于组网,服务端位于 2 个家里的路由器( UDM Pro Max 和 Cloud Gateway Ultra ,Unifi OS 内置了 Wireguard Server )。 Surge 连接规则中定义了使访问 A 家的 192.168.1.0/24 网段、192.168.2.0/24 和 B 家的 192.168.8.0/24 网段的流量都走 Wireguard: [Rule] IP-CIDR,192.168.1.0/24, Wireguard IP-CIDR,192.168.2.0/24, Wireguard IP-CIDR,192.168.8.0/24, Wireguard 再次测试了一下,目前是这个情况: A 家的情况: A. 使用带 Wireguard 节点配置的 Surge.conf: 1. 蜂窝网络下,均可通过 Wireguard 隧道回家访问 192.168.1.0/24 网段、192.168.2.0/24 网段; 2. 办公室 Wi-Fi 下,均可通过 Wireguard 隧道回家访问 192.168.1.0/24 网段、192.168.2.0/24 网段; 3. 在自家内网中,只可访问当前设备所在的网段,比方本机 IP 地址是 192.168.1.8 ,那么仅可访问 192.168.1.0/24 网段下的设备,无法访问 192.168.2.0/24 网段下的设备。 B. 使用无 Wireguard 节点配置的 Surge.conf: 1. 外网下,均不可走 Wireguard 隧道回家; 2. 内网下,本机可以访问所有网段( 192.168.1.0/24 网段、192.168.2.0/24 网段)。 B 家的情况: A. 使用带 Wireguard 节点配置的 Surge.conf: 1. 蜂窝网络下,可通过 Wireguard 隧道回家访问 192.168.8.0/24 网段; 2. 办公室 Wi-Fi 下,可通过 Wireguard 隧道回家访问 192.168.8.0/24 网段; 3. 在自家内网中,可访问当前设备所在的 192.168.8.0/24 网段。 B. 使用无 Wireguard 节点配置的 Surge.conf: 1. 外网下,不可走 Wireguard 隧道回家; 2. 内网下,本机可以访问 192.168.8.0/24 网段。 |
8
XunzhiJun 4 小时 41 分钟前 1
@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 |