V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
maxus
V2EX  ›  DNS

Mosdns + adguardhome +passwall ,实现 dns 国内外分流、bt 下载直连和 ipv6 正常使用

  •  
  •   maxus · 2024-09-04 18:19:34 +08:00 · 14181 次点击
    这是一个创建于 374 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用了一段时间,速度很快,分享一下

    系统环境:
    openwrt 主路由,安装 MosDNS v5.3.1 ,adguardhome 核心版本:0.107.52 ,passwall 4.69-4

    逻辑:
    1 ,mosdns 国内外分流、DNS 缓存、防 DNS 泄漏,由 mosdns 包揽 openwrt 所有解析
    2 ,adguardhome 屏蔽网站,可跟踪全屋访问的网站,上游 dns 设置为 mosdns
    3 ,passwall 翻墙,bt 直连,上游 DNS 设置为 adguardhome

    Mosdns 设置:
    1 ,监听端口:5335
    2 ,DNS 转发,不勾选
    3 ,勾选,远程 DNS 首选 IPv4 、自定义国内 DNS 、Apple 域名解析优化
    4 ,其他选项随意

    adguardhome 设置:
    1 ,后台设置:6060 重定向:选择 用 53 端口替换 dnsmasq

    2 ,打开 AdGuardHome 进入安装向导,
    点击 “开始配置”
    a,网页管理界面,监听接口:选择 所有接口,端口:3000
    b,DNS 服务器,监听接口:选择 所有接口,端口:5388
    c,其他选项随意

    3,管理页面设置:
    a,上游 DNS 服务器 127.0.0.1:5335 (即 mosdns ),选择负载均衡
    b,其他都不选不填,拦截模式选空 ip
    c,DNS 缓存配置,全部留空不选(因为 DNS 缓存由 Mosdns 负责)
    d,其他选项随意

    passwall 设置:
    1,DNS
    a,选择 过滤代理域名 IPv6
    b,过滤模式:选择,通过 UDP 请求 DNS
    c,远程 DNS:自定义 127.0.0.1:5388 (即 adguardhome)
    d,当使用中国列表外时的默认 DNS:选择 直连 DNS

    2,高级设置
    a,TCP 不转发端口:填写 BT 端口/ UDP 不转发端口:填写 BT 端口
    b,TCP 转发屏蔽端口:不使用
    c,UDP 转发屏蔽端口:QUIC
    d,TCP 转发端口:常用的
    e,UDP 转发端口:DNS
    f,TCP 代理方式:Tproxy
    g,其他不填不选

    3 ,访问控制,点击添加
    a,源地址,选择 bt 客户端的 ip 地址
    b,前四项选择默认
    c,TCP 转发端口:填写 BT 端口/UDP 转发端口:填写 BT 端口
    d,TCP 代理模式:不代理/UDP 代理模式:不代理
    e,TCP 节点:默认/UDP 节点:默认

    Openwrt 的 DHCP/DNS 设置
    1 ,服务器设置——常规设置:DNS 转发留空,其他默认
    2 ,服务器设置——高级设置:DNS 服务器端口:5388 ,,其他默认

    Openwrt 防火墙——自定义规则
    ```
    iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
    iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
    [ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
    [ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
    ```

    ios adguardhome 管理 app https://apps.apple.com/us/app/adguard-home/id1667119601?l=zh-Hans-CN
    62 条回复    2025-09-09 17:53:57 +08:00
    xbin
        1
    xbin  
       2024-09-04 18:43:36 +08:00
    感觉有点乱,5388 端口到底谁在用? 是 adguardhome 还是 dnsmasq?
    maxus
        2
    maxus  
    OP
       2024-09-04 18:46:07 +08:00
    @xbin 不会乱的,已经用几个月了,adguardhome 自己的 dns 端口是 5388 ,他的上游交给 mosdns,dnsmasq 交给 adguardhome
    52acca
        3
    52acca  
       2024-09-04 18:48:09 +08:00 via Android
    mosdns 还是用配置文件更灵活
    GoldenLeez
        4
    GoldenLeez  
       2024-09-04 18:55:27 +08:00
    有点懵,adguardhome “选择 用 53 端口替换 dnsmasq”,后面又设置 dns 监听端口 5388 。那么 adguardhome 监听的到底是 53 还是 5388 ,还有 dnsmasq 监听的端口被替换成什么了?
    maxus
        5
    maxus  
    OP
       2024-09-04 19:04:11 +08:00
    @GoldenLeez 懵不懵,想用,自己配置完,自己测试就行了,不想用,可以直接无视。
    我觉得好用只拿出来分享,不负责解释
    maxus
        6
    maxus  
    OP
       2024-09-04 19:11:32 +08:00
    按照上面配置完,全屋的网关和 dns 设置为 openwrt 的 ip 地址即可,不需要添加任何端口。打开 adguardhome, 可以看到全屋设备的网址访问历史, 打开 mosdns 日志可以看到 lazy_cache 缓存数量。

    如果有人不理解配置内容,本人不做解释,只负责分享
    6388xE5FRKTNUT9x
        7
    6388xE5FRKTNUT9x  
       2024-09-04 19:37:19 +08:00
    想问一下 LZ mosdns 的分流方案来源是?
    maxus
        8
    maxus  
    OP
       2024-09-04 19:40:37 +08:00   ❤️ 1
    @showgood163 内置预设,手动配置
    国内 https://1.12.12.12/dns-query https://223.5.5.5/dns-query
    国外 1.1.1.1 和 8.8.4.4

    GeoIP & GeoSite 数据库 自动更新
    864766428
        9
    864766428  
       2024-09-04 20:51:41 +08:00 via iPhone
    以前也折腾过各种方案,包括但不限于 passwall 、bypass 、v2ray 、passwall2 、openclash 、shellclash 、mosdns 、smartdns 、adguardhome 等,最后还是 dae ,配置文件写好,放着不用管了,ipv6 正常,bt 直连,不看查询记录也习惯了,不会强迫症一样时不时看一下记录,机器只要不断电就和不存在一样
    maxus
        10
    maxus  
    OP
       2024-09-04 21:39:28 +08:00
    @864766428 不知道 DAE 是什么,反正这个 DNS 分流和缓存方案,实现国内外网页快速打开,又能屏蔽几十万条垃圾网站和跟踪网站,如果有个人域名,可以设置成自己的私人 dns ,在外面使用
    864766428
        11
    864766428  
       2024-09-04 22:18:43 +08:00 via iPhone
    @maxus 搜 GitHub dae 就有了,imm 的软件包里直接可以下载,采用 eBPF 技术,自带分流,国内直通,无泄漏,你折腾的所有功能都有
    maxus
        12
    maxus  
    OP
       2024-09-04 22:53:49 +08:00
    @864766428 不要,我要 adguardhome 的订阅屏蔽网站功能,自动更新。
    mosdns 的国内外域名,自动更新。
    yuchenr
        13
    yuchenr  
       2024-09-05 09:10:38 +08:00
    对,我现在也是 dae,啥也不用管。
    jqtmviyu
        14
    jqtmviyu  
       2024-09-05 09:58:51 +08:00
    反感在上级路由使用 dns 过滤广告, 误伤了排查和设置太麻烦.
    同理也不在路由上装翻墙软件. 一挂全挂.
    Kale
        15
    Kale  
       2024-09-05 12:17:07 +08:00
    DNS 广告拦截基本没用,还是需要浏览器插件。
    AP8QxuXTV0E46687
        16
    AP8QxuXTV0E46687  
       2024-09-05 12:37:36 +08:00
    很折腾 不如直接 mosdns + singbox 来的直接
    HalloCQ
        17
    HalloCQ  
       2024-09-05 14:29:57 +08:00
    adguardhome 就能分流,mosdns 多此一举
    Kale
        18
    Kale  
       2024-09-05 16:30:50 +08:00
    @HalloCQ 不能。除非你搞两个 ADH
    maxus
        19
    maxus  
    OP
       2024-09-05 18:10:18 +08:00
    评论五花八门,还有说反感在路由器安装翻墙的,你不用不代表别人不用。
    还有什么 dae 的,你的一劳永逸,别的的也一样一劳永逸。
    还有说路由器去广告没效果的,路由器是屏蔽跟踪网站的,肯定无法隐藏网页元素,当然需要配合浏览器插件使用。
    Earsum
        20
    Earsum  
       2024-09-05 22:13:16 +08:00
    @Kale adgh 其实有分流功能,可以指定某个域名用哪个 dns 服务器解析,不过整理起来有点麻烦
    kidxiang
        21
    kidxiang  
       2024-09-06 08:59:51 +08:00
    @864766428 求 dae 在 openwrt 部署的教程
    abolast
        22
    abolast  
       2024-09-06 10:46:43 +08:00
    我这种在 dnsmasq 里面填写本地运营商 dns 的,看到你用过这么多 dns 软件,我简直两眼一抹黑。
    不过,只要不搞旁路由,折腾什么都应该理解万岁
    abolast
        23
    abolast  
       2024-09-06 10:49:35 +08:00
    @kidxiang 大鹅有 dead 可以用,这个带了 webGUI ,安装就是一个包的事情。不过,需要编译的时候把 eBPF 带上。面前 immortalwrt 就自带了 eBPF
    zhsama
        24
    zhsama  
       2024-09-06 10:51:41 +08:00
    佬,使用你上述的配置,直接无法科学了

    除了 adg 的 dns 端口不同,其他完全一致,如何排查问题呢

    HalloCQ
        25
    HalloCQ  
       2024-09-06 12:02:10 +08:00
    @Kale #18 不是不能,是你不会。搞个脚本定时更新白名单或者黑名单
    Kale
        26
    Kale  
       2024-09-06 12:21:50 +08:00
    @HalloCQ #25 那为什么不用 modns 啊
    xycost233
        27
    xycost233  
       2024-09-06 17:45:08 +08:00
    mos 怎么访问国外 dns 呢,单独配置 proxy 么
    maxus
        28
    maxus  
    OP
       2024-09-06 19:29:34 +08:00
    @zhsama 国内网站正常访问吗? AdGuard 各个客户端流量可以正常显示吗
    maxus
        29
    maxus  
    OP
       2024-09-06 19:31:17 +08:00
    @xycost233 mosdns 默认国内外分流解析 DNS ,有个国内域名和 ip 库,匹配的直接国内解析,不匹配的国外解析
    xycost233
        30
    xycost233  
       2024-09-09 10:05:39 +08:00
    @maxus #29 国外解析也是走 proxy 到谷歌 dns 对吧,类似于国内白名单?不在白名单的都走国外解析?如果代理挂了岂不是很多没有被墙的网站都访问不了了
    zhsama
        31
    zhsama  
       2024-09-09 10:36:52 +08:00
    @maxus #28 境内正常、adg 可以显示各个客户端的请求
    Zoyo94
        32
    Zoyo94  
       2024-09-09 11:02:14 +08:00
    #### 看了好多人问 5388 端口,证明你们不理解「重定向:」是干啥的。
    #### 我一直用的就是 ADH+mosDNS+OpenClash 这种方案。
    #### 配置和 up 相同只是 passwall 换成 OpenClash 。
    HalloCQ
        33
    HalloCQ  
       2024-09-09 14:47:56 +08:00
    @Kale #26 mosdns 好像不支持自动 ecs ,没发部署到公网服务器。adguardhome 支持的很好
    batilo
        34
    batilo  
       2024-09-09 15:47:16 +08:00
    这样配置好乱
    maxus
        35
    maxus  
    OP
       2024-09-09 19:37:05 +08:00
    @zhsama 翻墙服务器的域名,要直连,在 mosdns 设置为本地 dns 解析
    maxus
        36
    maxus  
    OP
       2024-09-09 19:38:30 +08:00
    @xycost233 需要保持正常的啊
    Kale
        37
    Kale  
       2024-09-09 22:02:42 +08:00
    @HalloCQ #33 搜索 Easymosdns ,支持公网。致动 ECS
    HalloCQ
        38
    HalloCQ  
       2024-09-09 22:17:05 +08:00
    @Kale 很早前用过,他使用的是 mosdns v4 版本,不支持现在的 v5 版本。mosdns 作者有说过,v4 版本的 mosdns v4 处理的并不好
    HalloCQ
        39
    HalloCQ  
       2024-09-09 22:17:45 +08:00
    @HalloCQ 很早前用过,他使用的是 mosdns v4 版本,不支持现在的 v5 版本。mosdns 作者有说过,v4 版本的 mosdns ecs 处理的并不好
    agon1012
        40
    agon1012  
       2024-09-10 21:02:16 +08:00
    youtube 的广告可以拦截吗?我之前配置了好多方案都不得行
    maxus
        41
    maxus  
    OP
       2024-09-10 21:42:37 +08:00
    @agon1012 手机端 YouTube 广告需要 mitm 去广告,可以借助 stash qx 实现
    stcode
        42
    stcode  
       2024-09-11 19:25:20 +08:00
    @yuchenr dae 配置一般人真搞不来
    haodi1987
        43
    haodi1987  
       2024-09-14 01:49:14 +08:00
    爱快主路由+op 旁路由的话,爱快要怎么设置呢?
    rabt
        44
    rabt  
       358 天前
    感觉不错,回家试试
    anytk
        45
    anytk  
       352 天前
    其实 dnsmasq + sing-box 就足够了,sing-box 可以同时 dns 分流和翻墙,外加 DNS 过滤广告。
    bclerdx
        46
    bclerdx  
       351 天前 via Android
    @abolast 大鹅是什么鬼?
    aidenLL2019
        47
    aidenLL2019  
       344 天前 via iPhone
    厉害,正需要这样的配置样例,多谢!
    Kale
        48
    Kale  
       343 天前
    @agon1012 如果是安卓手机可以用 Youtube Revanced
    maxus
        49
    maxus  
    OP
       342 天前
    如果是最新版 passwall, 远程 DNS 和直连 DNS 都设置指向 Adguardhome, 模式中,将路由器本机代理和客户端代理 全部打勾
    maxus
        50
    maxus  
    OP
       342 天前
    还有提醒一点,mosdns 的远程 dns 设置成 https://8.8.8.8/dns-query https://1.1.1.1/dns-query 这样的,ip 形式的 DOH , 不要用 dot, tls 的 853 端口是被封锁的
    agon1012
        51
    agon1012  
       341 天前
    @Kale 谢谢,我是想的 adguardhome 上配置规则,一直没合适的
    diave971349
        52
    diave971349  
       332 天前
    感谢楼主,我一直想这样设置奈何网上都是 openclash 的教程,并没有 passwall 的教程,那个不勾选过滤海外 ipv6 会有问题吗,我手上是纯 ipv6 的机场,
    maxus
        53
    maxus  
    OP
       332 天前
    @diave971349 估计没事
    devli
        54
    devli  
       324 天前
    “还有提醒一点,mosdns 的远程 dns 设置成 https://8.8.8.8/dns-query https://1.1.1.1/dns-query 这样的,ip 形式的 DOH , 不要用 dot, tls 的 853 端口是被封锁的”
    @maxus 不是这样吧,远程解析 DNS 是在远程服务器上解析,自己的服务器自己控制端口,怎么会是被封锁的?我远程解析一直用的 tls://8.8.8.8, 没什么问题啊。这个又不是本地解析的,谷歌的 doh 、dot 在国内早被封了。
    maxus
        55
    maxus  
    OP
       324 天前
    @maxus #53 我这里用 tls 总是出错
    devli
        56
    devli  
       323 天前
    @maxus 本地解析的话我这里早都墙完了,那就是我理解错了,这里说的远程 dns 只是访问外网时的请求的 dns ,不是远程服务器解析的 dns ,我最近在搞 singbox ,还以为这个和 singbox 一样可以通过代理在远程服务器上解析。我的谷歌 doh/dot 本地解析早不能用了,你那里的 doh 还能用已经不错了。
    rabt
        57
    rabt  
       283 天前
    新版的 openwrt 使用的是 firewall4 ,请问是否有人知道 firewall4 如何设置这个防火墙规则?
    Ccf
        58
    Ccf  
       239 天前
    @864766428 请教下目前用的 mosdns+dae ,单独 dae 怎么分流?能否分享下配置~
    VwEI
        59
    VwEI  
       190 天前
    passwall2 咋弄
    eyjafjalla
        60
    eyjafjalla  
       172 天前
    远程 DNS:自定义 127.0.0.1:5388 这里应该是 53 吧,因为前面 adguard 用 53 端口替换 dnsmasq 了,5388 实际上给 dnsmasq 了
    teadi
        61
    teadi  
       7 天前
    adguard 》》 dae 》》 singbox+smartdns
    全用 docker ,一台小鸡鸡就可以了。
    maxus
        62
    maxus  
    OP
       4 天前
    用 AI 分析了解析逻辑

    DNS 解析逻辑分析
    简单来说,当您的设备发起一个 DNS 查询时,这个请求会经历一个“旅程”,依次经过 AdGuard Home 、Mosdns 和 Dnsmasq ,最终得到解析结果。

    1. 设备 -> AdGuard Home (端口 53)
    AdGuard Home 接管了 53 端口,这个端口是 DNS 服务默认的端口。

    通常,OpenWrt 上的 Dnsmasq 默认监听 53 端口。但您在这里通过 AdGuard Home 的设置,让 AdGuard Home 替换了 Dnsmasq 的 53 端口。

    因此,您家中的所有设备(电脑、手机等),只要其 DNS 设置为路由器的 IP 地址,其 DNS 请求都会首先被 AdGuard Home 接收。

    AdGuard Home 的首要任务是根据其内部的过滤列表(如广告域名、恶意域名等)对请求进行过滤。如果某个域名在列表中,AdGuard Home 会直接阻止解析,从而达到去广告的效果。

    2. AdGuard Home -> Mosdns (端口 5335)
    对于那些没有被 AdGuard Home 过滤掉的 DNS 请求,它会把这些请求转发到它的上游 DNS 服务器。

    根据您的配置,AdGuard Home 的上游 DNS 是 127.0.0.1:5335 。

    这个地址和端口指向的是本地的 Mosdns 服务。

    因此,所有通过 AdGuard Home 过滤的请求,都会被送往 Mosdns 。

    3. Mosdns (端口 5335)
    Mosdns 的核心功能是分流解析。它会根据预设的规则对 DNS 请求进行分类。

    例如,它可以配置成:

    国内域名(如 baidu.com )的请求,发送给国内的 DNS 服务器(如 114.114.114.114 )。

    国外域名(如 google.com )的请求,发送给国外的 DNS 服务器(如 8.8.8.8 )。

    通过这种方式,Mosdns 确保不同类型的域名请求都能获得最快、最准确的解析结果。

    4. Passwall -> Dnsmasq (端口 1745)
    Passwall 作为一个代理工具,需要解析域名来建立代理连接。

    您的配置显示,Passwall 的“直连 DNS”和“远程 DNS”都指向 127.0.0.1:1745 。

    这个地址和端口指向的是被 AdGuard Home 替换掉默认 53 端口的 Dnsmasq 。

    为什么会这样? 这是因为 Passwall 需要一个可靠的、不受外部干扰的本地 DNS 服务来解析它自己的代理规则所涉及的域名。

    将 Dnsmasq 放在 1745 端口,并专门供 Passwall 使用,可以避免 DNS 泄露,并确保代理服务的正常运作。这是一种为了服务隔离和稳定性而采取的常见配置方法。

    总结 DNS 请求路径
    综合以上分析,一个 DNS 请求的完整路径如下:

    您的设备 (DNS 指向路由器 IP) -> AdGuard Home (去广告) -> Mosdns (分流) -> 互联网 (获取最终解析结果)

    同时,Passwall 在其内部需要解析域名时,会独立地、专门地向 Dnsmasq (127.0.0.1:1745) 请求解析。这确保了代理流量的 DNS 解析不会受到上层广告过滤和分流逻辑的影响。

    这个配置是一个非常典型且强大的组合,它利用了每个工具的优势:AdGuard Home 负责第一层的广告和恶意域名过滤; Mosdns 负责第二层的智能分流;而 Dnsmasq 和 Passwall 协同工作,处理代理流量的 DNS 请求,确保网络连接的稳定性和安全性。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2658 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:21 · PVG 14:21 · LAX 23:21 · JFK 02:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.