V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
paranoiagu
V2EX  ›  宽带症候群

旁路由 ipv6 怎么解决?

  •  
  •   paranoiagu · 2023-06-12 09:05:00 +08:00 · 10437 次点击
    这是一个创建于 565 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直是用 op 作主路由,然后跑了个 pcdn ,虽然规则里排除了 pcdn 机器不走梯子,但是发现如果梯子抽风,还是会影响 pcdn 。所以把主路由的梯子关掉了,加了个旁路由跑梯子。

    op 中添加规则,白名单的机器用旁路由作 ipv4 网关和 dns 服务器。 那么请这个规则支持 ipv6 吗?

    因为现在遇到了 ipv6 问题,ipv6 流量还是走的主路由的,导致某些启用了 ipv6 的网站(如 v2 )打不开。

    搜了几个帖子,那些帖子打开了旁路由的 ipv6 RA ,但是这样会导致 pcdn 也走旁路由。感觉并没有解决问题。

    第 1 条附言  ·  2023-06-12 16:42:33 +08:00
    再补充一下现在的情况:
    1 、主路由:openwrt 192.168.20.1 ,开了 dhcp 、ra 、dhcpv6 等,配置某些白名单机器,分配 192.168.20.254 网关和 dns 。
    2 、旁路由:openwrt 192.168.20.254 ,添加了 ipv6 的 lan ,已经获取 ipv6 地址,也能通过 ipv6 上网,装 pw ,pw 也有 v6 的节点。关 dhcp 、ra 、dhcpv6 等。

    3 、白名单客户端 A:
    v4 情况:成功获取了 v4 地址、dns 、网关,所有流量都是走旁路由的。tracert v4 地址可以看到先走 192.168.20.254 ,再走 192.168.20.1 ,再………………
    v6 情况:成功获取了 v6 地址( 2 个)、v6 dns ,但是流量是直接走 主路由的,tracert v6 地址,可以看到直接走主路由。这时候,客户端访问的域名解析的是 v6 的地址,且是被墙的,那么就 GG 了。关键就是这点。当然浏览器在刷几次后,可能会放弃 v6 地址,改走 v4 后,页面还是可以打开的。

    4 、非白名单客户端 B:v4 、v6 上网正常,都直接走主路由(无需上外网)
    90 条回复    2024-01-01 13:44:19 +08:00
    neroxps
        1
    neroxps  
       2023-06-12 09:22:17 +08:00   ❤️ 1
    用真正的旁路由来解决,而不是将所有流量跑到旁路由。

    通过 DNS 分流,让爬墙的域名获得 fake-ip 。主路由将 fake-ip 转发给旁路由,旁路由把流量封装成梯子流量。然后发回给主路由,主路由发送给梯子。

    ipv6 的话,例如 bilibi.com 拿到 AAAA 记录,直接发起 ipv6 访问,就没有旁路由什么事了。

    这种做法好处就是
    1 、控制好 DNS 查询则控制了哪些域名直接出去,还是走梯子,比传统的使用 DHCP 根据不同 mac 分配不同网关和 DNS 来的更容易维护,获得更好的体验。因为你是根据目的域名分流。
    2 、排查方便,非规则内的域名获得的都是真实的 IP 。不会导致排查时拿到了 fake-ip 影响网络排查。
    3 、减轻路由压力。支持硬路由转发特性,软路由只负责爬墙流量,不会导致 PT PCDN 等业务错误的跑到梯子那边去。

    这才算真正的网络上 [旁路由!!!]

    旁路由:并非所有流量都从这个路由走,才叫旁路由~!
    jdjingdian
        2
    jdjingdian  
       2023-06-12 09:30:47 +08:00
    我是这样做的,dhcp 还是设置主路由,ipv6 也是主路由下发的,旁路由开启 OSPF 宣告路由,然后用 passwall 代理。这样上网的时候,如果目的 ip 在旁路由宣告的路由段里,主路由就会把数据转发给旁路由,否则直接出口
    neroxps
        3
    neroxps  
       2023-06-12 09:44:53 +08:00
    @jdjingdian 也行,但这样就需要一张准确的国内国外路由表。我更喜欢订阅网上的域名规则,根据域名规则直接分流,手机,路由,PC 用同一套规则。
    x66
        4
    x66  
       2023-06-12 09:56:55 +08:00
    @neroxps

    ```
    通过 DNS 分流,让爬墙的域名获得 fake-ip 。主路由将 fake-ip 转发给旁路由,旁路由把流量封装成梯子流量。然后发回给主路由,主路由发送给梯子。
    ```

    这部分在主路由上通过什么插件实现呢?
    BrightMars
        5
    BrightMars  
       2023-06-12 09:59:25 +08:00
    @neroxps 小白问一下,这套方案 adguard 怎么弄
    neroxps
        6
    neroxps  
       2023-06-12 10:00:37 +08:00
    @x66 github 上好多插件啊,smartdns 甚至用 dnsmasq 也行。

    我是用大佬写的 coredns 插件,插件支持订阅网上的 clash yaml 规则。

    https://github.com/charleyzhu/coredns_wormhole_plugin

    但大佬没有写文档,也没有写 config 范例。得自己看代码咯~
    SenLief
        7
    SenLief  
       2023-06-12 10:04:12 +08:00
    @neroxps 主要是主路由不支持 dns 分流的就麻烦了,无法区分流量啊。
    neroxps
        8
    neroxps  
       2023-06-12 10:04:18 +08:00
    @BrightMars https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration#specifying-upstreams-for-domains

    应该是这里指定你的 上游 DNS 服务器是 shellclash 即可。然后 shellclash 使用 fake-ip 方案。shellclash 的 mark 文件里添加
    dns_redir=已禁用
    dns_no=已禁用
    这两个标记。让 shellclash 在 iptables 里挟持 DNS 这样如果 AG 装在同一台 openwrt 上就不影响了。
    SenLief
        9
    SenLief  
       2023-06-12 10:05:08 +08:00
    等一个答案,我现在也是 ipv6 无法解决,所以现在没办法 nas 我就没走梯子,直连的。
    neroxps
        10
    neroxps  
       2023-06-12 10:09:59 +08:00 via iPhone
    @SenLief 主路由不支持无所谓啊,你把主路由的上游 dns 改成你的 openwrt 即可啊。
    ilovecn
        11
    ilovecn  
       2023-06-12 10:13:13 +08:00
    remote dns 用 smartdns ,smartdns 设置 IPV6 SOA
    adoal
        12
    adoal  
       2023-06-12 10:26:07 +08:00
    ipv6 太复杂,当前阶段建议简单一点,对被墙域名只解析 v4
    deorth
        13
    deorth  
       2023-06-12 10:38:01 +08:00 via Android
    我有一样的问题。不过我发现其实不影响,反正浏览器会 fallback 到 v4 的
    SenLief
        14
    SenLief  
       2023-06-12 10:54:00 +08:00
    @neroxps 哎呀我去,对啊,不过上游 dns 指定,只能指定到网关 ip ,这个能接管的吗?
    neroxps
        15
    neroxps  
       2023-06-12 11:04:01 +08:00
    @SenLief #14 没看懂,你什么路由啊,上游 DNS 基本都能设置的吧?不行你 DHCP 分配的 DNS 是 openwrt 呗。不过这样会存在单点故障。
    我的主路由是 Mikrotik ,我写了脚本一直检查 openwrt 的 dns 查询是否正常,如果查询失败,会微信推送给我,并把当前的 DNS 换成运营商的 DNS 。

    主路由的 DNS 充当缓存作用。即使 openwrt 炸了也不至于立刻炸。
    hcwhan
        16
    hcwhan  
       2023-06-12 11:21:40 +08:00
    可以参考下这个
    ipv4 是 旁路由 优化带宽模式
    ipv6 是 二级路由模式
    hcwhan
        17
    hcwhan  
       2023-06-12 11:21:51 +08:00   ❤️ 1
    “双网线”旁路由之“完美”解决 IPv6 和千兆瓶颈问题
    mohumohu
        19
    mohumohu  
       2023-06-12 11:24:12 +08:00
    很简单,跑个 docker 就行了: https://github.com/kkkgo/PaoPaoDNS
    hcwhan
        20
    hcwhan  
       2023-06-12 11:24:40 +08:00
    mohumohu
        21
    mohumohu  
       2023-06-12 11:28:45 +08:00
    用 PaoPaoDNS 完成 DNS 分流,再配合网关: https://github.com/kkkgo/PaoPaoGateWay
    neroxps
        22
    neroxps  
       2023-06-12 12:00:43 +08:00
    @hcwhan #20 额~设备一样,但·····感觉完全没必要管出墙流量的 ipv6 啊。https://blog.skk.moe/post/what-happend-to-dns-in-proxy/
    不管你获得什么 IP ,最终代理服务器都会从本地再查一次 DNS 。所以只需要 Mikrotik 那边把 fake-ip 转发给 openwrt 即可。
    国内流量完全不经过 openwrt 。
    neroxps
        23
    neroxps  
       2023-06-12 12:03:24 +08:00
    @neroxps #22 路由跟踪结果就是这样的。
    SenLief
        24
    SenLief  
       2023-06-12 12:38:35 +08:00
    @neroxps 主路由是 tplink
    carrionlee
        25
    carrionlee  
       2023-06-12 12:51:28 +08:00
    @SenLief 1 楼的方法适合主路由带策略路由功能的硬路由,比如 mikrotik 或者 ubnt 家的路由器
    neroxps
        26
    neroxps  
       2023-06-12 13:07:12 +08:00 via iPhone
    @carrionlee 不是策略路由,普通路由表就行 最差的 tplink 固件都支持啊。
    carrionlee
        27
    carrionlee  
       2023-06-12 13:20:57 +08:00
    @neroxps 的确,fake-ip 的话静态路由就可以了,把 telegram 的 ip 也写进去😂
    SenLief
        28
    SenLief  
       2023-06-12 14:09:08 +08:00 via iPhone
    @neroxps 我想了一下网络拓扑,如果不用主路由分流,那其实和直接用旁路由 clash 是一样的。clash 内置 dns 服务处理方案和用其他的 dns 处理方案是同等级的。
    paranoiagu
        29
    paranoiagu  
    OP
       2023-06-12 14:15:02 +08:00
    @neroxps 听上去,你的规则是基于 GFW 域名,而 @jdjingdian 的规则是基于 大陆外 IP ?

    先谢谢各位,学习一下。
    neroxps
        30
    neroxps  
       2023-06-12 14:22:33 +08:00
    @SenLief #28 怎么会一样?国内流量直接从主路由出去了,而且普通家庭出国流量肯定比国内流量要小。硬路由国内流量完全就是直出的,硬件转发等性能都是完全的。
    如果旁路由是 clash ,你国内流量要先到 clash 过一遍再去主路由。瓶颈就在 clash 了。几百兆可能没啥感觉。如果是 1000Mbps ,过 clash 后有可能就只有 600Mbps ,如果是小包估计就更差了。
    xPKK1qofAr6RR09O
        31
    xPKK1qofAr6RR09O  
       2023-06-12 14:25:12 +08:00
    op 的问题不是海外 v6 无法打开么,讨论一堆 v4 分流什么鬼
    SenLief
        32
    SenLief  
       2023-06-12 14:29:12 +08:00 via iPhone
    @neroxps 我意思是说如果硬路由不支持 dns 分流的这种。
    neroxps
        33
    neroxps  
       2023-06-12 14:37:51 +08:00
    @ppbaozi 对于代理服务器而言,他是根据你访问的域名来本地再解析一次,所以 V 几都不重要,重要的是流量是如何发送给梯子。
    楼主场景是使用 op 作为旁路由,但其实并非真正网络意义上的旁路由,因为他所有流量依然还是从 openwrt 走。
    如果使用路由转发的方法来区分流量,那么他的问题也迎刃而解。
    楼主的问题是 V2EX 应该要转发给梯子的,但却解析到了 ipv6 的地址,而代理工具没有工作在 ipv6 的地址上。
    那如何才能既不影响使用 ipv6 访问国内站点,又能让爬墙流量乖乖的跑去 openwrt ?
    这问题的本质就是分流啊
    neroxps
        34
    neroxps  
       2023-06-12 14:44:27 +08:00
    @SenLief #32 那么就让局域网内的 DNS 指向支持分流的设备上。
    xPKK1qofAr6RR09O
        35
    xPKK1qofAr6RR09O  
       2023-06-12 14:57:41 +08:00
    @neroxps
    1. op 现在本身就可以用 ipv6 访问国内站点,不管国内国外 v6 都走的正常出口
    2. ”让爬墙流量乖乖的跑去 openwrt “,海外 v6 跑去 openwrt 在不支持 v6 的机场上能出的去?没有 6to4 走梯子的操作吧?没有特别配置下,openwrt 拿到海外 v6 还是扔回主路由走的正常出口,分到哪都不管用
    yuguorui96
        36
    yuguorui96  
       2023-06-12 14:58:15 +08:00
    推荐下我自己用 rust 写的分流程序吧(仅支持分流,不含加密算法): https://github.com/yuguorui/rfor

    - 原生支持 IPv6 及其分流
    - 针对 NAS 或 PT 环境,直连时支持源地址保留(即访问 IPv6 网站时如果是直连,那么会直接使用你设备的原有的 IPv6 地址,而不是路由器的)
    - 零拷贝支持
    - 自动设置 iptables 规则,退出时自动清除规则
    neroxps
        37
    neroxps  
       2023-06-12 15:00:14 +08:00
    @ppbaozi #35 对于代理服务器而言,他是根据你访问的域名来本地再解析一次,所以 ipv 几都不重要,重要的是流量是如何发送给 openwrt 。

    openwrt 当然可以,但完全没必要啊,现在梯子又不是跑在 L3 的隧道~何必纠结爬墙的流量是否解析到 ipv6 ?只要能让流量跑到梯子的程序里就完成任务了啊。
    bjzhou1990
        38
    bjzhou1990  
       2023-06-12 15:11:40 +08:00
    前几天刚刚因为想玩 ipv6 把旁路由干掉,直接拿软路由做主路由了,没有旁路由简单多了,国内国外 ipv6 都通
    xPKK1qofAr6RR09O
        39
    xPKK1qofAr6RR09O  
       2023-06-12 15:20:26 +08:00
    @neroxps 流量如何到 openwrt 都不能解决 v6 不能过墙啊,如果你把 op 问题理解成了如何关闭黑名单域名的 v6 解析,那关闭 v6 解析就完事了,当实现了国内域名解析 v6 ,黑名单域名不解析 v6 ,那么流量是走主路由分流还是全灌到 openwrt 还重要吗?都能正常用,分流就不是本质问题

    且有没有可能 op 希望即保留黑名单的 v6 解析又能过墙呢?
    有没有可能黑名单的 v6 只有 80 、443 不能用,其他服务不过墙就能用呢?
    bobryjosin
        40
    bobryjosin  
       2023-06-12 15:45:07 +08:00 via Android
    打开旁路由 RA ,宣告一个 ipv6 内网网段,把 ipv4 和 ipv6 dns 全部指向旁路由内网网段,梯子上丢弃代理域名的 ipv6 解析就可以了,主路由公网地址 RA ,旁路由内网地址 RA ,本身内网地址不具有连通性设备默认不会走内网地址,解决了分流问题,pcdn 依然走主路由,pcdn 机器再手动指定一下 ipv4 的网关就可以了
    neroxps
        41
    neroxps  
       2023-06-12 15:49:47 +08:00
    @ppbaozi #39 我知道你说的意思,大家都解析到准确的 IP ,然后通过准确的路由去到目的地。
    但我的意思是爬墙的流量根本不需要解析真实 IP 。
    请看这篇文章。https://blog.skk.moe/post/what-happend-to-dns-in-proxy/

    既然不需要解析到准确的 IP 。那么就也不需要解析到 ipv6 地址。那使用旁路由方案的话,就可以让主路由根据路由表转发 fake-ip 给 openwrt 即可。

    因为根本不需要考虑 ipv6 是否能过墙,因为代理工具只需要将流量转发给梯子服务器,服务器会根据目的地解析最终的 ip 地址。

    ```
    Fake IP 的定义出自 RFC3089 。这个 RFC 定义了一种新的将 TCP 连接封装成 SOCKS 协议的方法。

    浏览器自己都有 DNS 缓存机制,因此浏览器会先开始寻找自己的缓存,不过并没有找到 blog.skk.moe 的解析结果
    浏览器通过调用操作系统的 getaddrinfo 方法,向操作系统寻求解析结果
    操作系统自己也有一层 DNS 缓存,但是现在操作系统从自己的缓存中依然找不到这一结果
    在系统的网络设置之中设置了一个专门的上游 DNS 地址,可能是用户手动设置的也可能是代理客户端设置的。不论如何,这个设置最终会使操作系统向代理客户端发起 DNS 请求
    操作系统发出的 DNS 解析请求会经过代理客户端并最终被截获
    代理客户端从解析请求中获得域名,从 Fake IP 池中选取一个 IP 建立映射
    代理客户端将这个 Fake IP 返回回去,操作系统拿到了这个 Fake IP 并返回给浏览器
    浏览器对 Fake IP 建立一个 TCP 连接并发送出去
    这个 TCP 连接被代理客户端截获。代理客户端抽取出 Fake IP 并反查出这个 TCP 连接中对应的域名
    有了 TCP 连接和域名,代理客户端可以轻易地将其使用 SOSCKS5 或者 某种协议 进行封装
    有了 Fake IP ,代理客户端无需进行 DNS 解析。最后不论是浏览器、代理客户端还是远端服务器都不会去和 Fake IP 进行连接,因为在代理客户端这里就已经完成了截获、重新封装。
    ---------------------
    本文著作权归作者 Sukka 所有。本文采用 CC BY-NC-SA 4.0 许可协议,商业转载请联系作者获得授权,非商业转载请注明出处。
    作者:Sukka
    来源:浅谈在代理环境中的 DNS 解析行为
    链接: https://blog.skk.moe/post/what-happend-to-dns-in-proxy/
    ```

    但是使用了 fake-ip 方案后,导致所有的 DNS 都拿到假的 IP 地址,所以就需要 DNS 分流来解决这个问题。

    当然,如果用回 openwrt 当主路由,然后配置好支持 ipv6 访问,那么当然也能解决问题。但这 OP 不是说 openwrt 不知道何种原因影响了 PT 和 PCDN 吗,不是所有人都看得懂 openwrt 那个又臭又长的 iptables 规则链的。openwrt 自己的插件本身也有很多插件之间的兼容问题。所以很多人会采用硬路由转发到 openwrt 旁路由的方案来解决稳定性问题。

    所以才有了我所说的 DNS 分流。

    1 、不需要管爬墙的流量是否能解析到 ipv6 地址,因为现在爬墙的代理过程根本不在乎你拿到什么 IP 地址。他们是根据你的访问域名发送给梯子服务器,再由梯子服务器发起链接给目的服务器的。
    2 、既然需要管爬墙流量是否需要解析到 ipv6 。那么我们只需要确保国内的 ipv6 地址能解析到准确的地址,并准确的转发出去即可。
    3 、这种方案在旁路由拓扑中,开销是最小的。DNS 开销小,路由转发路径小。传统的旁路由方案其实就是二级路由或者 dhcp 把个别机器配成二级路由,这些方案都不方便管理。
    4 、方案的缺点就是 DNS 可能存在单点故障,需要额外的监控脚本来修改主路由的上游 DNS ,如果 DNS 炸了,将会影响整个网络的 DNS 查询。
    bobryjosin
        42
    bobryjosin  
       2023-06-12 15:50:55 +08:00 via Android
    @bobryjosin 如果梯子插件支持 ipv6 透明代理,海外落地 vps 也有 ipv6 ,可以试试开启这个选项,但是如果不使用 ipv6 nat ,分流可能不会太准确
    neroxps
        43
    neroxps  
       2023-06-12 15:51:20 +08:00
    @neroxps #41
    2 、既然不需要管爬墙流量是否需要解析到 ipv6 。那么我们只需要确保国内的 ipv6 地址能解析到准确的地址,并准确的转发出去即可
    SenLief
        44
    SenLief  
       2023-06-12 16:24:00 +08:00 via iPhone
    @neroxps 那不就是指向旁路由设备,我记得 clash 自带的 dns 服务和 smartdns 这类的 dns 服务是类似的。如果用旁路由设备是有点多此一举的。
    neroxps
        45
    neroxps  
       2023-06-12 16:34:54 +08:00
    @SenLief #44 但国内流量不走旁路由啊。你也可以用一个 arm 盒子或者一个巴掌大的路由跑一个 DNS 这样这种 DNS 炸的几率就小很多了。例如 GL.iNet 的 GL-MT300N-V2 那种巴掌大的。单独跑一个 dns 卓卓有余
    redial39
        46
    redial39  
       2023-06-12 16:41:01 +08:00
    @neroxps 我也是 ros+clash(debian),想确认 2 个问题
    1:ros 的 dns 配置的是不是 clash 的 dns 服务
    2:ros 的 dns 服务是不是只配置一个同时忽略 pppoe 的 peer dns
    3:在你说的方案下,是不是需要人为维护需要过墙的域名列表,同时再维护一份 clash 的分流列表
    neroxps
        47
    neroxps  
       2023-06-12 16:46:42 +08:00
    @redial39
    1 、ROS 的 dns 配置是 coredns ,coredns 上游有两个,一个是运营商的 dns ,一个是 clash 的 dns 。coredns 的插件有读取网上的规则。我用的是这个 https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash ,当匹配到 proxy 规则的话就从 clash 查询 dns ,不匹配就从运营商 DNS 查询。(这里也可以配成 smartdns 再做测速返回最优 IP 也可以)

    2 、ros dns 只配置一个,我是写了一个 Mikrotik 来解决当 dns 服务器炸了之后,把 ros 的上游 dns 切会运营商 DNS 。https://github.com/neroxps/RouterOS-Script/blob/master/Clash_dns_check.rsc

    3 、我上面 1 里说了。我用的 coredns 插件支持各种网上的规则文件,dnsmasq 的 ag 的 clash 的 自动更新订阅。https://github.com/charleyzhu/coredns_wormhole_plugin
    txydhr
        48
    txydhr  
       2023-06-12 17:11:31 +08:00 via iPhone
    旁路由不是标准的网络架构,所以。。。
    paranoiagu
        49
    paranoiagu  
    OP
       2023-06-12 17:23:13 +08:00
    @hcwhan 看了这个后,我倒是想,其实可以简单点,主路由搞 2 个 lan ,lan1 、lan2 。
    lan1 直接给不需要爬墙的设备用。
    lan2 下面挂旁路由(二级路由),给需要爬墙的用。
    lan1 、lan2 不同的 vlan 。同时接 ap ,ap 也搞 2 个 vlan 对应 2 个无线 ssid 。

    现在主路由(拨号)、旁路由都是 pve 的虚拟机。没有物理交换机,另一个刷了 op 的物理路由器作 ap 。

    应该可以实现把。
    redial39
        50
    redial39  
       2023-06-12 17:26:30 +08:00
    @neroxps 那实现的话是不是在 ros 的 mangle 里吧 src 为 fakeip 段的打上路由标签,然后在路由里强制下一跳是 clash,这样的操作?如果可以的话能不能给一下样例配置,感谢
    neroxps
        51
    neroxps  
       2023-06-12 17:37:04 +08:00
    @redial39 #50 我以前是打标机的,后来发现不需要打标记,直接用路由表更高效。

    yuchenr
        52
    yuchenr  
       2023-06-12 17:59:25 +08:00
    估计要把 ipv6 再分下去。让 ipv4 和 ipv6 都走到旁路由。
    daveh
        53
    daveh  
       2023-06-12 18:23:46 +08:00 via iPhone
    基于现有 v4 方案搞。
    例如以前是 ipset+iptable+clash ,现在就是 ipset+ip6table+clash 。
    clash 只需要跑一个。
    yuchenr
        54
    yuchenr  
       2023-06-12 18:27:55 +08:00
    @daveh 主要是要让终端的 IPv6 路由到旁路由。
    zhaidoudou123
        55
    zhaidoudou123  
       2023-06-12 19:52:18 +08:00
    软路由把 gfwlist 里的 AAAA DNS 请求关掉,比如用 smartdns ,我现在就是这样的
    zhaidoudou123
        56
    zhaidoudou123  
       2023-06-12 19:58:13 +08:00
    @zhaidoudou123 #55
    简单来说,需要爬墙的设备 dns 网关都设置成旁路由,旁路由里开个比如 passwall ,把 passwall 的 dns 上游设置成 smardns ,smartdns 再把 AAAA dns 请求都关掉就行了
    zhaidoudou123
        57
    zhaidoudou123  
       2023-06-12 20:06:31 +08:00
    另外,不知道 OP 的设备是不是苹果设备,苹果设备会请求 type65 的 AAAA 记录,可能会与 IPv6 相关
    具体可以参考我之前的帖子:
    /t/797235
    dcsuibian
        58
    dcsuibian  
       2023-06-12 20:21:13 +08:00
    我是设备自身进行代理的,主路由就正常上网不翻墙。
    旁路由翻墙透明代理给 nvidia shield 用,由于 OpenClash 的 ipv6 有 bug 所以直接放弃了
    Danswerme
        59
    Danswerme  
       2023-06-12 21:09:38 +08:00
    @zhaidoudou123 感谢分享,终于知道怎么回事了,我就是在旁路的 OpenWRT 上屏蔽了 AAAA 记录之后 iOS 上访问本站时就会出现 SSL Error 的问题。 我这就去重新编译个带 SmartDNS 的固件。
    ericww
        60
    ericww  
       2023-06-12 22:19:16 +08:00 via iPhone
    @neroxps 就你这是最正确的了。我建议用 dnsmasq-china-list 项目,makefile 可以生成各种 dns 配置文件。境外域名全走 clash 。这样 clash 只需要 geoip cn direct ,其他全部 proxy 。只需要维护 dns 域名列表就好了,clash 都不用维护了。
    neroxps
        61
    neroxps  
       2023-06-13 04:24:53 +08:00 via iPhone
    @ericww 哈,我用 shellclash 主要 为了他有 web UI ,能手机临时切节点
    redial39
        62
    redial39  
       2023-06-13 08:29:47 +08:00
    @neroxps 哦...在 ros 里加路由表的话..所有下面的设备都是自动过墙了..和我的需求有点冲突.我自己有 3 个 vlan.只有其中 1 各 vlan 需要自动过墙,所以应该只能用打标的方法了
    neroxps
        63
    neroxps  
       2023-06-13 08:59:05 +08:00
    @redial39 #62 那你可以用策略路由啊,源地址是 过墙 vlan 目的是 fake-ip 。
    打标记也不是不行,但记得在最前面规则做 Fast Forward ( fasttrack connection ) 否则会影响转发性能。
    firemeteor
        64
    firemeteor  
       2023-06-13 09:27:38 +08:00 via Android
    @jdjingdian #2 请教一下你这个 OSPF 方案是不是只能实现 1 )基于 geoip 的静态分流; 2 )基于域名+fakeIP 的动态分流?如果考虑基于域名+真实 IP 的动态分流是不是只能通过 iptable 来实现?这种情况感觉分流规则比较难以用路由表来表达。 对 fakeip 还是有点不放心,但是全局静态分流对线路的要求又过高了一点...挺难的😅
    jdjingdian
        65
    jdjingdian  
       2023-06-13 09:42:12 +08:00
    @firemeteor 我也只是半桶水,你的这些问题我也不知道行不行。
    我是利用这个仓库 : https://github.com/dndx/nchnroutes 生成 ospf 的路由表规则,你可以看看
    txydhr
        66
    txydhr  
       2023-06-13 11:48:37 +08:00
    @paranoiagu 面板 ap 也可以做到不同 ssid 对应不同 vlan ,企业用的那种,我用的华为 airengine
    txydhr
        67
    txydhr  
       2023-06-13 11:49:00 +08:00
    @paranoiagu 这个是最标准的做法
    dfly0603
        68
    dfly0603  
       2023-06-13 16:17:44 +08:00 via iPhone   ❤️ 1
    redial39
        69
    redial39  
       2023-06-14 15:06:55 +08:00
    @neroxps 我去看了一下 coredns_wormhole_plugin...作者没有写说明文档...emmm
    kungsun
        70
    kungsun  
       2023-06-14 16:05:02 +08:00
    弄双网卡试试,同时接入主旁路由
    paranoiagu
        71
    paranoiagu  
    OP
       2023-06-14 18:22:10 +08:00 via Android
    @kungsun 那是不可能的。
    首先,不是针对某台设备
    其次,双网卡也不能设置 2 个网关,或者自动切换网关啊
    neroxps
        72
    neroxps  
       2023-06-14 18:22:29 +08:00 via iPhone
    @redial39 哈哈,因为作者只是拿来练下手 写下 go ,给自己弄个需求而已。
    redial39
        73
    redial39  
       2023-06-15 16:52:54 +08:00
    @neroxps 花了点时间读了下源码...似乎配置也不难.但我没接触过 go.如果用这个插件是不是需要自己编译了?
    neroxps
        74
    neroxps  
       2023-06-15 21:09:12 +08:00 via iPhone
    @redial39 emmm 你要配置我明天发到 github 上吧。😅 作者一开始思路是想把匹配的 dns 根据 ros 的 api 丢到 ros 的 address_list 里。但我现在用 fake-ip 方案就简单多了。
    go 编译很简单,docker 啦一个下来然后根据普通 go 程序编译方法编译就行。我觉得比 c++ make 来的简单😅 丢 OpenWrt 上跑就把静态编译打开。
    redial39
        75
    redial39  
       2023-06-16 10:03:25 +08:00
    @neroxps 大概配置策略是
    ```
    . {
    wormhole MYCLASHDNS {
    List clash http://myclashpayloadfile1
    List clash http://myclashpayloadfile2}
    forward MYISPDNS }
    ```
    这样的么
    neroxps
        76
    neroxps  
       2023-06-17 08:42:24 +08:00
    @redial39 #75 抱歉,昨天玩别的东西去了,忘记发出来。

    ```
    . {

    # 运营商 dns
    forward . 202.96.128.166:53 202.96.134.33:53

    #clash dns
    wormhole 127.0.0.1:1053 {
    #RemoteServers 127.0.0.1:7874
    # ROS 10.89.0.1:8728 admin 123456 GFWList
    # ROS_Timeout 2592000
    # ROS_Enabled_Ipv6

    DomainSuffix speedtest.net archive.ubuntu.com
    List clash https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Microsoft/Microsoft.yaml
    List clash https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Bing/Bing.yaml
    List clash https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Global/Global_Classical.yaml
    #List clash https://ghproxy.com/https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Global/Global_Domain.yaml
    List clash https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Netflix/Netflix.yaml

    # balancing parallel fastTest
    Policy balancing
    DomainSuffix fast.com npmjs.org nflxvideo.net openmediavault.org api.met.no packagecloud.io cip.cc cdn.hklive.tv tvboxnow.com
    DomainSuffix image.themoviedb.org api.themoviedb.org www.themoviedb.org api.thetvdb.com
    #Domain www.facebook.com www.google.com
    DomainSuffix youtube.com ytimg.com ggpht.com golang.org debian.org fastlydns.net
    #DomainKeyword github ytimg ggpht googlevideo
    #RegexlistRules github

    IgnoreDomainKeyword m-team.cc
    #IgnoreList dnsmasq https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf
    #IgnoreDomain www.baidu.com.com www.sina.com
    #IgnoreDomainSuffix bilibili.com
    #IgnoreDomainKeyword taobao
    #IgnoreRegexlistRules taobao

    HttpRenewalInterval 300
    FileRenewalInterval 10
    RetryCount 10
    RetryInterval 10
    # DisableAutoUpdate
    }
    debug
    log
    cache 300
    reload 10s
    }


    ```
    redial39
        77
    redial39  
       2023-06-17 16:20:39 +08:00
    @neroxps 感谢..我昨天研究了一下,coredns 的插件生效顺序和 plugins.cfg 有关..弄了半天没成功..失败的原因是 wormhole 一直被我放在了最后一行,我准备用 dnschinalist 这个项目,wh 来判定是否是国内域名,否则 forward 去 clash,因为 clash 里是订阅的机场配置加上了一些 py 脚本自定义的规则,该起来有点麻烦 = =
    exiaduck
        78
    exiaduck  
       2023-07-21 16:32:48 +08:00
    @neroxps 大佬,主路由怎么设置 fake-ip 就转发给旁路由?
    neroxps
        79
    neroxps  
       2023-07-21 17:32:29 +08:00
    @exiaduck 设个路由就好了啊。
    exiaduck
        80
    exiaduck  
       2023-07-21 17:54:10 +08:00
    @neroxps 就是 fake-ip 的 ipv4 地址段和 ipv6 地址段在主路由可以设置规则转发到旁路由么?原生梅林上好像没看到有类似的设置页面。。。
    neroxps
        81
    neroxps  
       2023-07-21 23:32:43 +08:00 via iPhone
    @exiaduck 匹配规则的域名才会解析到 fake-ip ,fake-ip 的地址就没 ipv6 也不需要管 ipv6 。直接走隧道到梯子那头了啊
    exiaduck
        82
    exiaduck  
       2023-07-22 09:34:39 +08:00
    @neroxps 谢谢大佬的提点,fake-ip 方案确实优雅好使,已经完美解决好了我的情况;但,如果 fake-ip 不管出墙的 ipv6 请求的话,那就是纯 ipv4 出国了,这样跟一些类似的方案,比如 dns 服务器直接改掉对应网站的 ipv6 dns 效果是一样的。
    neroxps
        83
    neroxps  
       2023-07-22 13:40:35 +08:00
    @exiaduck #82 本来就无所谓 ipv 几出国。如果是 URL 规则代理的话,代理工具会把你 HTTP 请求直接发到服务器那边,服务器再帮你向目的地域名请求 DNS 如果梯子本来有 ipv6 地址,那么梯子到目的地就是走 ipv6.

    同理,如果你链接梯子的隧道本来就是 ipv6 那么也就跑 ipv6 链接梯子咯。只是客户端到路由之间是 fake-ip
    deadmanend
        84
    deadmanend  
       2023-09-20 20:45:51 +08:00
    @neroxps 大佬,请教一下,想问下怎么实现这种拓扑结构呢?看来看去看了好久,奈何本人实在愚昧,是依靠 ros 自带的路由表吗?如果是的话,那 dhcp 分配的设备 dns 和网关又是怎么指定?感觉好象陷入了个回环,我也想设置成这样独立,但是琢磨了好久都没有办法,只能是需要海淘的设备全都要跑到 op 去,op 作为网关和 dns ,但是总觉的某个地方陷入了死循环。
    先说下我的拓扑把,我是 ros+op+3 个 adgh ,op 自带的 adgh 接管 53 用来做统计的,统计完直接上游是 7874 的 opclash(fakeip),opc 自定义上游 dns 是接一个 mosdns 接管 nameserver 防止有漏网之鱼,再在 mosdns 分流指向内 adgh 和远程 1.1.1.1 。fallback 是直接指向外 adgh 。两个独立部署的 adgh 分别作为内外 dns 服务器和过滤。因为我有需求在同一个网段内 dhcp 自动分配的设备不经过 op ,直接走内 adgh ,但是我又想要用 netwatch 来监控 op ,防止 op 崩了大部份需要海淘的设备(指定地址池)没办法跑到内 adgh 去解析,导致全崩,因为类似访客或者父母还有电视这些动态 dhcp 设备不想他走 op 过去(网关 ros ,dns 内 adgh ),所以就想做一套能基于设备 ip 分流,又能基于海淘设备 dns 分流。
    大佬可以请教一下我该怎么解决吗?我找了好久都没有相似的思路给我,也做了好多方案,导致老是在某一个环节卡住。感谢大佬的不吝赐教。
    Citrus
        85
    Citrus  
       2023-10-07 12:42:15 +08:00
    @neroxps #22 跪求教程,我看到你发的 CoreDNS 的配置,想问下在 RouterOS 里要做什么样的配置呀?要把 DNS 设置成 CoreDNS ,然后还要改一个转发?
    paranoiagu
        86
    paranoiagu  
    OP
       2023-10-15 14:59:39 +08:00
    @neroxps
    终于有空,切换到了 fake-ip 这种方式,用的是 paopaodns 和 paopaogateway ,感谢 @mohumohu
    现在还有一个问题是:
    主路由是 op ,创建一个 tag , 利用 dhcp-option '6, 分流 dns ip',再让需要自动翻的机器利用加上这个 tag 并静态分配 IP 。
    但是发现客户端还会 ipv4 的 dns 已经变成分流 dns ip ,但是 ipv6 的 dns 依然是主路由的 ipv6 地址,且客户端优先使用了 ipv6 去解析,导致分流 dns 无效。

    现在暂时我让 op 给客户端分配一个不存在的 ipv6 地址作为 ipv6 的 dns ,相当于强制客户端用分流 dns ,暂时使用正常。但是总觉得还有点问题。
    目前查询下来,op 不支持让部分机器获取特定的 ipv6 dns 服务器。
    mohumohu
        87
    mohumohu  
       2023-10-15 17:39:37 +08:00
    paranoiagu
        88
    paranoiagu  
    OP
       2023-10-15 20:37:33 +08:00
    @mohumohu
    看了,我现在就是 tag 方式给不同的机器设置不同的 dhcp ,但是还是 ipv6 的 dns 无法通过 tag 解决。
    mohumohu
        89
    mohumohu  
       2023-10-15 21:42:19 +08:00
    @paranoiagu 那问问作者吧,我都是直接关 v6
    fengyaochen
        90
    fengyaochen  
       361 天前
    DNS 分流,国内 IP V4 V6 双栈,国外 IP 屏蔽 V6 ,只走 V4
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2738 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:07 · PVG 10:07 · LAX 18:07 · JFK 21:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.