🗣 Wd提问: linux下dns服务器搭建
🤖 Ai回答: 我们来详细讲解如何在Linux系统上搭建一个DNS服务器。我们将以最经典、使用最广泛的DNS服务软件 BIND (Berkeley Internet Name Domain) 为例。
这份教程将以 Ubuntu/Debian 和 CentOS/RHEL 这两大主流发行版进行说明,并提供一个完整的实例,让你可以从零开始搭建一个功能正常的DNS服务器。
目录
1、 准备工作
2、 第一步:安装BIND
3、 第二步:核心配置文件
4、 第三步:创建正向解析区域
5、 第四步:创建反向解析区域
6、 第五步:检查配置和权限
7、 第六步:启动服务并设置开机自启
8、 第七步:测试DNS服务器
9、 第八步:配置防火墙
10、高级话题与安全建议
11、常见问题排查
1、准备工作
在开始之前,请确保你具备以下条件:
* 一台安装了Linux的物理或虚拟服务器。
* 该服务器拥有一个静态IP地址。我们假设IP地址为 `192.168.1.10`。
* 拥有 `sudo` 或 `root` 权限。
* 我们要解析的域名示例为 `65.hk`。
2、第一步:安装BIND
根据你的Linux发行版,执行相应的安装命令。
对于 Ubuntu / Debian 系统
BIND在Ubuntu/Debian中的服务包名为 `bind9`。
bash
sudo apt update
sudo apt install bind9 bind9utils bind9-doc
对于 CentOS / RHEL / Fedora 系统
BIND在CentOS/RHEL中的服务包名为 `bind`(注意不是 `bind9`)。
bash
对于 CentOS 8 / RHEL 8 / Fedora
sudo dnf install bind bind-utils
对于 CentOS 7
sudo yum install bind bind-utils
安装完成后,相关的主要配置文件和目录如下:
* 主配置文件:
* Ubuntu/Debian: `/etc/bind/named.conf`
* CentOS/RHEL: `/etc/named.conf`
* 区域文件存放目录:
* Ubuntu/Debian: `/etc/bind/db.*`
* CentOS/RHEL: `/var/named/`
3、第二步:核心配置文件
BIND的核心配置文件定义了全局选项、访问控制以及要加载的区域文件。我们需要对其进行基本配置。
配置选项
编辑主配置文件:
* Ubuntu/Debian: `sudo nano /etc/bind/named.conf.options`
* CentOS/RHEL: `sudo nano /etc/named.conf`
找到 `options` 块,并进行如下修改:
dns
options {
directory /var/cache/bind; // Ubuntu/Debian 默认值
// directory /var/named; // CentOS/RHEL 默认值
// 如果希望DNS服务监听所有IP,注释掉 listen-on; 行
// 如果只希望监听特定IP(例如服务器的静态IP),则设置为:
// listen-on port 53 { 127.0.0.1; 192.168.1.10; };
// CentOS/RHEL 默认可能只监听127.0.0.1,需要修改
listen-on port 53 { any; };
// 如果希望IPv6也生效,可以配置 listen-on-v6
listen-on-v6 port 53 { any; };
// 允许哪些客户端查询这台DNS服务器
// any 表示允许所有,生产环境建议根据需要限制
allow-query { any; };
// 非常重要的配置:转发器
// 当你的DNS服务器无法解析某个域名时(如 www.google.com),
// 它会将请求转发给公共DNS服务器(如阿里、谷歌的DNS)。
// 这样你的服务器既能解析内网域名,也能解析外网域名。
forwarders {
8.8.8.8; // Google Public DNS
114.114.114.114; // 114 Public DNS (China)
};
// 递归查询,设为yes
recursion yes;
// 安全增强选项,防止DNS放大攻击等
allow-recursion { any; };
allow-transfer { none; }; // 默认不允许区域传送
version not currently available; // 隐藏BIND版本号
};
说明:
* `listen-on { any; }`:让服务器在所有网络接口上监听53端口。
* `allow-query { any; }`:允许任何IP地址查询此DNS服务器。
* `forwarders`:这是关键配置,它让你的私有DNS服务器能够解析公网域名。如果不设置,你的服务器将无法解析自己区域文件之外的任何域名。
4、第三步:创建正向解析区域
正向解析是将域名(如 `www.65.hk`)解析为IP地址(如 `192.168.1.100`)。
a、在主配置文件中定义区域
你需要告诉BIND要去加载哪个区域文件。
* Ubuntu/Debian: 编辑 `/etc/bind/named.conf.local`
* CentOS/RHEL: 在 `/etc/named.conf` 文件末尾添加
dns
// 定义正向解析区域
zone 65.hk {
type master;
file /etc/bind/db.65.hk; // Ubuntu/Debian路径
// file /var/named/65.hk.zone; // CentOS/RHEL路径
allow-update { none; };
};
b、创建正向区域文件
现在我们来创建上一步中指定的区域文件。
* Ubuntu/Debian: `sudo cp /etc/bind/db.local /etc/bind/db.65.hk`
* CentOS/RHEL: `sudo cp /var/named/named.localhost /var/named/65.hk.zone`
然后编辑这个新文件:
* Ubuntu/Debian: `sudo nano /etc/bind/db.65.hk`
* CentOS/RHEL: `sudo nano /var/named/65.hk.zone`
修改内容如下(以`65.hk`为例):
dns
$TTL 604800
@ IN SOA ns1.65.hk、admin.65.hk、(
2023062101 ; Serial: 序列号,每次修改后必须增加(格式:年月日+两位序号)
604800 ; Refresh: 刷新间隔(秒)
86400 ; Retry: 重试间隔(秒)
2419200 ; Expire: 过期时间(秒)
604800 ) ; Minimum TTL: 最小缓存时间(秒)
; Name servers (NS records)
@ IN NS ns1.65.hk.
; A records for name servers
ns1 IN A 192.168.1.10
; Other A records (hosts)
www IN A 192.168.1.100
mail IN A 192.168.1.101
api IN A 192.168.1.102
; CNAME record (alias)
blog IN CNAME www.65.hk.
; MX record (Mail Exchange)
@ IN MX 10 mail.65.hk.
记录解释:
* `SOA` (Start of Authority): 区域的授权记录,包含主DNS服务器和管理员邮箱(`admin.65.hk.` 等同于 `admin@65.hk`)。
* `NS` (Name Server): 指定这个域的权威DNS服务器是 `ns1.65.hk`。
* `A` (Address): 将主机名映射到IP地址。
* `CNAME` (Canonical Name): 创建一个别名,`blog.65.hk` 指向 `www.65.hk`。
* `MX` (Mail eXchange): 指定负责处理该域邮件的服务器。
5、第四步:创建反向解析区域
反向解析是将IP地址解析为域名。这在一些服务(如邮件服务器)的验证中会用到。
a、在主配置文件中定义反向区域
反向区域的名称是IP地址反写加上 `.in-addr.arpa`。对于 `192.168.1.0/24` 网段,其反向区域名为 `1.168.192.in-addr.arpa`。
* Ubuntu/Debian: 编辑 `/etc/bind/named.conf.local`
* CentOS/RHEL: 在 `/etc/named.conf` 文件末尾添加
dns
// 定义反向解析区域
zone 1.168.192.in-addr.arpa {
type master;
file /etc/bind/db.192.168.1; // Ubuntu/Debian路径
// file /var/named/192.168.1.zone; // CentOS/RHEL路径
allow-update { none; };
};
b、创建反向区域文件
* Ubuntu/Debian: `sudo cp /etc/bind/db.127 /etc/bind/db.192.168.1`
* CentOS/RHEL: `sudo cp /var/named/named.loopback /var/named/192.168.1.zone`
编辑这个文件:
* Ubuntu/Debian: `sudo nano /
📣 商家广告 :
👍
0
👎
IP地址: 152.201.41.113
搜索次数: 0
提问时间: 2025-11-11 16:35:54
🛒 域名购买 :
zhansou.com.cn t-v.com.cn wangsou.com.cn 84.gold 58.gold 6.tj.cn 6.hn.cn 6.ac.cn 43.gold 9el.cn
❓️ 热门提问 :
虚拟空间手机 st550服务器 香港VPS主机优势 域名抢注平台哪个靠谱 香港何氏集团 如何申请免费域名 怎么上搜索 站群平台排名 h5网页开发 VPS主机搭建网站步骤 豌豆Ai站群搜索引擎系统
🌐 域名评估 :
vance.games mm.qh.cn byd.tw.cn cakh.cn oo.ah.cn 41.gold vtol.run ev.ln.cn su.jx.cn bgpi.cn
⛏ 最新挖掘 :
凯里酸汤鱼 贵阳烤脑花 都匀毛尖茶 花溪牛肉粉 贵阳烤生蚝 贵阳烤豆腐 贵阳纸包鱼 贵阳特色菜
🖌 热门作画 :
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊 :
🔗 友情链接 :
Search engine ranking
贵阳用友政务
ai提问
🧰 站长工具 :Ai工具 whois查询 搜索
📢 温馨提示 :本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持 :本站由豌豆Ai 提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。