前言
DNS是Domain Name System(域名系统)的简称,DNS可以为计算机、服务以及接入互联网或局域网的任何资源提供分层的域名解析功能。DNS提供了很多功能,其中最主要的功能就是进行域名与IP之间的解析。在互联网中标记唯一一台计算机使用的是IP地址,通过合法的IP地址,我们可以与全世界任何一台主机进行通信。然而在当今计算机如此普及的情况下,以人类现有的智慧与记忆力很难将大量的IP地址背诵下来,这时使用域名系统就可以将难以记忆的数字IP地址与容易记忆的域名建议映射关系,用户通过输入域名,计算机会寻找指定的DNS服务器,请求服务器帮助解析该域名对应的IP地址,成功解析后,将获得该域名对应的真实IP地址,然后使用该IP地址与对方通信。
DNS
FQDN是Fully Qualified Domain Name的缩写, 含义是完整的域名. 例如, 一台机器主机名(hostname)是www, 域后缀(domain)是example.com, 那么该主机的FQDN应该是 www.example.com. 其实FQDN最后是以”.”来结尾的, 但是大部分的应用和服务器都允许忽略最后这个点。
一般分为正向解析和反向解析
正向解析:根据域名查找对应的IP地址
反向解析:根据IP地址查找对应的域名
DNS的默认端口号为53, DNS端口分为TCP(53端口用于连接dns)和UDP()
域名体系结构
- 根域:位于树状结构最顶层,用"."表示
- 顶级域:一般代表一种类型的组织机构或国家地区; 如.net(网络供应商)、.com(工商企业)、.org(团体组织)、.edu(教育结构)、.gov(政府门)、.cn(中国国家域名)
- 二级域:用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家部门统一管理
- 子域:二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名
- 主机:主机位于域名空间最下层,就是一台具体的计算机
域名与IP地址之间是多对一的关系,一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址
eg:www.baudu.con. (主机 子域 顶级域 根域)
域名查询方式
- 递归解析
用户访问域名 -->(本地缓存服务器)-->根域服务器-->顶级域服务器-->(二级服务器)-->子域服务器-->通过主机名解析出ip地址
ip地址-->子域服务器-->(二级服务器)-->顶级域服务器-->根域服务器-->(本地缓存服务器)-->用户端
- 迭代解析
用户访问域名--(本地缓存服务器)<--> 根域服务器
用户访问 <--> 顶级域服务器
用户访问 <--> (二级域服务器)
用户访问 <--> 子域服务器
用户访问 <--> 通过主机名解析出ip地址
DNS服务器类型:
- 主域名服务器:负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
- 从域名服务器:当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
- 缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库。它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应。缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
- 转发域名服务器:负责所有非本地域名的本地查询。转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果。
配置实验
修改的配置文件所在路径
- rpm -qc bind @查询bind软件配置文件所在路径
- /etc/named.conf @主配置文件
- /etc/named.rfc1912.zones @区域配置文件
- /var/named/named.localhost @区域数据配置文件
配置正向解析
修改主配置文件
vim /etc/named.conf
options {
listen-on port 53 { 192.168.213.10; };
#listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { ; };
}
修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones
zone "apple.com" IN {
type master;
file "apple.com.zone";
allow-update { none; };
};
配置正向区域数据文件
cd /var/named/
cp -p named.localhost benet.com.zone
vim /var/named/benet.com.zone
$TTL 1D
@ IN SOA benet.com. admin.benet.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS apple.com.
A 192.168.213.10
IN MX 10 mail.benet.com.
www IN A 192.168.213.10
mail IN A 192.168.213.11
ftp IN CNAME www
* IN A 192.168.213.12
启动服务,关闭防火墙
systemctl start named
systemctl stop firewalld
setenforce 0
在客户端的域名解析配置文件中添加DNS服务器地址
vi /etc/resolv.conf @修改完后立即生效
nameserver 192.168.213.10
或
vi /etc/sysconfig/network-scripts/ifcfg-ens33 @修改完后需要重启网卡
DNS1=192.168.213.10
systemctl restart network
测试DNS解析
host www.apple.com
nslookup www.apple.com
vim /etc/named.conf
vim /etc/named.rfc1912.zones
vim /var/named/apple.com.zone
配置反向解析
修改区域配置文件,添加反向区域配置
vim /etc/named.rfc1912.zones @文件里有模版,可复制粘贴后修改
zone "213.168.192.in-addr.arpa" IN { @反向解析的地址倒过来写,代表解析192.168.213段的地址
type master;
file "apple.com.zone.local"; @指定区域数据文件为apple.com.zone.local
allow-update { none; };
};
配置反向区域数据文件
cd /var/named/
cp -p named.localhost apple.com.zone.local
vim /var/named/apple.com.zone.local
$TTL 1D
@ IN SOA apple.com. apple.benet.com. ( #这里的“@”代表192.168.213段地址
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS benet.com.
A 192.168.213.10
100 IN PTR www.apple.com.
11 IN PTR mail.apple.com.
重启服务进行测试
systemctl restart named
host 192.168.213.100
nslookup 192.168.213.11
vim /etc/named.rfc1912.zones
vim /var/named/apple.com.zone.local
配置主从解析服务器
修改主域名服务器的区域配置文件,修改正、反向区域配置
vim /etc/named.rfc1912.zones
zone"apple.com"IN {
type master; @类型为主区域
file "apple.com.zone";
allow-transfer { 192.168.213.20; }; @允许从服务器下载正向区域数据,这里添从服务器的IP地址
};
zone "213.168.192.in-addr.arpa" IN {
type master;
file "apple.com.zone.local";
allow-transfer { 192.168.80.11; };
};
修改从域名服务器的主配置文件
yum install -y bind
vim /etc/named.conf
options {
listen-on port 53 { 192.168.213.20; }; @监听53端口,ip地址使用提供服务的本地IP即可,也可用any代表所有
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; }; @允许使用本DNS解析服务的网段,也可用any代表所有
}
(3)修改从域名服务器区域配置文件,添加正、反区域配置
vim /etc/named.rfc1912.zones
zone "apple.com" IN {
type slave; @类型为从区域
masters { 192.168.213.10; }; @指定主服务器的IP地址
file "slaves/benet.com.zone"; @下载的区域数据文件保存到slaves/目录下
};
zone "213.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.213.10; };
file "slaves/apple.com.zone.local";
};
在客户端的域名解析配置文件中添加从DNS服务器地址
echo "nameserver 192.168.213.10" >> /etc/resolv.conf
@停止主服务器的服务,模拟主服务器故障
systemctl stop named
host 192.168.80.200
nslookup 192.168.80.200
修改主域名服务器的区域配置文件,修改正、反向区域配置
vim /etc/named.rfc1912.zones
修改从域名服务器的主配置文件
vim /etc/named.conf
修改从域名服务器区域配置文件,添加正、反区域配置
vim /etc/named.rfc1912.zones
测试
DNS分离解析
分离解析的域名服务器实际也是主域名服务器,这里主要是指根据不同的客户端提供不同的域名解析记录。比如来自内网和外网的不同网段地址的客户机请求解析同一域名时,为其提供不同的解析结果。
配置网关服务器搭建DNS分离解析 在网关服务器搭建DNS分离解析,使局域网主机解析www.apple.com 为192.168.80.10,外网主机解析 www.apple.com 为12.0.0.12。
为网关服务器添加双网卡并设置称为仅主机模式
安装bind软件包
yum install -y bind
修改主配置文件
vim /etc/named.conf
options {
listen-on port 53 { any; }; @监听本机或者any
#listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; @允许所有主机解析
……
};
include "/etc/named.rfc1912.zones";
修改区域配置文件
vim /etc/named.rfc1912.zones
view "lan" { @定义内网view,view代表容器分割
match-clients { 192.168.80.0/24; }; @匹配内网网段
zone "apple.com" IN { @设置要解析的区域
type master;
file "apple.com.zone.lan"; @数据配置文件
};
zone "." IN { @可将根域配置从主配置文件剪切过来,dd+p
type hint; @hint是根区域类型
file "named.ca";
};
};
view "wan" { @定义外网view
match-clients { any; }; @匹配除了内网网段以外的任意地址
zone "apple.com" IN {
type master;
file " apple.com.zone.wan";
};
};
#注意:一旦启用view,所有的zone必须都在view下,所以要把系统默认的自检用的zone也放在view下或者删除
修改区域数据配置文件
cd /var/named
cp -p named.localhost apple.com.zone.lan
cp -p named.localhost apple.com.zone.wan
vim apple.com.zone.lan
$TTL 1D
@ IN SOA @ admin.apple.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.80.20
www IN A 192.168.80.10 @内网主机通过解析www.benet.com的地址得到192.168.80.200
vim apple.com.zone.wan
$TTL 1D
@ IN SOA apple.com. apple.benet.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS benet.com.
A 12.0.0.254
www IN A 12.0.0.12 @外网主机通过解析www.apple.com的地址得到12.0.0.12
启动服务
systemctl start named
在内、外网客户端的域名解析配置文件中添加DNS服务器地址
echo "nameserver 192.168.80.10" >> /etc/resolv.conf @内网客户端
echo "nameserver 12.0.0.1" >> /etc/resolv.conf @外网客户端
在内、外网客户端上测试
nslookup www.benet.com
vim /etc/named.conf
vim /etc/named.rfc1912.zones
vim apple.com.zone.wan
vim apple.com.zone.lan
解析结果
结束语:dns域名解析服务以及配置是为不同的客户端提供不同的域名解析服务的必不可少的方法。