在个人电脑上组建 DNS 服务器通常是为了本地网络开发测试、屏蔽广告/恶意网站、加速域名解析或学习 DNS 原理。


一、常见方案选择

  1. 修改 Hosts 文件(简易本地解析)

    • 适用场景:临时屏蔽网站或本地开发测试。
    • 操作路径:
      • WindowsC:\Windows\System32\drivers\etc\hosts
      • Linux/macOS/etc/hosts
    • 格式示例:
      127.0.0.1   local-dev-site.com
      0.0.0.0     ad.doubleclick.net  # 屏蔽广告
      
  2. 本地 DNS 代理/缓存(如 dnsmasq

    • 功能:轻量级 DNS 转发 + 缓存 + 自定义域名解析。
    • 安装:
      • Ubuntu/Debiansudo apt install dnsmasq
      • Windows:需通过 Dnsmasq for Windows 或 WSL 运行。
    • 配置文件(/etc/dnsmasq.conf)示例:
      # 自定义域名解析
      address=/mytest.local/192.168.1.100
      # 屏蔽广告域名
      address=/adserver.com/0.0.0.0
      # 使用公共DNS上游
      server=8.8.8.8
      server=1.1.1.1
      
  3. 全功能 DNS 服务器(如 BIND9

    • 适用场景:搭建权威 DNS 或复杂本地解析。
    • 安装(Linux):
      sudo apt install bind9
      

二、以 BIND9 为例搭建权威 DNS

  1. 配置文件

    • 主配置文件:/etc/bind/named.conf
    • 添加自定义域区文件:
      zone "home.lan" {
          type master;
          file "/etc/bind/zones/db.home.lan";
      };
      
  2. 创建域区文件/etc/bind/zones/db.home.lan

    $TTL 86400
    @   IN  SOA   ns.home.lan. admin.home.lan. (
                  2024060701 ; 序列号
                  3600       ; 刷新
                  1800       ; 重试
                  604800     ; 过期
                  86400      ; 最小TTL
    )
    @   IN  NS    ns.home.lan.
    ns  IN  A     192.168.1.10   ; DNS服务器IP
    pc1 IN  A     192.168.1.101
    www IN  CNAME pc1
    
  3. 启动服务

    sudo systemctl restart bind9
    sudo ufw allow 53  # 开放防火墙
    
  4. 客户端测试

    nslookup pc1.home.lan 192.168.1.10
    

三、进阶优化方案

  1. 广告屏蔽(Pi-hole 方案)

    • 集成 DNS + 广告过滤,支持 Docker 部署:
      docker run -d \
        --name pihole \
        -p 53:53/tcp -p 53:53/udp \
        -e TZ=Asia/Shanghai \
        -v ./pihole:/etc/pihole \
        pihole/pihole:latest
      
    • 配置 DNS 上游为 8.8.8.81.1.1.1
  2. 本地 DNS 缓存加速

    • Windowsdnscrypt-proxyAcrylic DNS Proxy
    • Linuxsystemd-resolved(默认集成)或 dnsmasq

四、防火墙与安全设置

  1. 限制访问范围(仅内网):
    sudo ufw allow from 192.168.1.0/24 to any port 53
    
  2. 防止 DNS 放大攻击
    • 禁用递归查询(公共服务器不适用):
      /etc/bind/named.conf
      options { recursion no; };
      

五、客户端配置

  1. 手动指定 DNS 服务器
    • 在网络设置中将 DNS 指向你的电脑 IP(如 192.168.1.10)。
  2. 路由器全局生效
    • 在路由器 DHCP 设置中分配你的 DNS 服务器 IP。

常见问题排查

  1. 解析失败
    • 检查服务状态:systemctl status bind9
    • 查看日志:journalctl -u bind9
  2. 端口冲突
    • 确认无其他服务占用 53 端口:sudo lsof -i :53
  3. DNS 污染测试
    • 使用 dig @localhost adsite.com 验证屏蔽是否生效。

适用场景总结

方案 复杂度 适用场景
Hosts 文件 ★☆☆☆☆ 快速本地测试/屏蔽少数域名
dnsmasq ★★☆☆☆ 家庭网络广告过滤+本地解析
BIND9 ★★★★☆ 复杂内部域名系统
Pi-hole ★★★☆☆ 全网络广告屏蔽+DNS管理
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐