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

分享一则 routeros + openclash + mosdns 的配置思路

  •  
  •   xiaofami · 170 天前 · 2165 次点击
    这是一个创建于 170 天前的主题,其中的信息可能已经有所发展或是发生改变。

    班门弄斧分享下几天下来的折腾成果,欢迎提出改进意见:

    1. routeros 。运行于一台 i5-5010U + 4G 内存 + 双 Intel I210 的小主机。通过导入 CN address-list 、mangle 标记 routing-mark 方式将特定设备的出国流量指向 openclash 。
    2. openclash 。运行于一台 N1 盒子上。设置为 Redir-Host (兼容)模式,关闭 DNS 劫持,设定 mosdns 为上游 DNS 服务器( 127.0.0.1:5335 )。
    3. mosdns 。与 openclash 运行在同一台 N1 盒子上。国内 DNS 服务器改为了本地 ISP 的 DNS ,勾选了 防止 DNS 泄漏 选项,其他保持默认。

    routeros 只支持设置 53 端口 DNS 服务器,不能直接添加 mosdns 作为上游,借助 nat 规则变通一下:

    [admin@MikroTik] /ip/firewall/nat> print
    Flags: X - disabled, I - invalid; D - dynamic 
     0    chain=srcnat action=masquerade src-address-list=lan out-interface=pppoe-out1 log=no log-prefix="" 
     1    chain=srcnat action=masquerade src-address-list=wireguard out-interface=pppoe-out1 log=no log-prefix="" 
     2    chain=dstnat action=dst-nat to-addresses=10.89.2.230 to-ports=5335 protocol=udp src-address=!10.89.2.230 dst-port=53 log=yes log-prefix="mosdns-query:" 
     3    chain=dstnat action=dst-nat to-addresses=10.89.2.230 to-ports=5335 protocol=tcp src-address=!10.89.2.230 dst-port=53 log=yes log-prefix="mosdns-query:" 
     4    chain=srcnat action=masquerade protocol=udp src-address=10.89.2.0/24 dst-address=10.89.2.230 dst-port=5335 log=no log-prefix="mosdns-reply:" 
     5    chain=srcnat action=masquerade protocol=tcp src-address=10.89.2.0/24 dst-address=10.89.2.230 dst-port=5335 log=no log-prefix="mosdns-reply:" 
     6    chain=srcnat action=masquerade protocol=udp src-address=192.168.20.0/24 dst-address=10.89.2.230 dst-port=5335 log=yes log-prefix="mosdns-reply:" 
     7    chain=srcnat action=masquerade protocol=tcp src-address=192.168.20.0/24 dst-address=10.89.2.230 dst-port=5335 log=yes log-prefix="mosdns-reply:" 
    

    上述规则将来自 lan ( 10.89.2.0/24 ) 和 wireguard ( 192.168.20.0/24 )的 DNS 查询全部劫持到了 10.89.2.230:5335 ,即 mosdns 实际地址和监听端口,参考自 Redirect outgoing DNS requets to internal DNS server

    目前已按照该思路配置完成,运行起来倒是没问题,不过在性能和安全方面有无明显缺陷和提升空间?恳请 v 友指点一二~

    11 条回复    2024-05-15 19:45:22 +08:00
    hefish
        1
    hefish  
       170 天前
    真复杂,我就本机挂 clashverge ,感觉速度还挺快的。
    Naples
        2
    Naples  
       170 天前   ❤️ 4
    N1 上部署 bird2 ,对 routeros 通过 bgp 或 ospf 宣告 CN 或者非 CN list 路由,这样就无需进行 mangle 、routing-mark 等操作了
    xiaofami
        3
    xiaofami  
    OP
       170 天前
    @Naples 按照指点找到一篇教程: [使用 RouterOS ,OSPF 和树莓派为国内外 IP 智能分流]( https://idndx.com/use-routeros-ospf-and-raspberry-pi-to-create-split-routing-for-different-ip-ranges/) ,准备试一试
    laincat
        4
    laincat  
       170 天前
    挺好的分享,可以参考
    swordsmile
        5
    swordsmile  
       169 天前
    @hefish clash verge 停止更新了吧
    keyfunc
        6
    keyfunc  
       169 天前   ❤️ 1
    我目前用这个方案,mangle fakeip 的网段到 clash 所在主机,clash 开 tun 。
    mosdns 设置黑名单域名转发的 clash 的 dns 获取 fakeip ,也挺好用的。
    bigfei
        7
    bigfei  
       169 天前 via Android
    routeros 自带 docker ,以上可以全部运行在一台 ros 上,省资源,降本增效
    BanShe
        8
    BanShe  
       169 天前
    记录一下
    hefish
        9
    hefish  
       169 天前
    @swordsmile 也还能用的,没说不让用啊。
    Richared
        10
    Richared  
       169 天前
    直接 clash fakeip 。mosdns proxy 指定到 clash 的 dns 返回 fakeip 地址,routeros 只转发 fakeip 网段就行了
    littlewing
        11
    littlewing  
       169 天前
    多谢,我一直想做到在 openclash 挂了之后,国内流量仍然正常的方案,这个看来可行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2904 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 00:32 · PVG 08:32 · LAX 17:32 · JFK 20:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.