DNS服务器工作原理及功能
DNS的工作机制其实并不复杂。它通过将网络划分为若干管理区域(每个区域代表一组需要管理的网络资源),并采用分布式的数据查询系统,来完成主机名和IP地址之间的对应解析。当您在浏览器地址栏中输入一个域名时,系统会自动触发一次IP地址的查询请求——该请求会被发送至默认的DNS服务器,服务器从数据库中检索相关记录,找到对应的IP地址后将其返回。浏览器拿到这个IP地址后,便能精确地在互联网中定位到您想要访问的资源。
DNS查询报文中的问题部分
问题部分中包含了以下关键的资源记录类型,每种类型承担不同的解析任务:
- A(数值1):即地址记录。它指定了一个域名所对应的IPv4地址。
- NS(数值2):名称服务器记录。它用来标识某个域区的授权DNS服务器,通常以域名形式呈现。
- CNAME(数值5):规范名称记录。它把一个域名映射到另一个真正的域名上,常被称为“别名”。许多FTP服务器会利用它为系统提供更易记忆的名称。
- PTR(数值12):指针记录。它用于反向查询——即根据IP地址反向查找其对应的域名。查询时,IP地址会被当作 in-addr.arpa 域下的一个域名来处理。
- HINFO(数值13):主机信息记录。它包含两个字符串,分别描述主机的CPU和操作系统信息。
- MX(数值15):邮件交换记录。功能很直观:如果您想给
user@foo.com发邮件,系统会将该邮件投递到relay1.uu.net这样的邮件服务器上。 - AXFR(数值252):区域传输请求,通常用于主DNS服务器与从DNS服务器之间的数据同步。
一、基本DNS配置
以 CentOS 6.6 环境为例。第一步,安装Bind软件包:
yum install bind* # 使用yum安装
第二步,编辑DNS的主配置文件:
vim /etc/named.conf
关键改动有两处:将 listen-on port 53 { any; }; 和 allow-query { any; }; 改为 any,使服务能够监听所有网络接口并响应所有客户端的查询请求。其余选项保持默认即可。
配置完成后,还需编辑区域配置文件 /etc/named.rfc1912.zones:
vim /etc/named.rfc1912.zones
# 添加正向解析区域
zone "wang.com" IN {
type master;
file "wang.zone";
};
# 添加反向解析区域(注意:在中国由于防火墙原因,反向解析通常无法正常使用)
zone "1.168.192.in-addr.arpa" IN {
type master;
file "wang.com.zone";
};
接下来进入区域文件的存放目录 /var/named/,系统已提供模板文件:named.localhost 和 named.loopback。直接复制两份:
cp named.localhost wang.zone
cp named.loopback wang.com.zone
编辑正向解析文件 wang.zone,内容如下:
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.1.21 # DNS服务器IP地址
www 0 A 192.168.1.22 # Web服务器IP地址(第一个)
0 A 192.168.1.11 # Web服务器IP地址(第二个,用于DNS轮询)
ftp A 192.168.1.22 # FTP服务器
mail A 192.168.1.11 # 邮件服务器
web CNAME www # www的别名
@ MX 10 mail # 邮件交换记录,优先级10
编辑反向解析文件 wang.com.zone:
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.1.21
PTR wang.com.
22 PTR www.wang.com. # 注意末尾的“.”不能省略
11 PTR www.wang.com.
22 PTR ftp.wang.com.
22 PTR web.wang.com.
11 PTR mail.wang.com.
最后重启named服务:
service named restart
将测试机器(IP为192.168.1.22和192.168.1.11)的DNS服务器地址修改为192.168.1.21,即可通过域名进行访问。修改DNS配置的常用方式是在 /etc/sysconfig/network-scripts/ifcfg-eth0 和 /etc/resolv.conf 中进行设置。
二、一个网络对应多个域名
让一台DNS服务器同时管理多个域名,操作起来十分简便。只需在 /etc/named.rfc1912.zones 中添加另一个正向解析区域即可:
zone "ning.com" IN {
type master;
file "ning.zone";
};
zone "wang.com" IN {
type master;
file "wang.zone";
};
反向解析区域在国内基本无法正常使用,可以忽略。后续如需增加更多域名,只需重复上述步骤,然后重启named服务即可。
三、Bind视图
视图功能旨在解决一个常见需求:一个网站同时拥有国内和国外的IP地址,那么国内的访问请求由国内的DNS服务器解析,国外的请求由国外的DNS服务器解析,从而提升解析速度。换言之,一个域名可以对应多个不同的IP地址,系统会根据客户端的来源自动选择合适的地址。
在 /etc/named.rfc1912.zones 末尾添加如下配置:
acl "guowai" { 192.168.200.0/24; }; # 名字可自定义
acl "guonei" { 192.168.1.0/24; };
view "guowai" {
match-clients { guowai; }; # 匹配国外网段
zone "." IN { # 根区域
type hint;
file "named.ca";
};
zone "wangning.com" { # 正向解析区域
type master;
file "guowai.zone"; # 需手动创建
};
zone "200.168.192.in-addr" { # 反向解析区域
type master;
file "guowai.com.zone"; # 需手动创建
};
};
view "guonei" {
match-clients { guonei; };
zone "." IN {
type hint;
file "named.ca";
};
zone "wangning.com" IN {
type master;
file "guonei.zone"; # 需手动创建
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "guonei.com.zone"; # 需手动创建
};
};
记得在 /var/named/ 目录下创建对应的区域文件,然后重启named服务即可生效。
四、从DNS服务器(备份服务器)
为避免主服务器宕机导致整个域名解析服务中断,配置一台从服务器是标准做法。在 /etc/named.rfc1912.zones 中配置如下:
zone "wang.com" IN {
type sla ve; # 服务器类型为从
file "sla ves/wang.zone"; # 区域文件会自动存放在sla ves子目录下
masters { 192.168.1.21; }; # 主服务器的IP
};
zone "1.168.192.in-addr.arpa" IN {
type sla ve;
file "sla ves/wang.com.zone";
masters { 192.168.1.21; };
};
重启named服务后,在 /var/named/sla ves/ 目录下会自动生成 wang.zone 和 wang.com.zone 两个区域文件。从服务器会定期与主服务器同步数据,完成备份任务。
