温馨提示×

centos域名如何进行DNS设置

小樊
45
2025-11-01 11:39:37
栏目: 云计算

CentOS域名DNS设置指南(以BIND为例)

BIND(Berkeley Internet Name Domain)是CentOS系统中最常用的DNS服务器软件,以下是从安装到验证的全流程配置步骤,覆盖正向解析(域名→IP)的核心场景:

1. 安装BIND及相关工具

通过yum包管理器安装BIND主程序、工具包及安全模块(bind-chroot用于增强安全性):

sudo yum install bind bind-utils bind-chroot -y

安装完成后,BIND服务会自动安装至/etc/named目录,核心配置文件为/etc/named.conf

2. 配置BIND主配置文件

编辑/etc/named.conf,修改全局参数以允许DNS服务监听所有IP地址(any)并接受所有客户端的查询请求(any):

sudo vi /etc/named.conf

options块中添加或修改以下内容:

options {
    listen-on port 53 { any; };                # 监听所有IPv4地址的53端口
    listen-on-v6 port 53 { any; };             # 监听所有IPv6地址的53端口(可选)
    directory "/var/named";                    # 区域文件的存储目录
    allow-query { any; };                      # 允许所有客户端查询
    recursion yes;                             # 允许递归查询(客户端请求时,服务器会帮其查询其他DNS服务器)
};

注意:若需限制查询范围,可将allow-query改为具体网段(如{ 192.168.1.0/24; })。

3. 添加正向解析区域

/etc/named.conf中定义正向解析区域(以example.com为例),指定区域名称、类型(master表示主服务器)及区域文件路径:

sudo vi /etc/named.conf

在文件末尾添加以下内容:

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

说明:区域文件路径需确保named用户有读写权限(后续创建文件时会调整)。

4. 创建正向区域文件

进入/var/named目录,复制模板文件named.localhost生成example.com.zone(模板文件包含基础结构,避免手动编写错误):

cd /var/named
sudo cp -a named.localhost example.com.zone
sudo chown named:named example.com.zone      # 修改文件所属用户组为named(BIND服务运行用户)
sudo chmod 640 example.com.zone              # 设置文件权限(named用户可读写,组用户可读)

编辑example.com.zone,添加DNS记录(以下为示例):

sudo vi example.com.zone
$TTL 86400                                   # 默认TTL(Time To Live,缓存时间,单位:秒)
@       IN      SOA     ns1.example.com. admin.example.com. (     # SOA记录(Start of Authority)
                        2025110101;          # 序列号(每次修改区域文件需递增,如2025110102)
                        3600;                # 刷新时间(辅助服务器向主服务器同步的间隔,单位:秒)
                        1800;                # 重试时间(辅助服务器同步失败后的重试间隔,单位:秒)
                        604800;                # 过期时间(辅助服务器在未收到同步时的有效时间,单位:秒)
                        86400; )               # 负缓存时间(客户端查询失败后的缓存时间,单位:秒)
@       IN      NS      ns1.example.com.     # NS记录(Name Server,指定域名服务器)
@       IN      A       192.168.1.100        # A记录(域名→IPv4地址)
ns1     IN      A       192.168.1.100        # 域名服务器自身的A记录
www     IN      A       192.168.1.101        # www子域名的A记录

说明

  • @表示当前区域(example.com);
  • SOA记录中的admin.example.com.需替换为管理员邮箱(需将@替换为.);
  • 序列号每次修改区域文件后需递增(如从2025110101改为2025110102),否则辅助服务器不会同步。

5. 启动并启用BIND服务

启动BIND服务并设置为开机自启:

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

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

sudo systemctl status named

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

6. 配置防火墙允许DNS流量

DNS服务使用UDP和TCP的53端口,需通过防火墙放行:

sudo firewall-cmd --permanent --add-service=dns      # 永久放行DNS服务(包含53端口)
sudo firewall-cmd --reload                           # 重新加载防火墙规则

或手动指定端口:

sudo firewall-cmd --permanent --add-port=53/tcp      # 放行TCP 53端口
sudo firewall-cmd --permanent --add-port=53/udp      # 放行UDP 53端口
sudo firewall-cmd --reload                           # 重新加载防火墙规则

7. 验证DNS解析是否生效

使用nslookupdig命令测试域名解析结果(在CentOS服务器本地或客户端测试均可):

nslookup example.com 127.0.0.1                 # 指定DNS服务器为本地(127.0.0.1)
dig @127.0.0.1 example.com A                   # 使用dig命令查询A记录

若输出结果中包含example.com对应的IP地址(如192.168.1.100),则表示DNS配置生效。

8. (可选)配置客户端DNS解析

若需让其他设备通过该DNS服务器解析域名,需在客户端设备的/etc/resolv.conf文件中添加DNS服务器IP地址:

sudo vi /etc/resolv.conf

添加以下内容(将192.168.1.100替换为DNS服务器的实际IP):

nameserver 192.168.1.100

保存后,客户端即可通过该DNS服务器解析example.com域名。

注意事项

  • 若需配置反向解析(IP→域名),需在/etc/named.conf中添加反向区域(如220.168.192.in-addr.arpa),并创建对应的反向区域文件(如named.220.168.192.zones);
  • 生产环境中,建议关闭递归查询(recursion no)并配置访问控制列表(allow-query限制为信任网段),提升DNS服务器安全性。

0