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 自建是绕不开的一课。