最近使用openWRT实现了一套几乎终极效果的内网域名管理+DNS加速+DNS去广告+魔法上网的系统,极致的复杂配置之后,就是最简单的无感使用方式。本文将讲述其构架和实现细节,现在任何人都可以无需任何配置就可以直接域名访问 nas 中部署的内网各种服务,加访问 google openai 等服务。

TIPS: 本文不是写给小白的,而是给懂技术的用户的。可能不会说的很细,但能看懂的自然能看懂,看不懂的,写得再细致看了还是白看。

什么是DNS

首先让我们简单了解什么是 DNS,为什么要配置 DNS

DNS 解析器(也称解析器)将域名转换为互联网上的 IP 地址。

每次您的计算机使用域名(例如example.com)连接到网站时,它都需要知道该网站的 IP 地址,即一组唯一的数字。因此,它会联系 DNS 解析器并获取网站的当前 IP 地址。

一般来说,DNS解析器是去中心化DNS系统的一部分。当你向解析器发送请求时,它会联系其他DNS服务器来获取地址。

DNS 的工作原理

您计算机使用的 DNS 解析器通常由您的互联网服务提供商 (ISP) 选择。如果您想为您的网络使用其他 DNS 解析器,您可以自行配置网络以启用它。您可以在操作系统的网络设置或家用路由器的管理界面中更改此配置。

DNSMasq + DNSCrypt Proxy

开胃小菜的配置

DNS

  • 和nginx 配合使用。 简单的可以直接修改/etc/hosts

  • DNSCrypt Proxy: 作为DNS前端访问DOH的DNS

  • DNSMasq: 作为DNS后端,连接到DNSCrypt Proxy,并配置本地域名。还可以添加DNS去广告功能,浏览器插件去广告非常消耗CPU和内存,但是在DNS前端去广告,资源消耗低,并一次性解决所有的访问终端(pc,手机,平板)广告问题。

    配置一个去广告,本地域名管理工具。

    TIPS: 使用时需要手动设置本机dns指向nas 的 DNS

dnsmasq + smartDNS

直接接管路由器下游所有设备的DNS,直接无感访问私有域名!

最推荐的使用方式!用户不需要任何配置,任何软件的安装,真正的无感使用

openWRT + smartDNS

整体架构图

graph LR
    subgraph 用户网络访问
        User[用户] -->|域名访问| Router[OpenWrt路由器]
    end

    subgraph OpenWrt路由器
        Router --> |DNS请求| DNSMASQ[dnsmasq]
        DNSMASQ -->|上游查询| SmartDNS[smartdns<br>加速/去广告]
        Router -->|内网访问| NAS(域名管理)
        
        SmartDNS -->|国外域名<br>DOH/DOT<br>流量代理| DNS
        SmartDNS -->|国外域名<br>DOH/DOT<br>流量代理| DNS...
        SmartDNS --> |国内域名| 国内DNS
        SmartDNS --> |国内域名| 国内DNS...
        
        passwall[passwall<br>透明代理] --> xray
        
        
        OpenWrt_Script -->|更新配置| DNSMASQ
        OpenWrt_Script -->|更新配置| SmartDNS
    end

    subgraph NAS服务器
        NAS --> |内网域名| Nginx[Nginx<br>反向代理]
        Nginx --> Emby[emby服务]
        Nginx --> Iyuu[iyuu服务]
        Nginx --> Other[其他服务]


        Script[配置生成脚本<br>内网域名:IPv4/Ipv6] --> HTTP[HTTP配置服务]
        HTTP -->|提供配置| OpenWrt_Script[OpenWrt更新脚本<br>内网域名]
    end
    
    subgraph 外网域名
   
    	Router -->|外网域名<br>代理访问| PROXYDOMAIN[被墙域名<br>Google openAI etc]
    	Router -->|外网域名<br>直接访问| DOMAIN[外网域名]
        
    end

关键组件说明

  1. OpenWrt路由器
    • dnsmasq:本地 DNS 服务器,处理客户端 DNS 请求
    • smartdns:智能 DNS 解析服务,作为 dnsmasq 的上游
    • 定期执行配置更新脚本
  2. NAS服务器
    • Nginx:反向代理所有服务(emby/iyuu等)
    • 配置生成脚本:自动获取本机 IP 并生成配置文件
    • HTTP 服务:提供配置文件下载
  3. 配置更新流程
    • NAS 脚本定期生成配置文件
    • OpenWrt 脚本定期拉取新配置
    • 动态更新 DNS 服务配置

Nas 中 DNS 配置更新流程图

sequenceDiagram
    participant NAS_Script as NAS 配置脚本
    participant HTTP_Server as HTTP 服务
    participant OpenWrt_Script as OpenWrt 更新脚本
    participant DNSMASQ
    participant SmartDNS

    loop 定期执行
        NAS_Script->>NAS_Script: 获取本机 IPv4/IPv6
        NAS_Script->>NAS_Script: 生成配置文件
        Note right of NAS_Script: dnsmasq.conf<br>smartdns.conf
        NAS_Script->>HTTP_Server: 上传配置文件
    end

    loop 每小时执行
        OpenWrt_Script->>HTTP_Server: 请求最新配置
        HTTP_Server-->>OpenWrt_Script: 返回配置文件
        OpenWrt_Script->>DNSMASQ: 应用新配置
        OpenWrt_Script->>SmartDNS: 应用新配置
        OpenWrt_Script->>DNSMASQ: 重启服务
        OpenWrt_Script->>SmartDNS: 重启服务
    end

配置文件生成逻辑

flowchart TD
    Start[开始] --> GetIP{获取IP}
    GetIP --> |命令| IPv4[ip -4 addr show]
    GetIP --> |命令| IPv6[ip -6 addr show]
    IPv4 --> Parse[解析有效IP]
    IPv6 --> Parse
    Parse --> GenConfig[生成配置文件]
    
    subgraph 配置文件内容
        GenConfig --> DnsmasqConf[address=/mydomain.com/NAS_IP]
        GenConfig --> SmartDNSConf[domain-rules /mydomain.com/ -c NAS_IP]
    end
    
    GenConfig --> Save[保存到HTTP目录]
    Save --> End[结束]

服务关系说明

组件功能描述
dnsmasq本地DNS缓存,将特定域名直接解析为NAS内网IP,绕过公网解析
smartdns智能DNS解析,过滤广告/恶意域名,作为dnsmasq的上游提供纯净DNS结果
Nginx反向代理服务,通过不同子路径转发到NAS上的不同服务(emby:8096, iyuu:8787等)
更新脚本双端协同工作保持DNS配置与NAS实际IP同步,解决动态IP变化导致的服务中断问题

优势特点

  1. IP动态适配:自动检测NAS的IPv4/IPv6变化,无需手动维护
  2. DNS分层处理
pie
    title DNS解析分层
    "dnsmasq本地解析" : 40
    "smartdns智能过滤/加速" : 30
    "上游DNS服务" : 30
  1. 服务高可用:

    • 域名访问不受NAS IP变化影响
    • 内置服务自动重启机制
  2. 安全隔离:

    • 所有服务通过Nginx暴露
    • 内部服务不直接暴露公网

提示:建议将OpenWrt更新脚本设置为开机启动运行一次 + 每小时(或者时间更短)执行,NAS配置脚本在系统启动和网络变化时触发,实现无缝切换。

smartDNS 配置

这个可以很简单,也可以很复杂。

个人使用了一套集成了几十个DNS分线路解析的配置,配置说明很麻烦,写起来很长。

这部分内容暂略,后期再补充。各位用户可以先简单配置,后期看我这里的更新。

后话

考虑在不触碰某条线的情况下,怎么编写本文。有兴趣的过段时间再查看本文。

参考&致谢

系列教程

全部文章RSS订阅

图书、音乐、视频多媒体锦集

Nas RSS分类订阅

Nas系列

Nas 分类 RSS 订阅

Docker系列

Docker 分类 RSS 订阅


作者: 夜法之书
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 夜法之书 !
评论
数据加载中 ...
 本篇

阅读全文

内网域名管理+DNS加速+DNS去广告+魔法上网的终极系统
内网域名管理+DNS加速+DNS去广告+魔法上网的终极系统 内网域名管理+DNS加速+DNS去广告+魔法上网的终极系统
最近使用openWRT实现了一套几乎终极效果的内网域名管理+DNS加速+DNS去广告+魔法上网的系统,极致的复杂配置之后,就是最简单的无感使用方式。本文将讲述其构架和实现细节,现在任何人都可以无需任何配置就可以直接域名访问 nas 中部署的内网各种服务,加访问 google openai等服务。
2025-11-23
下一篇 

阅读全文

PostgreSQL 实现原理深度剖析:高性能数据库引擎的核心机制
PostgreSQL 实现原理深度剖析:高性能数据库引擎的核心机制 PostgreSQL 实现原理深度剖析:高性能数据库引擎的核心机制
PostgreSQL 作为最先进的开源关系数据库系统,其内部实现原理体现了数据库领域的前沿设计与工程智慧。本文将深入探讨 PostgreSQL 的架构设计、存储机制、并发控制和优化器原理,并通过与 MySQL 的对比展示其独特优势。
2025-11-22
  目录