现在网络大多使用的是TCP/IP模型的架构,计算机用IP地址来区分不同的主机,而通过这种方式来区别主机,对于人的记忆来说未免太过不友好,DNS服务的出现则使人只需要记忆域名即可,简单易记。那么本章就对DNS做一下个人的浅解:
DNS的作用
DNS(区域名称系统):所负责的就是一个包含了IP地址与域名的数据库,通过该数据库可以实现两种功能
- 正向解析:根据域名查找IP地址,这是使用最多的功能
- 反向解析:根据IP地址查找域名,该功能不常用,不过一般都支持。
如果将全世界所有的域名请求都给同一台服务器去做解析,那么该服务器的负荷是相当相当高的,因此在实际应用中,是用分布式的方式,配备很多台dns服务器,每一台服务器管理一个区域,这样实现了负载分担。那么根据每个区域服务器的不同能力,可分为三种类型:
- 缓存服务器:该服务器没有储存IP地址与域名的映射关系的文件,通过转发给其他dns服务器来完成解析,将解析的映射关系缓存到该服务器,当下次请求该域名解析时,便不用转发提高了解析速度,但是该解析不具有权威性。
- 主域名服务器:该服务器储存了所负责区域的所有域名与IP地址的映射关系,是该区域中的权威服务器,该服务器需要管理者创建或配置IP地址与域名的映射关系。
- 从域名服务器:该服务器是作为主域名服务器的备份,当主域名服务器出故障或维护时能够解析其他客户端发来的解析请求,该服务器的IP地址与域名映射关系是从主域名服务器同步过来,因此解析也具有权威性。
小拓展:因为中国网络发展较晚,IPv4的主域名服务器最高的根服务器总共13台,而中国一个都没有,基本都在美国本土。但是IPv6的根域名服务器,中国有4台,一台为主,三台为辅。
在Linux系统中配置DNS服务
在Linux系统中应用最广泛的dns服务工具就是bind,其官网https://www.isc.org/
yum -y install bind* 可以使用yum安装
按照服务器的不同身份需要配置三种服务器:依次来说
(1)最简单的缓存域名服务器:
安装完成后会生成一个名为named的守护程序,其配置文件在/etc/named.conf
该文件可分为全局配置项与区域配置项
- 全局配置项:
标识1:dns服务ipv4的监听端口和监听的IP地址
标识2:ipv6的监听端口及地址
标识3:区域文件的储存目录
标识4:指定缓存数据库的文件
标识5:状态统计文件
标识6:dump安全备份的文件路径
标识7:dump执行递归查询的文件路径
标识8:允许哪些主机进行查询
其中较为重要的时标识1与标识8
标识1:当你要作为缓存域名服务器时就必须监听别人向你发送的请求,因此监听的IP地址就得是自己主机的IP地址,或者至少是其中一个网卡所分配的IP地址。
标识8:允许哪些主机通过你进行域名解析查询,如果不确定主机的话,那就填any,允许任何人进行查询。
到此缓存域名服务器就配置完毕了。可以用以下命令检测该配置文件是否有语法性错误:
named-checkconf /etc/named.conf
(2)主域名服务器
配置该服务器需要防火墙允许通过相关流量,如果不懂配置直接关闭即可,systemctl stop firewalld ,实际应用中需谨慎。
该服务器配置稍微复杂,牵扯到三个文件
1,named.conf——named的主配置文件
2,正向解析区域数据文件——在/var/named/下
3,反向解析区域数据文件——同样在/var/named/下
现在说named.conf
打开后该文件全局配置项同缓存服务器的配置,但需要修改zone部分,也就是区域配置项
zone “mydns.com” IN { 该区域的名称例:mydns.com type master; 作为主域名服务的类型为master
file “mydns.com.zone”; 主域名服务器需要的域名与IP地址映射关系的文件(可自拟名称)
allwo-transfer { 192.168.10.102;}; 主域名服务器允许哪些主机拷贝本机的数据(写IP地址)
};
在写该区域配置项时需要注意结尾的“;”以及每行所代表的含义,根据情况去填写,以上只是例子。
如果需要配置反向解析则于正向解析同样写法,不过略有不同
zone “10.168.192.in-addr.arpa” IN { 该反向解析区域的名称例:10.168.192.in-addr.arpa type master; 作为主域名服务的类型也为master
file “192.168.10.arpa”; 主域名服务器需要的域名与IP地址映射关系的文件(可自拟名称)
allwo-transfer { 192.168.10.102;}; 主域名服务器允许哪些主机拷贝本机的数据(写IP地址)
};
反向区域的名称为IP地址前三段的倒写,以及后缀固定的in-addr.arpa
再说需要正反向的区域数据文件:/var/named下
该目录下存在如下数据:以创建正向区域数据为例
cd /var/namedls chroot data dynamic dyndb-ldap named.ca named.empty named.localhost named.loopback slaves cp -p named.localhost mydns.com.zone 将模板连同属性一块拷贝并重命名,需要于主配置文件中的file一致 vim mydns.com.zone
打开后修改内容如下为例:
$TTL 1D@ IN SOA mydns.com admin.mydns.com. ( 改行规定了区域标识 名称 管理员邮箱
0 ; serial 序列号
1D ; refresh 刷新时间,同步时间
1H ; retry 重试时间,同步失败的尝试时间
1W ; expire 同步尝试的最大时间
3H ) ; minimum 无效解析记录的生存时间
@ IN NS node1.mydns.com. NS类型为域名解析服务器
IN NS node2.mydns.com.
IN MX mail.mydns.com. MX类型为邮件服务器
node1 IN A 192.168.10.101 剩下的就是域名与IP地址的对应关系记录类型为A
node2 IN A 192.168.10.102
mail IN A 192.168.10.103
* IN A 192.168.10.101
反向区域做同样的操作需要注意的时反向解析由IP地址解析为域名,因此记录类型为PTR(指针)如下为例:
$TTL 1D@ IN SOA mydns.com. admin.mydns.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS node1.mydns.com.
IN NS node2.mydns.com.
101 IN PTR node1.mydns.com. 由IP地址转化为域名,IP地址只需写最后一段即可
102 IN PTR node2.mydns.com.
103 IN PTR mali.mydns.com.
因为在主配置文件中已经规定了前三段的IP地址为192.168.10. 所以该项记录只需写最后一段即可,
写完之后可用命令检查语法错误:
[root@localhost named]# named-checkzone mydns.com mydns.com.zone zone mydns.com/IN: loaded serial 0 OK
出现OK字样代表语法没有错误,此时就可以重启named服务,来用别的客户端尝试解析例如node1.mydns.com的域名了可以用nslookup后直接跟域名即可
[root@localhost ~]# nslookup node1.mydns.comServer: 192.168.10.101 Address: 192.168.10.101#53 Name: node1.mydns.com Address: 192.168.10.101
到此主域名服务器的配置就完成了
(3)从域名服务器
该服务并不复杂
同样的需要关闭防火墙,或设置允许相关流量通过;
下载bind服务同主服务器
修改主配置文件/etc/named.conf 在区域配置文件中删除原来的zone修改如下。
zone "mydns.com" IN { 正向解析需要同主域名服务器一致 type slave; 从域名服务器类型为slave file "slaves/zhengbeifen"; 从域名区域数据的保存位置 masters { 192.168.10.101; }; 从那个主域名服务器获取区域数据 }; zone "10.168.192.in-addr.arpa" IN { type slave; file "slaves/fanbeifen"; masters { 192.168.10.101; }; };
之后重启named服务并cd到/var/named/slaves/下验证是否生成。
到此从域名服务器的配置也就完成了。
到此关于dns服务的配置就全部介绍完毕,有任何疑问欢迎评论,看到会解答。