解析一下?
前言
1. DNS作用
-
庞大的internet当中,数以亿计的服务器,网络,ip,为了更直观的,方便记忆的记住这些对应的网站,如百度,阿里云,等等… 于是就出现了dns域名解析,将ip地址,更改了方式方便我们记忆;
-
注意:TCP负责去连接,udp负责解析
2.DNS类型
-
常见的几种类型
-
缓存域名服务器
①也称为DNS高速缓存服务器
②通过向其他域名服务器查询获得域名—IP地址记录
③将域名查询结果缓存到本地,提高重复查询时的速度
提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。
构建缓存域名服务器时,必须设置根域或者指定其他DNS服务器作为解析来源
-
主域名服务器
①特定DNS区域的权威服务器,具有唯一性
②负责维护该区域内所有域名–IP地址的映射记录
③需要自行建立所负责区域的地址数据文件
维护某一个特定DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器,官方服务器。
构建主域名服务器时,需要自行建立所负责区域的地址数据文件
- 从域名服务器
①也称为辅助域名服务器,是对主域名服务器的热备份
②其维护的域名–IP地址记录来源于主域名服务器
③需要从主域名服务器自动同步区域地址数据库
与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。
构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库
3. 解析方式
- 正向解析:通过域名解析ip地址;
- 反向解析:通过ip地址解析域名;
4. BIND域名服务基础
- DNS服务软件BIND(Berkeley Internet Name Domain,伯克利因特网域名)
- 服务:可通俗理解为主配置文件+运行脚本
5. BIND的安装文件
- BIND不是唯一能够提供域名服务的DNS服务程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux/UNIX主机中
BIND
伯克利Internet域名服务
官方站点:https://www/isc/org/
可以直接使用yum安装
- 相关软件包
软件包 作用
bind
–提供了域名服务的主要程序及相关文件
bind-utils
–提供了对DNS服务器的测试工具,如nslookup等
bind-libs
–提供了bind,bind-utils需要使用的库函数
bind-chroot
–为BIND服务提供一个伪装的根目录(/var/named/chroot)以提高安全性
- BIND服务器端程序
主要执行程序:/usr/sbiin/named
默认监听端口:53
主配置文件: /etc/named.conf
保存DNS解析记录的数据文件位于: /var/named/
6. 三个主要配置文件
查看bind所有配置文件位置
[root@localhost ~]# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
- 主配置文件
/etc/named.conf
设置DNS服务器的全局参数
包括监听地址/端口,数据文件的默认位置等
使用options{…};的配置段
options {
listen-on port 53 {
20.0.0.128; }; //监听本机服务搭建地址
listen-on-v6 port 53 {
::1; };
forwarders {
8.8.8.8; 114.114.114.114; };
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}'
- 区域配置文件
/etc/named.rfc1912.zones
设置本服务器提供域名解析的特定DNS区域
包括域名,服务器角色,数据文件名等
使用zone“区域名”IN{…};的配置段
正向解析
zone "as.com" IN {
type master; //类型,主域名服务器'
file "as.com.zone"; //区域数据文件名
allow-update {
none; }; //允许从域名服务地址
};
分割.........
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
反向解析
zone "0.0.20.in-addr.arpa" IN {
type master;
file "20.0.0.arpa";
allow-update {
none; };
};
- 区域数据配置文件
1.全局TTL配置项及SOA记录
$TTL(Time To Live,生存时间)记录
SOA(Start Of Authority,授权信息开始)记录
分号“;”开始的部分表示注释信息
2.域名解析记录
地址解析记录用来设置DNS区域内的域名,IP地址印社关系,包括正向解析记录和反向解析记录
NS域名服务器(Name Server )记录
MX 邮件交换(Mail Exchange)记录
A 地址 (Address)记录,只用在正向解析区域中
CNAME别名(Canonical Name)记录
- 区域数据配置文件的特殊应用
基于域名解析的负载均衡
同一域名对应到多个IP地址
泛域名解析
找不到精确对应的A记录时,使用“*”进行匹配
www IN A 192.168.100.100 '轮询负载均衡'
www IN A 192.168.100.101
www IN A 192.168.100.102
* IN A 192.168.100.103 '泛域名解析'
正向解析配置数据文件
$TTL 1D
@ IN SOA as.com. admin.as.com. (
0
1D
1H
1W
3H )
NS @
A 20.0.0.17
www IN A 20.0.0.18 #解析www.的地址是20.0.0.18 如:www.as.com
ftp IN A 20.0.0.19
反向配置数据文件:
在反向区域数据文件中,不会用到A地址记录,而是使用PTR指针(point)记录。
$TTL 1D
@ IN SOA isas.com. admin.isas.com. (
1
1D
1H
1W
3H )
@ NS as.com. '当前区域DNS服务器的'
A 20.0.0.100
4 IN PTR www.as.com.
5 IN PTR ftp.myas.com.
6 IN PTR bbs.isas.com.
注意:文件中域名以. 结尾
@ IN NS as.com. '当前区域DNS服务器的'
IN MX 10 mail.as.com.
ns1 IN A 11.22.33.44
www IN A 2.2.2.2
mail IN A 5.5.5.5
ftp IN CNAME www
* IN A 3.3.3.3 '泛域名解析,未匹配到的主机头到到此地址'
1 IN PTR www.as.com. '表示IP地址为20.0.0.18的主机的域名时www.as.com'
5 IN PTR mail.cc.com. '表示IP地址为20.0.0.19的主机的域名时mail.as.com'
7. 对配置文件进行语法检查
- 修改完区域数据文件以后,可以执行named-checkconf命令对该文件进行语法检查
named-checkconf -z [主配置文件]
named-checkconf -z /etc/named.conf
- 若zone文件中没有语法错误,系统将给出“OK”的提示信息
named-checkzone <域名><区域数据文件>
named-checkzone as.com /var/named/as.com.zone
一, BIND构建主从域名服务器
环境准备:
centos7.4系统
三台虚拟机(一个主服务器,一个从服务器,一个客户端)
虚拟机网卡模式是NAT;
主从域名服务器,客户端基础环境配置都需要搞好,(或者做一个搞一个看个人习惯)
注:以下实验是都已经配置好环境下进行的;
防火墙,核心防护…
步骤一:安装环境
- yum 安装所需要的四个包
yum -y install bind bind-utils bind-libs bind-chroot
Bind ///提供了域名服务的主要程序
bind-chroot //为了BIND服务提供一个伪装的目录
bind-utils //提供了对DNS服务器测试的工具“nslookup”
bind-libs //提供了bind,bind-utils需要使用的库函数
步骤二:主域名服务器
- 修改配置文件/etc/named.conf
vi /etc/named.conf
options {
listen-on port 53 {
20.0.0.18; }; //主域名服务ip
listen-on-v6 port 53 {
::1; };
forwarders {
8.8.8.8; 114.114.114.114; };
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; };
2.新增区域配置文件vi /etc/named.rfc1912.zones
vi /etc/named.rfc1912.zones
正向区域:
zone "as.com" IN {
//域名
type master; //类型
file "as.com.zone"; //数据配置文件名称
allow-transfer {
20.0.0.19; }; //进行同步的从服务ip地址
};
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
反向区域:
zone "0.0.20.in-addr.arpa" IN {
type master;
file "20.0.0.arpa";
allow-transfer {
20.0.0.19; };
};
3.做正向解析和反向解析的区域数据配置文件
/var/named/as.com.zone
vi /var/named/bdqn.com.zone
正向解析:
$TTL 1D
@ IN SOA bdqn.com. admin.bdqn.com. (
0
1D
1H
1W
3H )
NS @
A 20.0.0.55
www IN A 20.0.0.66
ftp IN A 20.0.0.88
mail IN CNAME www
/var/named/20.0.0.arpa
4.vi /var/named/20.0.0.arpa
反向解析:
$TTL 1D
@ IN SOA as.com. admin.as.com. (
1
1D
1H
1W
3H )
NS as.com.
A 20.0.0.100
11 IN PTR www.as.com.
22 IN PTR ftp.as.com.
33 IN PTR bbs.as.com.
//配置解释
www.as.com = 20.0.0.11
ftp.as.com = 20.0.0.22
bbs.as.com = 20.0.0.33
注:文件更改完成,更改属主用户授权:
chown named:named /var/named/as.com.zone
chown named:named /var/named/20.0.0.arpa
- 验证配置文件是否正确
named-checkconf -z /etc/named.conf
named-checkzone as.com /var/named/as.com.zone
named-checkzone as.com /var/named/20.0.0.arpa
- 重启服务named
systemctl restart named
步骤三:从域名服务器
同主服务器操作流程基本一样;
安装软件依赖包:
yum -y install bind
- 修改配置文件/etc/named.conf
1.
options {
listen-on port 53 {
20.0.0.19; };
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; };
2.修改配置文件vi /etc/named.rfc1912.zones
正向区域:
zone "as.com" IN {
type slave; //类型从
masters {
20.0.0.18; }; //设置主域名服务器ip地址
file "slaves/as.com.zone"; //指定文件位置,主域名服务器设置完成后,就可以同步自动生成=文件了
};
反向区域:
zone "0.0.20. in-addr.arpa" IN {
type slave; //类型从服务器
masters {
20.0.0.18; }; //设置主域名服务器的IP地址
file "slaves/20.0.0.arpa"; /指定文件位置,主域名服务器设置完成后,就可以同步自动生成=文件了
};
- 重启服务named
systemctl restart named
步骤四:客户端验证
1.vi /etc/resolv.conf配置文件里映射20.0.0.18主服务器地址
[root@localhost ~]# vi /etc/resolv.conf
# Generated by NetworkManager
nameserver 20.0.0.18
- 验证测试:
正向解析:
[root@localhost ~]# nslookup ftp.as.com
Server: 20.0.0.18
Address: 20.0.0.18#53
Name: ftp.as.com
Address: 20.0.0.88
[root@localhost ~]# nslookup www.bdqn.com
Server: 20.0.0.18
Address: 20.0.0.18#53
Name: www.as.com
Address: 20.0.0.66
反向解析:
[root@localhost ~]# nslookup 20.0.0.11
Server: 20.0.0.18
Address: 20.0.0.18#53
11.0.0.20.in-addr.arpa name = www.as.com.
[root@localhost ~]# nslookup 20.0.0.22
Server: 20.0.0.18
Address: 20.0.0.18#53
22.0.0.20.in-addr.arpa name = ftp.as.com.
[root@localhost ~]# nslookup 20.0.0.33
Server: 20.0.0.18
Address: 20.0.0.18#53
33.0.0.20.in-addr.arpa name = bbs.as.com.