王先生V
CentOS 使用 BIND 自建 DNS,将任意域名解析到固定 IP
本文以 CentOS 为例,通过 BIND 搭建自定义 DNS。客户端使用该 DNS 后,查询任意域名都会返回指定的 IPv4 和 IPv6 地址。
例如查询:
wangxiansheng.com
www.wangxiansheng.com
test.wangxiansheng.com
wangxiansheng.net
统一返回:
IPv4:192.0.2.10
IPv6:2001:db8::10
192.0.2.10和2001:db8::10是文档示例地址,部署时必须替换为真实 IP。
1. 安装 BIND
CentOS 7:
yum install -y bind bind-utils
CentOS Stream、Rocky Linux 或 AlmaLinux:
dnf install -y bind bind-utils
2. 修改 BIND 配置
备份原配置:
cp /etc/named.conf /etc/named.conf.bak
编辑配置:
vi /etc/named.conf
写入:
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
allow-query { any; };
recursion no;
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
zone "." IN {
type master;
file "wangxiansheng.zone";
allow-update { none; };
};
这里将本机设置为根区域权威 DNS,不再向外部 DNS 递归查询。
3. 创建区域文件
编辑区域文件:
vi /var/named/wangxiansheng.zone
写入:
$TTL 60
@ IN SOA ns. admin.wangxiansheng.com. (
2026072601
3600
600
86400
60
)
IN NS ns.
ns IN A 192.0.2.10
ns IN AAAA 2001:db8::10
@ IN A 192.0.2.10
@ IN AAAA 2001:db8::10
* IN A 192.0.2.10
* IN AAAA 2001:db8::10
请替换以下示例地址:
192.0.2.10
2001:db8::10
其中:
A记录返回固定 IPv4;AAAA记录返回固定 IPv6;*是通配记录,用于匹配其他任意域名。
BIND 使用 AAAA 记录保存完整 IPv6 地址,其作用与 IPv4 的 A 记录相对应。
4. 检查配置
设置权限:
chown root:named /var/named/wangxiansheng.zone
chmod 640 /var/named/wangxiansheng.zone
restorecon -v /var/named/wangxiansheng.zone
检查主配置:
named-checkconf /etc/named.conf
没有输出表示配置语法正常。
检查区域文件:
named-checkzone . /var/named/wangxiansheng.zone
正常应显示:
zone ./IN: loaded serial 2026072601
OK
Red Hat 官方文档同样建议在启动 BIND 前使用 named-checkconf 检查配置。
5. 启动服务
systemctl enable --now named
systemctl restart named
systemctl status named
检查端口:
ss -lntup | grep :53
6. 开放防火墙
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
如果使用云服务器,还需要在安全组中放行:
TCP 53
UDP 53
Red Hat 官方 BIND 部署说明也使用 firewall-cmd --permanent --add-service=dns 开放 DNS 服务。
7. 测试 IPv4 解析
dig @127.0.0.1 wangxiansheng.com A +short
dig @127.0.0.1 www.wangxiansheng.com A +short
dig @127.0.0.1 test.wangxiansheng.com A +short
dig @127.0.0.1 wangxiansheng.net A +short
均应返回:
192.0.2.10
8. 测试 IPv6 解析
dig @127.0.0.1 wangxiansheng.com AAAA +short
dig @127.0.0.1 www.wangxiansheng.com AAAA +short
dig @127.0.0.1 test.wangxiansheng.com AAAA +short
dig @127.0.0.1 wangxiansheng.net AAAA +short
均应返回:
2001:db8::10
使用说明
客户端需要将 DNS 地址设置为这台 BIND 服务器的实际 IP。
设置后:
- 查询 IPv4
A记录,返回指定 IPv4; - 查询 IPv6
AAAA记录,返回指定 IPv6; wangxiansheng.com、wangxiansheng.net及其他域名都会使用相同结果。
需要注意,DNS 只能修改域名对应的 IP。访问 HTTPS 网站时,目标服务器仍然需要对应域名的有效 SSL 证书。
该方案适合内网测试、设备调试、统一拦截页等受控环境,不建议直接作为公共 DNS 服务。
