<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[MosDNS本地服务器安装]]></title><description><![CDATA[<p dir="auto">以下是 <strong>MosDNS-X + EasyMosdns</strong> 组合的详细安装教程。教程将严格遵循您指定的目录结构和文件处理方式，所有文件将下载至 <code>/etc/mosdns</code>，二进制文件复制到 <code>/usr/local/bin/</code>，并包含权限设置、服务管理及用户自定义修改的方法。</p>
<hr />
<h1>一、准备工作</h1>
<p dir="auto">在开始之前，请确保满足以下条件：</p>
<ol>
<li><strong>操作系统</strong>：Linux 系统（如 Debian/Ubuntu/CentOS/AlmaLinux 等）。</li>
<li><strong>权限</strong>：拥有 <code>root</code> 或具有 <code>sudo</code> 权限的用户。</li>
<li><strong>网络</strong>：能够访问 GitHub 及互联网以下载所需文件。</li>
<li><strong>端口</strong>：确保 <code>53</code> 端口未被其他 DNS 服务（如 <code>systemd-resolved</code>）占用，并已安装 <code>unzip</code>、<code>wget</code>、<code>curl</code> 等工具：</li>
</ol>
<pre><code class="language-bash"># 更新包索引并安装必要工具（以 Debian/Ubuntu 为例）
sudo apt update &amp;&amp; sudo apt install -y wget unzip curl iptables
</code></pre>
<ol start="5">
<li><strong>备份</strong>：如果已有 MosDNS 配置，请先备份 <code>/etc/mosdns</code> 目录。</li>
</ol>
<hr />
<h1>二、下载所有必需文件</h1>
<p dir="auto">我们将所有文件集中下载并解压到 <code>/etc/mosdns</code> 目录中。请依次执行以下命令：</p>
<ol>
<li>
<p dir="auto"><strong>创建并进入工作目录</strong></p>
<pre><code class="language-bash">sudo mkdir -p /etc/mosdns
cd /etc/mosdns
</code></pre>
</li>
<li>
<p dir="auto"><strong>下载 EasyMosdns 配置文件压缩包 (v3.5-2)</strong><br />
<a href="https://github.com/pmkol/easymosdns/releases" rel="nofollow ugc">源地址</a></p>
<pre><code class="language-bash"># 此处使用最新提供的 v3.5-2 版本配置，如链接失效请访问 GitHub Releases 页面查找最新版本
sudo wget https://github.com/pmkol/easymosdns/archive/refs/tags/v3.5-2.zip -O easymosdns.zip
</code></pre>
</li>
<li>
<p dir="auto"><strong>下载 MosDNS-X 二进制文件压缩包 (v26.05.25)</strong><br />
<a href="https://github.com/pmkol/mosdns-x/releases" rel="nofollow ugc">源地址</a></p>
<pre><code class="language-bash"># 下载适用于 Linux amd64 架构的二进制文件，如需其他架构请前往 Releases 页面选择对应版本
sudo wget https://github.com/pmkol/mosdns-x/releases/download/v26.05.25/mosdns-linux-amd64.zip -O mosdns-x.zip
</code></pre>
</li>
</ol>
<p dir="auto">此时，<code>/etc/mosdns</code> 目录下应包含两个文件：<code>easymosdns.zip</code> 与 <code>mosdns-x.zip</code>，文件名是重命名的效果。</p>
<hr />
<h1>三、解压与文件部署</h1>
<pre><code class="language-bash">cd /etc/mosdns

# 1. 解压 EasyMosdns 配置文件（注意：此压缩包内含有顶级目录 easymosdns-3.5-2，我们需要其内部所有内容）
sudo unzip -q easymosdns.zip
sudo mv easymosdns-3.5-2/* .   # 将配置内容移至 /etc/mosdns 根目录
sudo rm -rf easymosdns-3.5-2 easymosdns.zip   # 清理解压残留与原始压缩包

# 2. 解压 MosDNS-X 二进制文件，仅提取内部的 mosdns 可执行文件
sudo unzip -q mosdns-x.zip mosdns
sudo cp mosdns /usr/local/bin/   # 将二进制文件移入系统 PATH 路径
sudo chmod +x /usr/local/bin/mosdns   # 赋予可执行权限
sudo rm -f mosdns-x.zip   # 删除已使用完毕的压缩包
</code></pre>
<hr />
<h1>四、初始化配置文件</h1>
<p dir="auto">EasyMosdns 提供了一套完整的示例配置文件 <code>config.yaml</code>，我们需要基于此文件进行首次启动前的微调。</p>
<pre><code class="language-bash">cd /etc/mosdns

# 1. 检查是否存在 config.yaml 文件
ls -l config.yaml

# 2. （可选）如存在旧配置文件，先创建备份
sudo cp config.yaml config.yaml.bak
</code></pre>
<hr />
<h1>五、安装并启动 MosDNS 系统服务</h1>
<p dir="auto">MosDNS-X 内置了便捷的服务管理命令（<code>install</code>、<code>start</code>、<code>stop</code>、<code>restart</code>、<code>uninstall</code>）。我们使用以下命令将 MosDNS 安装为系统服务，并立即启动。</p>
<pre><code class="language-bash"># 1. 将 MosDNS 安装为系统服务，指定工作目录为 /etc/mosdns，并使用 config.yaml 作为主配置文件
sudo mosdns service install -d /etc/mosdns -c config.yaml

# 2. 启动服务
sudo mosdns service start

# 3. 查看服务状态（确认是否正常运行）
sudo mosdns service status
# 4. 重启服务
sudo mosdns service restart
# 5. 停止服务
sudo mosdns service stop
</code></pre>
<hr />
<h1>六、验证 DNS 服务</h1>
<p dir="auto">服务启动后，可通过以下方式测试 DNS 解析是否正常：</p>
<pre><code class="language-bash"># 使用 dig 或 nslookup 测试本地 DNS（需提前安装 dnsutils 或 bind-utils）
dig @127.0.0.1 google.com
dig @127.0.0.1 qq.com

#或使用nslookip 查看是否默认使用mosdns查询
nslookup qq.com
nslookup qq.com 127.0.0.1
</code></pre>
<p dir="auto">如果返回正确的解析结果，说明服务已正常运行。</p>
<pre><code class="language-bash"># 日志文件优化
crontab -e

# 在文件末尾添加以下内容
0 5 * * * sudo truncate -s 0 /etc/mosdns/mosdns.log &amp;&amp; /etc/mosdns/rules/update
</code></pre>
<hr />
<h1>七、用户自定义修改</h1>
<p dir="auto">EasyMosdns 提供了高度可定制的配置文件，所有配置均位于 <code>/etc/mosdns/config.yaml</code>。用户可根据注释说明进行个性化修改，例如：</p>
<ul>
<li><strong>修改监听端口</strong>：搜索 <code>protocol: udp</code> 和 <code>protocol: tcp</code> 下方的 <code>addr:</code> 字段，默认端口为 <code>53</code>，可按需更改。</li>
<li><strong>调整上游 DNS 服务器</strong>：搜索 <code>upstream</code> 或 <code>remote</code> 相关段落，替换为符合需求的上游地址（如 HTTPS、DoT 等）。</li>
<li><strong>自定义 Hosts 或黑白名单</strong>：配置文件中包含丰富的示例，可根据注释轻松添加。</li>
</ul>
<p dir="auto">修改配置后，<strong>需手动重启</strong>。若需强制重启，可使用以下命令：</p>
<pre><code class="language-bash">sudo mosdns service restart
</code></pre>
<hr />
<h1>八、其他常用管理命令</h1>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>操作</th>
<th>命令</th>
</tr>
</thead>
<tbody>
<tr>
<td>停止服务</td>
<td><code>sudo mosdns service stop</code></td>
</tr>
<tr>
<td>重启服务</td>
<td><code>sudo mosdns service restart</code></td>
</tr>
<tr>
<td>查看日志</td>
<td><code>sudo journalctl -u mosdns -f</code></td>
</tr>
<tr>
<td>卸载服务</td>
<td><code>sudo mosdns service uninstall</code> (将删除服务但保留配置文件)</td>
</tr>
<tr>
<td>重置配置</td>
<td><code>sudo /etc/mosdns/tools/config-reset</code> (恢复至初始默认配置)</td>
</tr>
</tbody>
</table>
<hr />
<h1>九、附录：全自动安装脚本（可选）</h1>
<p dir="auto">为方便批量部署，您可将以下代码保存为 <code>install_mosdns.sh</code>，一键完成上述所有操作：</p>
<pre><code class="language-bash">#!/bin/bash
set -e

echo "&gt;&gt;&gt; 开始安装 MosDNS-X + EasyMosdns ..."

# 安装依赖
echo "&gt;&gt;&gt; 安装依赖工具..."
sudo apt update &amp;&amp; sudo apt install -y wget unzip curl

# 创建工作目录并进入
sudo mkdir -p /etc/mosdns
cd /etc/mosdns

# 下载文件
echo "&gt;&gt;&gt; 下载 EasyMosdns 配置包..."
sudo wget https://github.com/pmkol/easymosdns/archive/refs/tags/v3.5-2.zip -O easymosdns.zip
echo "&gt;&gt;&gt; 下载 MosDNS-X 二进制包..."
sudo wget https://github.com/pmkol/mosdns-x/releases/download/v26.05.25/mosdns-linux-amd64.zip -O mosdns-x.zip

# 解压与部署
echo "&gt;&gt;&gt; 解压并部署文件..."
sudo unzip -q easymosdns.zip
sudo mv easymosdns-3.5-2/* ./
sudo rm -rf easymosdns-3.5-2 easymosdns.zip

sudo unzip -q mosdns-x.zip mosdns
sudo cp mosdns /usr/local/bin/
sudo chmod +x /usr/local/bin/mosdns
sudo rm -f mosdns-x.zip

# 安装并启动服务
echo "&gt;&gt;&gt; 安装系统服务..."
sudo mosdns service install -d /etc/mosdns -c config.yaml
sudo mosdns service start

echo "&gt;&gt;&gt; 安装完成！"
echo "&gt;&gt;&gt; 服务状态："
sudo mosdns service status
</code></pre>
<p dir="auto">赋予执行权限并运行：</p>
<pre><code class="language-bash">chmod +x install_mosdns.sh
sudo ./install_mosdns.sh
</code></pre>
<hr />
<h1>自用<code>config.yaml</code></h1>
<pre><code># =============================================
# EasyMosdns v3.5 - 节点IP自动分流版
# 项目地址：https://apad.pro/easymosdns
# 本配置文件用于 MosDNS-X 或原版 MosDNS
# Github：
# 配置https://github.com/pmkol/easymosdns
# 二进制：https://github.com/pmkol/mosdns-x/
# =============================================

# ---------------------------------------------
# 日志配置
# ---------------------------------------------
log:
  file: "./mosdns.log"          # 日志文件存放路径
  level: info                    # 日志级别：debug/info/warn/error

# ---------------------------------------------
# 数据源配置（规则文件）
# 所有规则文件位于 ./rules/ 目录下
# ---------------------------------------------
data_providers:
  - tag: chinalist               # 中国域名列表（常见国内域名）
    file: ./rules/china_domain_list.txt
    auto_reload: true

  - tag: gfwlist                 # GFW 封锁域名列表（需要代理的域名）
    file: ./rules/gfw_domain_list.txt
    auto_reload: true

  - tag: cdncn                   # 国内 CDN 域名列表（使用本地 DNS 解析更优）
    file: ./rules/cdn_domain_list.txt
    auto_reload: true

  - tag: chinaip                 # 中国 IP 地址段
    file: ./rules/china_ip_list.txt
    auto_reload: true

  - tag: gfwip                   # GFW 相关 IP 地址段（用于响应检测）
    file: ./rules/gfw_ip_list.txt
    auto_reload: true

  - tag: adlist                  # 广告域名黑名单
    file: ./rules/ad_domain_list.txt
    auto_reload: true

  - tag: hosts                   # 自定义 hosts 映射文件
    file: ./hosts.txt
    auto_reload: true

# ---------------------------------------------
# 插件列表（按顺序处理）
# ---------------------------------------------
plugins:
  # ----- 1. Hosts 映射插件 -----
  - tag: hosts
    type: hosts
    args:
      hosts:
        - "provider:hosts"       # 从 data_providers 中加载 hosts

  # ----- 2. ECS (EDNS Client Subnet) 自动获取插件 -----
  - tag: ecs_auto
    type: ecs
    args:
      auto: true                 # 自动获取客户端真实 IP 子网
      force_overwrite: false     # 不强制覆盖已有的 ECS

  # ----- 3. ECS 局域网匹配插件（用于判断客户端是否在内网）-----
  - tag: ecs_is_lan
    type: query_matcher
    args:
      ecs:                       # 匹配以下私有/特殊 IP 段的 ECS
        - "0.0.0.0/8"
        - "10.0.0.0/8"
        - "100.64.0.0/10"
        - "127.0.0.0/8"
        - "169.254.0.0/16"
        - "172.16.0.0/12"
        - "192.168.0.0/16"
        - "224.0.0.0/3"
        - "::1/128"
        - "fc00::/7"
        - "fe80::/10"

  # ----- 4. 缓存插件（用于局域网客户端）-----
  - tag: cache_lan
    type: cache
    args:
      size: 1024                 # 缓存条目数量
      lazy_cache_ttl: 180        # 懒加载缓存 TTL（秒）
      cache_everything: true     # 缓存所有响应（包括错误）
      lazy_cache_reply_ttl: 1    # 懒加载回复的临时 TTL

  # ----- 5. 缓存插件（用于广域网查询）-----
  - tag: cache_wan
    type: cache
    args:
      size: 4096                 # 缓存条目数量（比 LAN 更大）
      compress_resp: true        # 压缩响应以节省内存
      lazy_cache_ttl: 180
      cache_everything: true
      lazy_cache_reply_ttl: 5

  # ----- 6. TTL 修改插件（1 分钟）-----
  - tag: ttl_1m
    type: ttl
    args:
      minimal_ttl: 60            # 最小 TTL 60 秒
      maximum_ttl: 3600          # 最大 TTL 1 小时

  # ----- 7. TTL 修改插件（5 分钟）-----
  - tag: ttl_5m
    type: ttl
    args:
      minimal_ttl: 300           # 最小 TTL 5 分钟
      maximum_ttl: 18000         # 最大 TTL 5 小时

  # ----- 8. TTL 修改插件（1 小时）-----
  - tag: ttl_1h
    type: ttl
    args:
      minimal_ttl: 3600          # 最小 TTL 1 小时
      maximum_ttl: 18000

  # ----- 9. 黑洞插件（返回空响应，用于广告屏蔽）-----
  - tag: black_hole
    type: blackhole
    args:
      rcode: 0                   # 返回 NOERROR 空应答
      ipv4: "0.0.0.0"           # A 记录返回 0.0.0.0
      ipv6: "::"                # AAAA 记录返回 ::

  # ----- 10. 查询匹配：非域名格式（如纯 IP 查询）-----
  - tag: query_is_non_domain
    type: query_matcher
    args:
      domain:
        - "keyword::"            # 匹配空关键字（通常用于识别非标准域名）

  # ----- 11. 查询匹配：本地域名（中国域名）-----
  - tag: query_is_local_domain
    type: query_matcher
    args:
      domain:
        - "provider:chinalist"

  # ----- 12. 查询匹配：非本地域名（GFW 列表域名）-----
  - tag: query_is_non_local_domain
    type: query_matcher
    args:
      domain:
        - "provider:gfwlist"

  # ----- 13. 查询匹配：国内 CDN 域名-----
  - tag: query_is_cdn_cn_domain
    type: query_matcher
    args:
      domain:
        - "provider:cdncn"

  # ----- 14. 查询匹配：广告域名-----
  - tag: query_is_ad_domain
    type: query_matcher
    args:
      domain:
        - "provider:adlist"

  # ----- 15. 响应匹配：响应中包含中国 IP-----
  - tag: response_has_local_ip
    type: response_matcher
    args:
      ip:
        - "provider:chinaip"

  # ----- 16. 响应匹配：响应中包含 GFW IP-----
  - tag: response_has_gfw_ip
    type: response_matcher
    args:
      ip:
        - "provider:gfwip"

  # ----- 17. 查询匹配：QType = 12 (PTR 记录)-----
  - tag: qtype12
    type: query_matcher
    args:
      qtype: [12]

  # ----- 18. 查询匹配：QType = 65 (HTTPS 记录)-----
  - tag: qtype65
    type: query_matcher
    args:
      qtype: [65]

  # ----- 19. 查询匹配：QType = 255 (ANY 查询)-----
  - tag: qtype255
    type: query_matcher
    args:
      qtype: [255]

  # ----- 20. 上游转发：本地 DNS（国内）-----
  - tag: forward_local
    type: fast_forward
    args:
      upstream:
        - addr: "udpme://119.29.29.29"          # 腾讯 DNS（UDP + 多路复用）
        - addr: "udpme://223.5.5.5"             # 阿里 DNS（UDP + 多路复用）
        - addr: "https://dns.alidns.com/dns-query"   # 阿里 DoH
          enable_pipeline: true
          bootstrap: "223.6.6.6"
        - addr: "https://doh.pub/dns-query"          # DNSPod DoH
          enable_pipeline: true
          bootstrap: "119.29.29.29"

  # ----- 21. 上游转发：远程 DNS（国际）-----
  - tag: forward_remote
    type: fast_forward
    args:
      upstream:
        - addr: "udpme://1.1.1.1"               # Cloudflare
        - addr: "udpme://8.8.8.8"               # Google
        - addr: "udpme://9.9.9.9"               # Quad9
        - addr: "udp://185.222.222.222"         # 备用 UDP
          #enable_pipeline: true
          #socks5: "127.0.0.1:1080"             # 可通过 SOCKS5 代理（需自行配置）

  # ----- 22. 主逻辑序列（核心处理流程）-----
  - tag: main_sequence
    type: sequence
    args:
      exec:
        # 步骤 1：应用 hosts 映射
        - hosts

        # 步骤 2：处理非域名查询（如纯 IP 反向查询）
        - if: "(query_is_non_domain)"
          exec:
            - _new_nxdomain_response   # 返回 NXDOMAIN
            - _return

        # ============================================================
        # 步骤 3：处理 PTR 查询（QType=12）- 修改后直接返回 NXDOMAIN
        # 原因：Windows nslookup 默认会查询 PTR 记录，国内 DNS 对 PTR 支持不佳导致超时
        # 直接返回 NXDOMAIN 可避免超时，不影响正常 A/AAAA 查询
        # ============================================================
        - if: "[qtype12]"              # PTR 反向查询
          exec:
            - _no_ecs                  # 移除 ECS 信息
            - _new_nxdomain_response   # 直接返回 NXDOMAIN（域名不存在）
            - _return

        # 步骤 3b：处理 ANY 查询（QType=255）
        - if: "[qtype255]"             # ANY 查询
          exec:
            - _no_ecs
            - forward_local
            - ttl_1h
            - _return

        # 步骤 4：自动获取 ECS（EDNS Client Subnet）
        - ecs_auto
        - _edns0_filter_ecs_only      # 过滤只保留 ECS 信息

        # 步骤 5：根据 ECS 是否为局域网选择缓存
        - if: ecs_is_lan
          exec:
            - cache_lan
            - _no_ecs
          else_exec:
            - cache_wan

        # 步骤 6：如果是局域网 ECS，再次移除 ECS（避免泄露）
        - if: ecs_is_lan
          exec:
            - _no_ecs

        # 步骤 7：广告域名直接黑洞并返回
        - if: query_is_ad_domain
          exec:
            - black_hole
            - ttl_1h
            - _return

        # 步骤 8：本地域名或 CDN 域名 → 使用本地 DNS，并检查响应是否被污染
        - if: "(query_is_local_domain) || (query_is_cdn_cn_domain)"
          exec:
            - forward_local
            - if: "(! response_has_gfw_ip)"   # 如果响应中没有 GFW IP，则正常返回
              exec:
                - ttl_1m
                - _return

        # 步骤 9：GFW 列表域名 → 直接使用远程 DNS（代理）
        - if: query_is_non_local_domain
          exec:
            - _prefer_ipv4                # 优先返回 IPv4 地址
            - forward_remote
            - ttl_5m
            - _return

        # 步骤 10：其余未分类域名 → 优先远程，如果响应包含中国 IP 则回落到本地 DNS
        - _prefer_ipv4
        - primary:
            - forward_remote
            - if: response_has_local_ip
              exec:
                - forward_local
                - _return
          secondary:
            - forward_local
            - _return
          fast_fallback: 2500            # 主上游超时后快速切换到备用
          always_standby: false

        # 最后设置 TTL 为 5 分钟
        - ttl_5m

# ---------------------------------------------
# DNS 服务器监听配置
# ---------------------------------------------
servers:
  - exec: main_sequence          # 使用上面定义的 main_sequence 处理逻辑
    timeout: 6                   # 查询超时时间（秒）
    listeners:
      - protocol: udp
        addr: "0.0.0.0:53"       # 监听所有网卡的 UDP 53 端口
      - protocol: tcp
        addr: "0.0.0.0:53"       # 监听所有网卡的 TCP 53 端口

# ---------------------------------------------
# API 接口（可选，默认注释）
# ---------------------------------------------
#api:
  #http: "0.0.0.0:9080"          # 开启后可通过 HTTP 查看统计信息
</code></pre>
<hr />
<h3>结束语</h3>
<p dir="auto">至此，您已成功部署了一套基于 <strong>MosDNS-X</strong> 与 <strong>EasyMosdns</strong> 的 DNS 分流服务器。它不仅具备极高的性能，还内置了针对中国大陆地区的优化规则，可有效解决 DNS 污染问题，并提供 ECS 支持以加速 CDN 调度。如有任何自定义需求（如修改上游、调整缓存策略、添加广告过滤等），均可通过编辑 <code>/etc/mosdns/config.yaml</code> 轻松实现。</p>
]]></description><link>https://blog.clouldon.com/topic/26/mosdns本地服务器安装</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 05:02:35 GMT</lastBuildDate><atom:link href="https://blog.clouldon.com/topic/26.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 14 Jun 2026 17:51:48 GMT</pubDate><ttl>60</ttl></channel></rss>