RouterOS,双网段,双 ISP 下, DNS 的问题。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guiys
V2EX    宽带症候群

RouterOS,双网段,双 ISP 下, DNS 的问题。

  •  
  •   guiys 2024-08-23 20:08:06 +08:00 2584 次点击
    这是一个创建于 481 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现状:移动联通宽带各一条,均通过 ros 进行 pppoe 拨号。有两个 LAN 口分别设置为 192.168.1.x 和 192.168.2.x 。其中 1 网段走移动,2 网段走联通。参考此篇教程进行配置,主要设置:

    [admin@MikroTik] /routing/table> print Flags: D - dynamic; X - disabled, I - invalid; U - used 0 D name="main" fib 1 name="CMCC" fib 
    [admin@MikroTik] /routing/rule> print Flags: X - disabled, I - inactive 0 src-address=192.168.1.0/24 action=lookup table=CMCC 
    [admin@MikroTik] /ip/route> print detail Flags: D - dynamic; X - disabled, I - inactive, A - active; c - connect, s - static, r - rip, b - bgp, o - ospf, i - is-is, d - dhcp, v - vpn, m - modem,> H - hw-offloaded; + - ecmp 0 As dst-address=0.0.0.0/0 routing-table=main gateway=pppoe-out2 immediate-gw=pppoe-out2 distance=1 scope=30 target-scope=10 suppress-hw-offload=no 1 As dst-address=0.0.0.0/0 routing-table=CMCC gateway=pppoe-out1 immediate-gw=pppoe-out1 distance=1 scope=30 target-scope=10 suppress-hw-offload=no 
    [admin@MikroTik] /ip/dns> print servers: dynamic-servers: use-doh-server: https://223.5.5.5/dns-query verify-doh-cert: no doh-max-server-connections: 50 doh-max-concurrent-queries: 500 doh-timeout: 5s allow-remote-requests: yes max-udp-packet-size: 4096 query-server-timeout: 2s query-total-timeout: 10s max-concurrent-queries: 100 max-concurrent-tcp-sessions: 20 cache-size: 2048KiB cache-max-ttl: 1w address-list-extra-time: 0s vrf: main cache-used: 153KiB 

    两个网口上的 DHCP 为客户端分配的网关是 192.168.1.1 和 192.168.2.1 ,DNS 同样。目前无论是接入 1 网段还是 2 网段,都可以正常上网,且访问互联网可以走移动联通各自线路。但是访问网易 DNS 检测,总会有一个网段 IP 和 DNS 不一致。我猜 ros 收到客户端请求后,只通过移动联通之一去请求了 doh ,所以会出现移动网段的客户端请求到联通的 ip 地址。
    现在临时的解决办法是给其中一个网段指派同网段 openwrt 为 DNS ,然后在 openwrt 里设置一个公共 DNS 。这样网易 DNS 检测才会正常。
    请问各位如果只通过 ros 设置能解决这类 DNS 问题吗?

    7 条回复    2024-08-24 10:58:07 +08:00
    povsister
        1
    povsister  
       2024-08-23 20:56:01 +08:00
    策略路由写的没有问题,但你两个 pppoe 都勾 use peer dns 的话我估计 ros 的 dns 要打架(这也是你碰到的问题)

    所以核心是把 DNS 流量分流。
    firewall nat 一下,把来自于 192.168.1.0/24 的 DNS 请求,全部 DNAT 到 CMCC 的运营商 DNS ,记得路由表也配合下。
    做免维护的话得写个脚本,每次 CMCC 拨号完自动把 PPPoE 下发的 DNS 更新到上面那个 DNAT 规则里。
    Soo0
        2
    Soo0  
       2024-08-23 21:03:16 +08:00
    通过 DHCP 下发对应运营商的 DNS 或者公共 DNS 给终端 ,需要缓存或者记录就弄 2 个。有的运营商 DNS 不回应非自己网络请求。现在域名基本都套了 CDN ,可以避免终端收到异网的 CDN 节点 IP 反而变慢 不能连接 需要跨网 这些问题。
    onion83
        3
    onion83  
       2024-08-23 23:38:07 +08:00
    先说结论:ROS 自带 DNS 不能解决这个问题

    原因分析:当 pppoe 拨号或者通过 ipv6 dhclient ,勾选 use peer dns 会将 v4/v6 的服务全部压入 Dynamic Servers 中,根据从上到下的原则往上游发出查询,例如:移动在第一个,那么 ROS DNS Server 永远都只会返回移动的 A 或者 AAAA 记录,联通的线路很大概率用不到(只有 fallback 的时候),线路利用率低。这里还有一个问题,就是 223.5.5.5 默认走的线路是什么?当 223.5.5.5 走的是移动线路,查询出的节点都是移动的,将移动的解析结果返回给 2.x 走联通线路的机器,明显是不科学的。

    解决方案:使用中立的在内网部署中立的第三方 DNS ,例如 smartdns (推荐) 、mosdns 等,通过同时配置多组运营商上游,合并记录并测速后返回多个运营商 A / AAAA 记录,做到流量负债均衡(取决于客户端实现)

    以 smartdns 的配置作为示范:
    ```
    bind :53
    ...
    server <移动 DNS 1> - group isp -group cmc
    server <移动 DNS 2> - group isp -group cmc

    server <联通 DNS1> -group isp -group cuc
    server <联通 DNS1> -group isp -group cuc

    server 119.29.29.29 -group publicdns

    server 8.8.8.8 -group free -exclude-default-group
    ....

    max-reply-ip-num 8
    speed-check-mode tcp:443,ping
    ....
    ```
    因为您已经根据 IP 做了策略路由,所以 <移动 DNS> 返回的必然是移动的节点, <联通 DNS> 返回的必然是联通的节点(取决于网站 CDN 是否布点),对于“不拆分网段的机器”一下就能利用到移动和联通的全部记录,高效利用带宽资源。

    根据你的需求,似乎根据根据网口/网段做了策略路由,不同网段走不同出口,这台 smartdns 完全能复用。

    1 、为 smartdns 配置两个 IP 让两个网段都能访问到 类如 eth1:192.168.1.253/24 eth2: 192.168.2.253/24
    2 、利用 smartdns 的 client-rule 特性做分流: https://pymumu.github.io/smartdns/config/client-rule

    ```
    acl-enable yes
    ...
    # 启用规则组
    group-begin cmc
    client-rules 192.168.1.0/24
    server <移动 DNS 1> -e
    server <移动 DNS 2> -e
    domain-set -name gfwlist -type list -file /etc/smartdns/domain-set/gfw.list
    domain-rules /domain-set:gfwlist/ -nameserver free -speed-check-mode none -address #6
    group-end

    group-begin cuc
    client-rules 192.168.2.0/24
    server <联通 DNS 1> -e
    server <联通 DNS 2> -e
    domain-set -name gfwlist -type list -file /etc/smartdns/domain-set/gfw.list
    domain-rules /domain-set:gfwlist/ -nameserver free -speed-check-mode none -address #6
    group-end
    ```
    3 、根据不同网段配置 dhcp-server 下发 smartdns 的 IP (1.253 / 2.253) 即可,这样既可以使用独立的 dns ,也能复用 gfwlist 、adlist 等分流、屏蔽设施。
    guiys
        4
    guiys  
    OP
       2024-08-24 08:31:36 +08:00 via iPhone
    @povsister use peer dns 已经取消了,现在只配了一个阿里的 doh 。我在各自网段的客户端上分别 trace223.5.5.5 ,结果都可以走各自线路。可貌似只有路由器自己去请求 doh 的时候,没有遵循策略路由的配置,不知道是配置问题还是 BUG 。你说的 dnat 方法有作用,不过还是想利用上路由器自带的 doh 功能。
    多谢~
    guiys
        5
    guiys  
    OP
       2024-08-24 08:41:03 +08:00 via iPhone
    @Soo0 用 dhcp 下发也是可以的,但内网有梯子,还是需要下发内网的服务器。还是想利用上路由器上的 doh~
    guiys
        6
    guiys  
    OP
       2024-08-24 08:43:27 +08:00 via iPhone
    @onion83 恩,看来是 ros 的问题,请求 dns 的方式并不遵循策略路由,而是线路顺序
    povsister
        7
    povsister  
       2024-08-24 10:58:07 +08:00
    @guiys 说句实话国内域名用 DoH 是吃力不讨好。
    海外用 DoH 的话纯 ros 又搞不定。
    #3 说的没错,如果你想最优解决这个问题。自建一个 dns 做分流吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     988 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 18:56 PVG 02:56 LAX 10:56 JFK 13:56
    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