centos

CentOS域名DNS设置指南

小樊
70
2025-09-24 03:58:24
栏目: 云计算

CentOS域名DNS设置指南

一、准备工作

在开始配置前,请确保:

  1. 已获取域名的管理权限(如DNS解析配置权限);
  2. CentOS系统已联网,且具备root或sudo权限;
  3. 记录域名对应的DNS服务器IP(本机IP,如192.168.1.100)及Web服务器IP(如192.168.1.101)。

二、安装BIND DNS服务器

BIND(Berkeley Internet Name Domain)是CentOS默认的DNS服务器软件,通过以下命令安装:

sudo yum install bind bind-utils -y

三、配置BIND主配置文件

主配置文件/etc/named.conf定义了DNS服务器的全局参数和区域规则。使用文本编辑器打开:

sudo vi /etc/named.conf

修改以下关键参数:

options {
    listen-on port 53 { any; };                # 监听所有IPv4地址的53端口
    listen-on-v6 port 53 { none; };            # 不监听IPv6(可选)
    directory       "/var/named";              # 区域文件默认存储路径
    allow-query     { any; };                  # 允许所有客户端查询(生产环境建议限制为内网IP)
    recursion yes;                             # 允许递归查询(客户端请求未知记录时,服务器代为查询)
};

添加域名区域配置(以example.com为例):

zone "example.com" IN {
    type master;                               # 区域类型:master(主服务器)
    file "/var/named/example.com.zone";        # 区域数据文件路径
    allow-update { none; };                    # 禁止动态更新(防止未经授权的修改)
};

保存并退出(:wq)。

四、创建区域数据文件

区域文件存储了域名的具体解析记录(如A记录、NS记录)。根据named.conf中的配置,创建/var/named/example.com.zone

sudo vi /var/named/example.com.zone

添加以下内容(按需修改):

$TTL 86400                                   # 默认TTL(Time To Live),单位:秒(1天)
@       IN      SOA     ns1.example.com. admin.example.com. (  # SOA记录(Start of Authority)
    2025092401 ; Serial                      # 序列号(每次修改区域文件需递增,如日期+序号)
    3600 ; Refresh                           # 刷新时间(从服务器向主服务器同步记录的间隔)
    1800 ; Retry                             # 重试时间(从服务器同步失败后的重试间隔)
    604800 ; Expire                          # 过期时间(从服务器超过刷新时间未同步,则认为数据过期)
    86400 ; Minimum TTL                      # 最小TTL(缓存记录的最长时间)
)
@       IN      NS      ns1.example.com.     # NS记录(Name Server,指定域名解析服务器)
ns1     IN      A       192.168.1.100        # A记录(域名指向IPv4地址)
www     IN      A       192.168.1.101        # A记录(www子域名指向Web服务器IP)
mail    IN      A       192.168.1.102        # A记录(mail子域名指向邮件服务器IP,可选)

五、启动并启用BIND服务

配置完成后,启动BIND服务并设置开机自启动:

sudo systemctl start named                   # 启动named服务
sudo systemctl enable named                  # 设置开机自启动

检查服务状态(确保无报错):

sudo systemctl status named

若状态显示active (running),则表示服务启动成功。

六、配置防火墙允许DNS流量

CentOS默认使用firewalld作为防火墙,需允许DNS流量(UDP/TCP 53端口):

sudo firewall-cmd --permanent --add-service=dns  # 永久添加DNS服务规则
sudo firewall-cmd --reload                       # 重新加载防火墙配置

验证规则是否生效:

sudo firewall-cmd --list-services

输出应包含dns

七、配置客户端DNS

在需要解析该域名的客户端设备上,修改网络配置文件(以以太网为例):

sudo vi /etc/resolv.conf

添加DNS服务器IP(本机IP):

nameserver 192.168.1.100

保存后,客户端将优先使用该DNS服务器解析域名。

八、测试DNS解析

使用nslookupdig命令验证解析是否正确:

nslookup example.com 192.168.1.100           # 指定DNS服务器查询
dig @192.168.1.100 example.com A             # 查询A记录
dig @192.168.1.100 www.example.com A         # 查询www子域名A记录

若返回结果中Answer Section包含正确的IP地址(如192.168.1.101),则表示解析成功。

注意事项

  1. 序列号递增:每次修改区域文件后,必须递增Serial字段(如20250924012025092402),否则从服务器无法同步更新;
  2. SELinux配置:若启用了SELinux,需允许BIND写入区域文件:
    sudo setsebool -P named_writeable_zone_files 1
    
  3. 生产环境优化
    • 限制allow-query为内网IP(如192.168.1.0/24),避免暴露给公网;
    • 配置forwarders(转发器)指向公共DNS服务器(如8.8.8.8),提高外部域名解析效率;
    • 使用rndc(远程名称守护进程控制)工具管理BIND服务(如rndc reload example.com重新加载区域文件)。

0
看了该问题的人还看了