文章目录
前言
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。
域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。
互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。
域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务器,最终还必须通过IP地址来实现,域名解析就是将域名重新转换为IP地址的过程。一个域名对应一个IP地址,一个IP地址可以对应多个域名;所以多个域名可以同时被解析到一个IP地址。域名解析需要由专门的域名解析服务器(DNS)来完成。
解析过程,比如,一个域名为:abc.com,是想看到这个现HTTP服务,如果要访问网站,就要进行解析,首先在域名注册商那里通过专门的DNS服务器解析到一个WEB服务器的一个固定IP上:211.214.1.XXX,然后,通过WEB服务器来接收这个域名,把abc.com这个域名映射到这台服务器上。那么,输入abc.com这个域名就可以实现访问网站内容了.即实现了域名解析的全过程;
人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。
域名解析协议(DNS)用来把便于人们记忆的主机域名和电子邮件地址映射为计算机易于识别的IP地址。DNS是一种c/s的结构,客户机就是用户用于查找一个名字对应的地址,而服务器通常用于为别人提供查询服务。
一、BIND域名服务基础
DNS服务软件BIND(Berkeley Internet Name Domain,伯克利因特网域名)
服务:可通俗理解为主配置文件+运行脚本
1.1DNS系统的作用
DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或者反向的地址查询服务,及正向解析和反向解析
- 正向解析:根据主机名称(域名,如www.baidu.com)查找对应的IP地址
- 反向解析:(一般维护的时候使用)根据IP地址查找对应的主机域名
例如:www.sina.com.cn.
. | 根 |
---|---|
com.cn | 顶级域名 |
sina | 二级域名 |
www | 主机名 |
域名后缀一般分为国际域名和国内域名。原则上来讲,域名后缀都有严格的定义,但在实际使用时可以不必严格遵守。目前最常见的域名后缀有.com(商业组织)、.org(非营利组织)、.gov(政府部门)、.net(网络服务商)、.edu(教研机构)、.pub(公共大众)、.cn(中国国家顶级域名)等。
1.2DNS解析过程
1.3DNS系统类型
实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为“zone”(区域)
根据地址解析的方向不同,DNS区域相应地分为正向区域(包含域名到IP地址的解析记录,)和反向区域(包含IP地址到域名的解析记录)
根据所管理的区域数据的来源不同,DNS系统可以分为不同的类型。
在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。
常见的几种类型
- 缓存域名服务器
只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。
构建缓存域名服务器时,必须设置根域或者指定其他DNS服务器作为解析来源 - 主域名服务器
维护某一个特定DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器,官方服务器。
构建主域名服务器时,需要自行建立所负责区域的地址数据文件 - 从域名服务器
与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。
构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库
1.4BIND服务
BIND(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。
官方站点: https://www.isc.org/
BIND服务器端程序
- 主要执行程序: /usr/sbin/named
- 默认监听端口: 53
- 主配置文件
/etc/named.conf - 保存DNS解析记录的数据文件位于
/var/named/
BIND服务控制
- systemctl [status|start|stoplrestart] named.service
二、BIND配置
2.1BIND配置文件
主配置文件:/etc/named.conf
......
options {
listen-on port 53 { any; }; #ipv4 监听地址和端口 {一般更改为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; }; #允许使用本DNS服务的网段{一般更改为any}
......
区域配置文件:/etc/named.rfc1912.zones
zone "CSDN.com" IN {
type master; #类型,主域名服务器
file "CSDN.com.zone"; #区域数据文件名
allow-update { none; };
};
区域数据配置文件:/var/named/named.localhost
$TTL 1D #有效解析记录的生存周期
@ IN SOA @ rname.invalid. ( #'SOA标记,域名,管理邮箱
0 ; serial #更新序列号,可以是10位以内的整数'
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过改时间仍无法下载则放弃
3H ) ; minimum #无效解析记录的生存周期
NS @
A 127.0.0.1
AAAA ::1
域名解析记录:
NS域名服务器(Name Server)记录
MX邮件交换(Mail Exchange)记录
A地址(Address) 记录,只用在正向解析区域中
CNAME别名(Canonical Name)记录
2.2DNS正向解析
[root@localhost ~]# yum -y install bind* #安装bind软件包
[root@localhost ~]# rpm -qc bind #查看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
[root@localhost ~]# vi /etc/named.conf #编辑主配置文件
......
options {
listen-on port 53 { any; }; #ipv4 监听地址和端口
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; }; #允许使用本DNS服务的网段
......
[root@localhost ~]# vi /etc/named.rfc1912.zones #编辑区域配置文件
......
zone "CSDN.com" IN { #设置域名
type master;
file "CSDN.com.zone"; #区域数据文件名
allow-update { none; };
};
......
[root@localhost ~]# cd /var/named
[root@localhost named]# cp -p named.localhost CSDN.com.zone #这里复制时一定要注意带上属性一起复制
[root@localhost named]# vi CSDN.com.zone #编辑区域数据配置文件
$TTL 1D
@ IN SOA CSDN.com. admin.CSDN.com. ( #填写地址邮箱
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
IN MX 5 mail.CSDN.com #设置邮件交换记录,权限,域名
mail IN A 192.168.66.66 #设置邮件交换记录的IP地址
www IN A 192.168.179.100 #设置www.CSDN.com的IP地址
CLLT IN CNAME mail #别名解析
* IN A 4.4.4.4 #泛域名解析地址
[root@localhost named]# echo "nameserver 192.168.179.144" > /etc/resolv.conf #设置DNS地址
[root@localhost named]# systemctl start named #启动服务
[root@localhost named]# netstat -ntap #查看DNS服务是否开启
[root@localhost named]# netstat -nuap
[root@localhost named]# host www.CSDN.com #查看www.CSDN.com 的IP地址
www.CSDN.com has address 192.168.179.100
[root@localhost ~]# host mail.CSDN.com #邮件交换记录地址解析
mail.CSDN.com has address 192.168.66.66
[root@localhost ~]# host CLLT.CSDN.com #别名地址解析
CLLT.CSDN.com is an alias for mail.CSDN.com.
mail.CSDN.com has address 192.168.66.66
[root@localhost ~]# host amtp.CSDN.com #泛域名解析
amTP.Csdn.com has address 4.4.4.4
开启一台Windows,配置IP地址,DNS设置为同一地址192.168.179.144
验证与DNS服务器是否连通,域名是否正常解析
再开启一台虚拟机,安装Apache服务,设置网卡信息
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# systemctl restart network
[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables -F
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# netstat -natp
[root@localhost ~]# cd /var/www/html/
[root@localhost ~]# vi index.html #在这里可以填写网站主页信息
<h1>this is CSDN web</h1>
利用刚刚的Windows访问www.CSDN.com
在此次实验中需要注意,启用httpd服务,DNS服务时要关闭虚拟机的防火墙和核心防护功能
2.3DNS反向解析
DNS反向解析:将IP地址转化为域名
[root@localhost named]# vi /etc/named.rfc1912.zones
......
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 {
type master;
file "named.loopback";
allow-update { none; };
};
zone "179.168.192.in-addr.arpa" IN { #定义解析库名(IP反写)
type master;
file "CSDN.com.local"; #定义区域解析库文件名
allow-update { none; };
};
......
[root@localhost etc]# cd /var/named
[root@localhost named]# cp -p CSDN.com.zone CSDN.com.local
[root@localhost named]# vi CSDN.com.local
[root@localhost named]# systemctl restart named
[root@localhost named]# host 192.168.179.100
100.179.168.192.in-addr.arpa domain name pointer www.CSDN.com. #解析成功
2.4DNS主从复制
DNS主从复制,就是将主DNS服务器的解析库复制传送至从DNS服务器,进而从服务器就可以进行正向、反向解析了。从服务器向主服务器查询更新数据,保证数据一致性,此为区域传送。也可以说,DNS区域传送,就是DNS主从复制的实现方法,DNS主从复制是DNS区域传送的表现形式。
主服务器配置
[root@localhost named]# vi /etc/named.rfc1912.zones
......
zone "CSDN.com" IN {
type master;
file "CSDN.com.zone";
allow-transfer { 192.168.179.200; }; #设置从服务器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 {
type master;
file "named.loopback";
allow-update { none; };
};
......
[root@localhost named]# systemctl restart named #配置文件更改重启生效
开启另一台虚拟机用作从服务器
[root@localhost slaves]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost slaves]# systemctl restart network
[root@localhost html]# setenforce 0
[root@localhost html]# iptables -F
[root@localhost html]# yum -y install bind
[root@localhost ~]# vi /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; }; #允许使用本DNS服务的网段更改为any
......
[root@localhost slaves]# vi /etc/named.rfc1912.zones
zone "CSDN.com" IN { #域名
type slave; #类型为从服务器
file "slaves/CSDN.com.zone"; #自动同步区域数据文件名
masters { 192.168.179.144; }; #主服务器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 {
type master;
file "named.loopback";
allow-update { none; };
};
[root@localhost ~]# systemctl start named #启动服务
验证
[root@localhost ~]# echo "nameserver 192.168.179.200" > /etc/resolv.conf #设置自己IP地址解析
[root@localhost ~]# host www.CSDN.com #解析内容与主服务器配置一致
www.CSDN.com has address 192.168.179.100
[root@localhost ~]# host ftp.CSDN.com
ftP.CSdn.com has address 4.4.4.4
[root@localhost ~]# host CLLT.CSDN.com
CLLT.CSDN.com is an alias for mail.CSDN.com.
mail.CSDN.com has address 192.168.66.66
[root@localhost ~]# host mail.CSDN.com
mail.CSDN.com has address 192.168.66.66
同步的时候,如果主服务器区域数据配置文件增加有新的内容,需要先删除从服务器的区域数据文件,这样才能同步数据
2.4DNS分离解析
DNS的分离解析,是指根据不同的客户端提供不同的域名解析记录。来自不同地址的客户机请求解析同一域名时,为其提供不同的解析结果。也就是内外网客户请求访问相同的域名时,能解析出不同的IP地址,实现负载均衡。
2.4.1实验图
2.4.2实验步骤
3台虚拟机,首先我们配置作为DNS服务器的Linux
Linux服务器配置
[root@localhost ~]# yum -y install bind
bind服务安装后,增加一块网卡
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vi ifcfg-ens33
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vi ifcfg-ens36
[root@localhost network-scripts]# systemctl restart network
打开Windows10,配置IP地址、子网掩码、网关、DNS
局域网Linux配置
同样的选择仅主机模式,进入虚拟机后,打开终端
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# systemctl restart network
现在要做的就是开启第一台Linux的路由转发功能,打开第一台Linux
[root@localhost ~]# vi /etc/sysctl.conf
[root@localhost ~]# sysctl -p #开启路由转发功能
net.ipv4.ip_forward = 1
[root@localhost ~]# vi /etc/named.conf
......
options {
listen-on port 53 { 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; };
......
[root@localhost ~]# vim /etc/named.rfc1912.zones
将主配置文件中的根域名解析删除
[root@localhost ~]# vi /etc/named.conf
[root@localhost named]# cd /var/named
[root@localhost named]# cp -p named.localhost csdn.com.lan
[root@localhost named]# vim csdn.com.lan
[root@localhost named]# cp -p csdn.com.lan csdn.com.wan
[root@localhost named]# vim csdn.com.wan
[root@localhost named]# systemctl restart named
这里就全部配置完毕了,进行测试
win10中测试成功
局域网Linux解析成功