首页 帮助中心 如何在Debian系统中配置DNS服务?
如何在Debian系统中配置DNS服务?
时间 : 2025-04-12 10:49:15 编辑 : 华纳云 阅读量 : 17

  DNS,说白了就是互联网的“导航仪”。你在浏览器敲了个网址,它负责告诉你:这个名字后面,其实是哪台服务器的 IP。如果没有DNS,全世界的网站都只能靠 IP 地址访问——谁还记得得住那么多数字?那下面我们就来简单分享一下,如何在Debian系统中,自己搭建一个DNS服务器?

  为什么要自己搭 DNS?

  虽然公网有114、8.8.8.8 这种“免费导航”,但自己搭有这些好处:

  内网解析,能为私有IP、服务节点设置DNS,不走公网

  可控缓存,防止某些域名解析异常(比如CDN 污染)

  提升速度,你可以把常用域名缓存到本地,更快返回

  防污染、防劫持,你永远不知道你的请求路上被谁“拦截”了

  所以,对于部署型玩家来说,自建DNS不是“高级”,是“必要”。

  安装 BIND9:搭建你的DNS核心

  先更新系统:

 sudo apt update && sudo apt upgrade

  然后安装:

 sudo apt install bind9 bind9utils bind9-doc

  安装完会自动启动 named 服务。

  查看状态:

 sudo systemctl status bind9

  配置文件结构一览(别搞混了)

  Debian 下的 BIND9 配置主要集中在:

  • /etc/bind/named.conf:主配置文件
  • /etc/bind/named.conf.options:全局设置(如上游 DNS)
  • /etc/bind/named.conf.local:自定义区域 zone 的配置
  • /etc/bind/db.*:DNS 记录模板文件

  配置 DNS 正向解析(从域名到 IP)

  我们来给 example.lan 这个域名搭建解析:

  1. 编辑 named.conf.local:

 sudo nano /etc/bind/named.conf.local

  添加以下内容:

  zone "example.lan" {
      type master;
      file "/etc/bind/db.example.lan";
  };

  2.创建区域数据文件:

  复制模板:

 sudo cp /etc/bind/db.local /etc/bind/db.example.lan
 sudo nano /etc/bind/db.example.lan

  编辑成如下样式:

  $TTL    604800
  @       IN      SOA     ns1.example.lan. admin.example.lan. (
                                2         ; Serial
                           604800         ; Refresh
                            86400         ; Retry
                          2419200         ; Expire
                           604800 )       ; Negative Cache TTL

  ; Name servers
  @       IN      NS      ns1.example.lan.

  ; A records
  ns1     IN      A       192.168.10.1
  www     IN      A       192.168.10.2
  ftp     IN      A       192.168.10.3

  注意:第一个字段是主机名(ns1. www),末尾是你要解析到的 IP 地址

  配置DNS反向解析(从IP到域名)

  编辑 named.conf.local,再加一段:

  zone "10.168.192.in-addr.arpa" {
      type master;
      file "/etc/bind/db.192.168.10";
  };

  然后复制模板:

 sudo cp /etc/bind/db.127 /etc/bind/db.192.168.10
 sudo nano /etc/bind/db.192.168.10

  内容:

  $TTL    604800
  @       IN      SOA     ns1.example.lan. admin.example.lan. (
                                1         ; Serial
                           604800         ; Refresh
                            86400         ; Retry
                          2419200         ; Expire
                           604800 )       ; Negative Cache TTL
  @       IN      NS      ns1.example.lan.
  1       IN      PTR     ns1.example.lan.
  2       IN      PTR     www.example.lan.
  3       IN      PTR     ftp.example.lan.

  测试 DNS 配置是否正确

  检查语法:

 sudo named-checkconf
 sudo named-checkzone example.lan /etc/bind/db.example.lan
 sudo named-checkzone 10.168.192.in-addr.arpa /etc/bind/db.192.168.10

  没有报错就是 OK。

  重启服务:

 sudo systemctl restart bind9

  用dig/ nslookup 测试效果

  正向测试:

 dig @127.0.0.1 www.example.lan

  反向测试:

 dig -x 192.168.10.3 @127.0.0.1

  让本机使用自己这个 DNS 服务

  编辑 /etc/resolv.conf:

 nameserver 127.0.0.1

  或者如果你是用 NetworkManager 的:

 nmcli con mod "你的连接名" ipv4.dns "127.0.0.1"
 nmcli con up "你的连接名"

  DNS 是网络服务的“根”,把它握在自己手里,不仅仅是加快访问速度,更是你系统安全与稳定的关键一环。如果你有多个内网系统、私有云平台、自建服务、或搭建开发环境,DNS 自建是绕不开的一课。

华纳云 推荐文章
选择Debian作为香港云服务器镜像的理由是什么 识别并防御DNS污染攻击,构建安全解析体系的策略 香港服务器debian系统如何监控防火墙流量? 如何在Mac上清除DNS缓存? Nslookup命令用于排除 DNS(域名服务器)故障 Debian系统怎么使用FileZilla进行FTP传输? 在Debian上怎么安装和配置GitLab 应用HTTPS能抵御得住DNS污染吗 盘点dns_sd_configs配置常见的错误类型 教你如何故障排查DNS服务器未响应
活动
客服咨询
7*24小时技术支持
技术支持
渠道支持