DNS域名解析服务

目录

一 BIND域名服务基础

1 DNS系统的作用及类型

2 BIND的安装和控制

(1)安装BIND软件

(2)BIND服务控制

3 BIND服务的配置文件

(1)主配置文件

(2)区域数据配置文件

二 使用BIND构建域名服务器

1 构建缓存域名服务器

(1)建立主配置文件named.conf

(2)确认根域的区域数据文件named.ca

(3)启动named服务

(4)验证缓存域名服务器

2 构建主域名服务器

(1)确认本机的网络地址,主机映射,默认DNS服务器地址

(2)建立主配置文件named.conf

(3)建立正,反向区域数据文件

(4)启动named服务或重载配置

(5)验证主域名服务器

3 构建从域名服务器

(1)确认本机的网络地址,主机映射,默认DNS服务器地址

(2)建立主配置文件named.conf

(3)启动named服务,查看区域数据文件是否下载成功

(4)验证从域名服务器


一 BIND域名服务基础

DNS(Domain Name System,域名系统)是互联网的核心服务之一,其主要作用是将人类可读的域名(如 www.example.com)转换为机器可识别的IP地址(如 192.0.2.1),实现网络资源的定位和访问。

1 DNS系统的作用及类型

(1)DNS系统的作用

  • 域名解析

    • 将域名转换为IP地址(正向解析)或IP地址转换为域名(反向解析),方便用户通过易记的域名访问网络资源。

  • 负载均衡

    • 通过将同一域名解析到多个IP地址(如轮询调度),分散服务器压力,提高服务可用性。

  • 冗余与高可用

    • 支持多台服务器共享同一域名,当某台服务器故障时,DNS可自动切换到其他可用IP。

  • 邮件路由

    • 通过MX(Mail Exchange)记录指定邮件服务器,确保电子邮件正确投递。

  • 网络安全

    • 结合DNSSEC(DNS安全扩展)防止域名劫持和缓存污染攻击。

  • 内容分发

    • CDN(内容分发网络)依赖DNS将用户请求导向最近的服务器节点,加速内容访问。

(2)DNS记录类型

DNS通过不同类型的记录(Resource Records, RR)实现多样化功能,常见类型包括:

记录类型作用示例
A将域名解析为IPv4地址。example.com → 192.0.2.1
AAAA将域名解析为IPv6地址。example.com → 2001:db8::1
CNAME域名别名,指向另一个域名(非IP)。www.example.com → example.com
MX指定邮件服务器地址。example.com → mail.example.com
TXT存储文本信息(如SPF、DKIM等验证数据)。"v=spf1 include:_spf.example.com"
NS指定负责该域名的权威DNS服务器。example.com → ns1.example-dns.com
SOA存储域名的权威信息(如主DNS服务器、序列号、刷新时间等)。用于区域文件配置。
PTR反向解析,将IP地址转换为域名。192.0.2.1 → example.com
SRV定义服务的位置(如VoIP、LDAP等)。_sip._tcp.example.com → 5060

2 BIND的安装和控制

(1)安装BIND软件

BIND(Berkeley Internet Name Domain)是最广泛使用的 DNS 服务器软件,支持 权威 DNS(Authoritative DNS)和 递归解析(Recursive Resolver)。

1.Debian/Ubantu(APT包管理)

# 更新软件包列表
sudo apt update

# 安装 BIND9 及相关工具
sudo apt install bind9 bind9utils bind9-dnsutils -y

2.CentOS(YUM/DNF包管理)

# CentOS 7(使用 yum)
sudo yum install bind bind-utils -y

# CentOS 8/RHEL 8(使用 dnf)
sudo dnf install bind bind-utils -y

3.验证安装

# 检查 BIND 版本
named -v
# 或
bind -v

(2)BIND服务控制

BIND 的服务名为 named(Name Daemon),使用 systemd 进行管理。

1.BIND服务的启动,停止和重启

Debian/Ubantu

# 启动
sudo systemctl start named

# 停止
sudo systemctl stop named

# 重启
sudo systemctl restart named

# 查看状态
sudo systemctl status named

CentOS

# 启动
sudo systemctl start named

# 停止
sudo systemctl stop named

# 重启
sudo systemctl restart named

# 查看状态
sudo systemctl status named

2.设置开机自启

# 启用开机自启
sudo systemctl enable named

# 禁用开机自启
sudo systemctl disable named

3.检查BIND是否正在运行

# 查看进程
ps aux | grep named

# 检查 DNS 解析
dig @127.0.0.1 example.com

3 BIND服务的配置文件

BIND 的主要配置文件位于:

  • 主配置文件

    • Debian/Ubuntu: /etc/bind/named.conf

    • CentOS/RHEL: /etc/named.conf

  • 区域文件(Zone Files):

    • Debian/Ubuntu: /etc/bind/zones/

    • CentOS/RHEL: /var/named/

(1)主配置文件named.conf

(2)区域数据配置文件db.example.com

二 使用BIND构建域名服务器

1 构建缓存域名服务器

缓存域名服务器(Caching DNS Server)不管理任何域,仅缓存DNS查询结果,提高本地网络DNS解析速度。以下是详细搭建步骤:

(1)建立主配置文件named.conf

路径

  • Debian/Ubuntu: /etc/bind/named.conf

  • CentOS/RHEL: /etc/named.conf

配置内容

options {
    directory "/var/cache/bind";  // BIND工作目录
    listen-on port 53 { any; };   // 监听所有IP的53端口
    allow-query { any; };         // 允许所有客户端查询
    recursion yes;                // 启用递归查询(缓存服务器必须开启)
    forwarders {
        8.8.8.8;                 // 上游DNS服务器(如Google DNS)
        1.1.1.1;                 // 或Cloudflare DNS
    };
    forward only;                // 仅使用forwarders,不自行递归
};

// 根域名服务器指向文件(默认已包含)
zone "." {
    type hint;
    file "/etc/bind/named.ca";   // Debian/Ubuntu
    // file "/var/named/named.ca";  // CentOS/RHEL
};

(2)确认根域的区域数据文件named.ca
  • 该文件包含全球根DNS服务器(Root Hints),通常已随BIND安装自动提供。

  • 路径

    • Debian/Ubuntu: /etc/bind/named.ca

    • CentOS/RHEL: /var/named/named.ca

手动更新根服务器列表(可选)

wget https://www.internic.net/domain/named.root -O /etc/bind/named.ca

(3)启动named服务

# 检查配置文件语法
sudo named-checkconf

# 启动服务
sudo systemctl start named

# 设置开机自启
sudo systemctl enable named

# 查看状态
sudo systemctl status named

(4)验证缓存域名服务器
  • 在客户机中将DNS服务器设为该缓存域名服务器
  •  执行nslookup www.google.com命令

方法1:使用 dig 测试解析

dig @127.0.0.1 google.com

预期结果

  • 第一次查询:耗时较长(需向上游DNS请求)。

  • 第二次查询:耗时极短(结果已缓存)。

方法2:查看缓存命中情况

# 查看BIND缓存统计
rndc stats
cat /var/cache/bind/named.stats | grep "cache hits"

方法3:检查监听端口

sudo netstat -tulnp | grep named

2 构建主域名服务器

主域名服务器负责管理特定域名的权威解析(如 example.com),需配置正向解析(域名→IP)和反向解析(IP→域名)。以下是完整搭建流程:

(1)确认本机的网络地址,主机映射,默认DNS服务器地址

① 检查本机IP和主机名

# 查看IP地址
ip a
# 或
hostname -I

# 查看主机名
hostname

要求

  • 服务器需有固定IP(如 192.168.1.10)。

  • 主机名建议设置为FQDN格式(如 ns1.example.com)。

② 配置主机映射

编辑 /etc/hosts,确保本机IP与域名绑定:

192.168.1.10   ns1.example.com ns1

③ 设置默认DNS(可选)

编辑 /etc/resolv.conf,指向自身(仅测试用,生产环境需谨慎):

nameserver 192.168.1.10

(2)建立主配置文件named.conf

路径

  • Debian/Ubuntu: /etc/bind/named.conf

  • CentOS/RHEL: /etc/named.conf

配置内容

(3)建立正,反向区域数据文件

正向区域文件db.example.com

路径/etc/bind/zones/db.example.com

反向区域文件db.192.168.1

路径/etc/bind/zones/db.192.168.1

(4)启动named服务或重载配置

# 检查配置文件语法
sudo named-checkconf
sudo named-checkzone example.com /etc/bind/zones/db.example.com
sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/zones/db.192.168.1

# 启动服务(首次)
sudo systemctl start named

# 重载配置(修改后)
sudo systemctl reload named

# 设置开机自启
sudo systemctl enable named

(5)验证主域名服务器

①测试正向解析

dig @192.168.1.10 ns1.example.com
dig @192.168.1.10 www.example.com

②测试反向解析

dig -x 192.168.1.10 @192.168.1.10

③检查日志

sudo tail -f /var/log/syslog      # Debian/Ubuntu
sudo journalctl -u named -f       # CentOS/RHEL

3 构建从域名服务器

(1)确认本机的网络地址,主机映射,默认DNS服务器地址

①检查本机IP和主机名

# 查看IP地址
ip a
# 或
hostname -I

# 查看主机名
hostname

要求

  • 服务器需有固定IP(如 192.168.1.11)。

  • 主机名建议设置为FQDN格式(如 ns2.example.com)。

②配置主机映射

编辑 /etc/hosts,确保本机IP与域名绑定:

192.168.1.11   ns2.example.com ns2

③设置默认DNS

编辑 /etc/resolv.conf,指向主DNS服务器:

nameserver 192.168.1.10  # 主DNS服务器IP

(2)建立主配置文件named.conf

路径

  • Debian/Ubuntu: /etc/bind/named.conf

  • CentOS/RHEL: /etc/named.conf

配置内容

(3)启动named服务,查看区域数据文件是否下载成功

①启动服务

# 检查配置文件语法
sudo named-checkconf

# 启动服务
sudo systemctl start named

# 设置开机自启
sudo systemctl enable named

②查看区域数据文件是否同步成功

# 检查文件是否生成(路径参考配置中的file)
ls /var/cache/bind/
# 预期输出:db.example.com 和 db.192.168.1

# 查看同步日志
sudo tail -f /var/log/syslog      # Debian/Ubuntu
sudo journalctl -u named -f       # CentOS/RHEL

(4)验证从域名服务器

①测试正向解析

dig @192.168.1.11 www.example.com

②测试反向解析

dig -x 192.168.1.10 @192.168.1.11

③检查区域传输状态

# 查看同步状态
sudo rndc status
# 或
sudo named-checkzone example.com /var/cache/bind/db.example.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值