封面
王先生 王先生

wangxiansheng.com

王先生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.102001: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.comwangxiansheng.net 及其他域名都会使用相同结果。

需要注意,DNS 只能修改域名对应的 IP。访问 HTTPS 网站时,目标服务器仍然需要对应域名的有效 SSL 证书。

该方案适合内网测试、设备调试、统一拦截页等受控环境,不建议直接作为公共 DNS 服务。

中国 · 江苏 · 苏州
浏览 38