温馨提示×

如何在centos虚拟机中配置DNS服务器

小樊
47
2025-10-06 22:03:47
栏目: 云计算

一、准备工作

  1. 环境要求:确保CentOS虚拟机已联网(建议使用NAT或桥接模式),并能与其他设备(如Windows客户端)互相ping通。
  2. 静态IP设置:为DNS服务器配置静态IP(如192.168.1.100),避免动态IP变动导致解析失败。可通过nmcli或编辑网络配置文件(如/etc/sysconfig/network-scripts/ifcfg-ens33)设置:
    nmcli con mod ens33 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.100
    nmcli con up ens33
    
  3. 域名规划:定义要解析的域名(如example.com)及对应的主机记录(如www.example.com指向192.168.1.101mail.example.com指向192.168.1.102)。

二、安装Bind软件包

Bind是CentOS下常用的DNS服务器软件,通过以下命令安装核心组件及工具:

yum install -y bind bind-utils
  • bind:DNS服务器主程序;
  • bind-utils:包含nslookupdig等DNS测试工具。

三、配置主DNS服务器

1. 修改全局配置文件named.conf

编辑/etc/named.conf,调整以下关键参数:

vim /etc/named.conf
  • 允许本地网络查询:找到listen-on port 53allow-query行,修改为:
    listen-on port 53 { any; };  # 监听所有IP的53端口
    allow-query     { any; };  # 允许所有客户端查询
    
  • 启用IPv6(可选):若需支持IPv6,取消listen-on-v6行的注释并修改为any
  • 关闭SELinux对DNS的限制(可选但推荐):
    setenforce 0  # 临时关闭
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  # 永久关闭
    

2. 配置正向区域文件

正向解析将域名映射到IP地址。

  • 创建区域配置:编辑/etc/named.rfc1912.zones(或CentOS 7的/etc/named.confzone部分),添加:
    zone "example.com" IN {
        type master;          # 主DNS服务器
        file "example.com.zone";  # 区域文件路径
        allow-update { none; };   # 禁止动态更新
    };
    
  • 创建区域文件:复制模板文件(named.localhost)并修改:
    cd /var/named
    cp -p named.localhost example.com.zone
    vim example.com.zone
    
    修改内容示例如下(注意域名末尾必须有.,表示绝对域名;IP末尾无.):
    $TTL 86400
    @       IN SOA  ns1.example.com. admin.example.com. (
                    2025100601 ; Serial(序列号,每次修改需递增)
                    3600       ; Refresh(刷新时间,单位:秒)
                    1800       ; Retry(重试时间)
                    1209600    ; Expire(过期时间)
                    86400 )    ; Minimum TTL(最小TTL)
    @       IN NS   ns1.example.com.  ; 域名服务器记录
    ns1     IN A    192.168.1.100     ; NS记录对应的IP
    www     IN A    192.168.1.101     ; www.example.com解析到192.168.1.101
    mail    IN A    192.168.1.102     ; mail.example.com解析到192.168.1.102
    

3. 配置反向区域文件(可选)

反向解析将IP地址映射到域名,用于邮件服务器等场景。

  • 创建反向区域配置:在/etc/named.rfc1912.zones中添加:
    zone "1.168.192.in-addr.arpa" IN {  # 反向区域名格式:反向IP段.in-addr.arpa
        type master;
        file "1.168.192.zone";
        allow-update { none; };
    };
    
  • 创建反向区域文件:复制模板并修改:
    cp -p named.loopback 1.168.192.zone
    vim 1.168.192.zone
    
    修改内容示例如下:
    $TTL 86400
    @       IN SOA  ns1.example.com. admin.example.com. (
                    2025100601 ; Serial
                    3600       ; Refresh
                    1800       ; Retry
                    1209600    ; Expire
                    86400 )    ; Minimum TTL
    @       IN NS   ns1.example.com.
    100     IN PTR  ns1.example.com.  ; 192.168.1.100反向解析到ns1.example.com
    101     IN PTR  www.example.com.  ; 192.168.1.101反向解析到www.example.com
    102     IN PTR  mail.example.com. ; 192.168.1.102反向解析到mail.example.com
    

4. 检查配置文件语法

在重启服务前,务必检查配置文件是否有语法错误:

named-checkconf         # 检查主配置文件
named-checkzone example.com /var/named/example.com.zone  # 检查正向区域文件
named-checkzone 1.168.192.in-addr.arpa /var/named/1.168.192.zone  # 检查反向区域文件

若输出无错误,则可继续。

四、启动DNS服务

systemctl start named     # 启动服务
systemctl enable named    # 设置开机自启
systemctl status named    # 查看服务状态(确保为“active (running)”)

五、配置客户端

  1. 设置DNS服务器IP:在客户端(如Windows)的网络设置中,将DNS服务器地址改为DNS服务器的IP(如192.168.1.100)。
  2. 测试解析:使用nslookup工具验证:
    nslookup www.example.com 192.168.1.100  # 正向解析
    nslookup 192.168.1.101 192.168.1.100  # 反向解析
    
    若返回对应的域名或IP,则说明配置成功。

六、常见问题排查

  1. 端口冲突:确保53端口未被占用(netstat -tulnp | grep 53),若有冲突,停止占用进程或修改DNS端口(不推荐)。
  2. SELinux问题:若开启SELinux,需调整策略:
    setsebool -P named_write_master_zones 1  # 允许named写入区域文件
    
  3. 防火墙问题:放行DNS服务(UDP 53端口):
    firewall-cmd --permanent --add-service=dns
    firewall-cmd --reload
    

0