打开 Surge 的增强模式之后导致内网的 VLAN 不通,求解决办法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拼车信息请发到 /go/cosub 节点。

如果没有发送到 /go/cosub,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
TashinV
V2EX    Surge

打开 Surge 的增强模式之后导致内网的 VLAN 不通,求解决办法

  •  
  •   TashinV
    PRO
    2024 年 12 月 30 日 2617 次点击
    这是一个创建于 401 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,打开 Surge 的增强模式之后导致内网的 VLAN 不通,vlan1 网段下的电脑无法访问 vlan2 网段下的 NAS 。
    配置文件里添加 bypass-tun = vlan1/24, vlan2/24 也不起效果。
    求大神的解决办法!
    第 1 条附言    2024 年 12 月 30 日
    目前两个网段之间都无法互相访问,一 ping 就 timeout ,traceroute 返回的是 surge 虚拟网卡的 198.18.0.2 地址……
    第 2 条附言    2024 年 12 月 30 日
    Surge 里面配置了 Wireguard 节点信息用于组网,服务端位于家里的路由器( UDM Pro Max ,Unifi OS 内置了 Wireguard Server )。
    Surge 连接规则中定义了使访问 192.168.1.0/24 网段、192.168.2.0/24 网段的流量走 Wireguard:

    [Rule]
    IP-CIDR,192.168.1.0/24, Wireguard
    IP-CIDR,192.168.2.0/24, Wireguard

    我的理解是这样写,电脑在外网下才会触发流量经 Wireguard 连回家,不知道有没有理解错误。

    再次测试了一下,目前是这个情况:

    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 网段)。
    11 条回复    2025-01-08 10:48:27 +08:00
    TashinV
        1
    TashinV  
    OP
    PRO
       2024 年 12 月 30 日 via iPhone
    目前两个网段之间都无法互相访问,一 ping 就 timeout ,traceroute 返回的是 surge 虚拟网卡的 198.18.0.2 地址…
    XunzhiJun
        2
    XunzhiJun  
       2024 年 12 月 30 日   1
    你是用 mac 做路由?加上指定 interface 的规则:
    [Proxy]
    P_VLAN1 = direct, interface=vlan1
    [Rule]
    IP-CIDR,vlan1/24,P_VLAN1
    TashinV
        3
    TashinV  
    OP
    PRO
       2024 年 12 月 30 日 via iPhone
    @XunzhiJun
    不是 Mac 做路由呢,路由是 udm pro max 。
    Mac 开 surge 是组了 wireguard 。surge 的配置文件里面做了 wireguard 策略组,我看了一下 surge 日志,在打开增强模式的情况下,发现使用配置了 wg 的 surge.conf 就无法互通内网,走的是 wg 隧道,但是在打开增强模式的情况下使用无 wg 配置的 surge.conf (除了 wg 配置之外其他的配置都一样)是走的 skip proxy ,应该是直连,这样情况下就可以互通内网。
    不知道问题出在哪里……折腾几天了
    XunzhiJun
        4
    XunzhiJun  
       2024 年 12 月 31 日   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
    TashinV
        5
    TashinV  
    OP
    PRO
       2025 年 1 月 1 日 via iPhone
    @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
    这一条会不会跟上面的冲突?
    XunzhiJun
        6
    XunzhiJun  
       2025 年 1 月 2 日   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 处理,那这些设备的互联有没有问题?
    TashinV
        7
    TashinV  
    OP
    PRO
       2025 年 1 月 2 日
    @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 网段。
    XunzhiJun
        8
    XunzhiJun  
       2025 年 1 月 2 日   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
    TashinV
        9
    TashinV  
    OP
    PRO
       2025 年 1 月 2 日 via iPhone
    @XunzhiJun
    看明白您的思路了,简单说就是增加一个规则:内网下走 direct 。
    我回家试试看。
    另外问一下:您回复中的 192.168.1.0/23 是不是 typo ?应该是 192.168.1.0/24 ?
    XunzhiJun
        10
    XunzhiJun  
       2025 年 1 月 3 日
    @TashinV 是我搞错了,我自己配网段习惯从偶数开始配,习惯性把 192.168.1.0/23 想成{192.168.1.0/24, 192.168.2.0/24}两段合并了。。。192.168.0.0/23 才是{192.168.0.0/24, 192.168.1.0/24}合并。192.168.1.0/24 和 192.168.2.0/24 要分开写,或者如果你对{192.168.0.0/24, 192.168.3.0/24}这两段没有特别要求的话,可以写成 192.168.0.0/22 (相当于{192.168.0.0/24, 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24}合并,只是为了把 192.168.1.0/24 ,192.168.2.0/24 合并成一条规则,看起来简洁一些)。
    kerbals
        11
    kerbals  
       2025 年 1 月 8 日
    [Proxy]
    wg-univ4 = wireguard, section-name=univ4, ecn=true
    wg-telv4 = wireguard, section-name=telv4, ecn=true
    wg-univ6 = wireguard, section-name=univ6, ecn=true
    wg-telv6 = wireguard, section-name=telv6, ecn=true
    [Proxy Group]
    Scene = subnet, default = WG, "10.0.100.1" = DIRECT
    WG = select, wg-univ4, wg-telv4, wg-univ6, wg-telv6
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4507 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 07:01 PVG 15:01 LAX 23:01 JFK 02:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86