搭建 DNS 服务器后的设置主要分为两部分:服务器本身的配置文件调整(确保它能正确解析)和客户端的网络配置(告诉设备去询问这台 DNS 服务器),下面我按常见的 Linux 环境(如用 BIND9)和 Windows 环境分别说明。
一、服务器端配置(以 Linux + BIND9 为例)
假设你已经用apt install bind9 或yum install bind 安装好了,核心是设置监听地址、转发规则、区域文件。
1、编辑主配置文件/etc/bind/named.conf.options
- 设置监听 IP(允许多少 IP 来查询):
listen-on { 192.168.1.100; }; # 换成你服务器内网IP
listen-on-v6 { none; };- 设置允许查询的客户端:
allow-query { localhost; 192.168.1.0/24; }; # 允许局域网查询- 设置递归查询(如果只想做权威服务器可关):
recursion yes;
allow-recursion { localhost; 192.168.1.0/24; };- 可选:设置转发(让这台服务器把未知域名转给上游 DNS):
forwarders {
8.8.8.8;
114.114.114.114;
};2、添加区域文件(如解析内部域名home.lan)
编辑/etc/bind/named.conf.local:
zone "home.lan" {
type master;
file "/etc/bind/db.home.lan";
}; 创建/etc/bind/db.home.lan 文件,写入:
$TTL 86400
@ IN SOA ns1.home.lan. admin.home.lan. (
2025010101 ; 序列号
3600 ; 刷新
1800 ; 重试
604800 ; 过期
86400 ; 最小TTL
)
@ IN NS ns1.home.lan.
ns1 IN A 192.168.1.100
router IN A 192.168.1.1
pc1 IN A 192.168.1.1013、检查配置并重启服务
sudo named-checkconf sudo named-checkzone home.lan /etc/bind/db.home.lan sudo systemctl restart bind9
4、防火墙放行(UDP 53、TCP 53)
sudo ufw allow 53 # 或 iptables / firewall-cmd 对应开放
二、客户端设置(让设备使用这台 DNS 服务器)
1.局域网内其他电脑(Windows / Mac / Linux)
Windows:
控制面板 → 网络和共享中心 → 更改适配器设置 → 右键当前网卡 → 属性 →Internet 协议版本 4 (TCP/IPv4) → 属性 → 选择“使用下面的 DNS 服务器地址” → 填入你的服务器 IP(如192.168.1.100)。
Mac:
系统偏好设置 → 网络 → 选择当前连接 → 高级 → DNS → 添加192.168.1.100。
Linux:
编辑/etc/resolv.conf,写入:
nameserver 192.168.1.100 (某些发行版由 dhcp 管理,可修改 NetworkManager 配置或/etc/dhcp/dhclient.conf)
进入路由器管理页面 →DHCP 设置 → 将DNS 服务器 改为你的 DNS 服务器 IP → 保存并重启路由器。
这样所有连接到该路由器的设备都会自动使用你的 DNS。
在任意客户端打开终端/cmd,运行:
nslookup pc1.home.lan # 应返回 192.168.1.101 nslookup www.baidu.com # 应正常解析(如果设置了转发)
若解析失败,先排查:
- 客户端能否 ping 通 DNS 服务器 IP?
- 服务器上netstat -tuln | grep 53 看 BIND 是否在监听?
- 服务器防火墙是否放行 UDP 53?
| 问题现象 | 可能原因 | 解决方法 |
| 客户端 nslookup 超时 | 防火墙阻挡 | 检查服务器和客户端防火墙 |
| 能解析内部域名,但外网域名失败 | 未开启递归或未配置转发 | 开启recursion yes; 并填上forwarders |
| 修改区域文件后无变化 | 序列号未增加 | 每次修改 zone 文件必须递增 SOA 中的序列号 |
| Windows 显示“服务器失败” | TCP 53 端口被禁 | 确保防火墙同时放行 TCP 53(用于大查询) |
如果你不是用 BIND,而是dnsmasq、Unbound 或Windows Server 的 DNS 角色,设置思路类似:
- 指定其监听的网络接口
- 设定允许的客户端范围
- 配置要解析的域名和对应 IP
- 发给客户端使用该 DNS
需要更具体的指导吗?你可以告诉我用的是哪种 DNS 软件(BIND、dnsmasq、Windows Server DNS 等)以及运行在什么系统(Ubuntu、CentOS、Windows Server)上,我可以给出针对性的配置示例。
文章摘自:https://idc.huochengrm.cn/dns/25914.html
评论