DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
定义
DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定只对应一个域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。在Internet上域名与IP地址之间是一对一(或者多对一)的,也可采用DNS轮询实现一对多,域名虽然便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。DNS 命名用于 Internet的 TCP/IP网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。
在IPV4中IP是由32位二进制数组成的,将这32位二进制数分成4组每组8个二进制数,将这8个二进制数转化成十进制数,就是我们看到的IP地址,其范围是在0~255之间。因为,8个二进制数转化为十进制数的最大范围就是0~255。现在已开始试运行、将来必将代替IPv4的IPV6中,将以128位二进制数表示一个IP地址。
大家都知道,当我们在上网的时候,通常输入的是网址,其实这就是一个域名,而我们计算机网络上的计算机彼此之间只能用IP地址才能相互识别。再如,我们去一WEB服务器中请求一WEB页面,我们可以在浏览器中输入网址或者是相应的IP地址,例如我们要上新浪网,我们可以在IE的地址栏中输入网址,也可输入IP地址,但是这样子的IP地址我们记不住或说是很难记住,所以有了域名的说法,这样的域名会让我们容易的记住。
DNS:Domain Name System 域名管理系统域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个唯一的IP地址,这一命名的方法或这样管理域名的系统叫做域名管理系统。
申请了DNS后,客户可以自己为域名作解析,或增设子域名。客户申请DNS时,建议客户一次性申请两个。
DNS服务器在域名解析过程中的查询顺序为:本地缓存记录、区域记录、转发域名服务器、根域名服务器。
历史
DNS最早于1983年由保罗·莫卡派乔斯(Paul Mockapetris)发明;原始的技术规范在882号因特网标准草案(RFC 882)中发布。1987年发布的第1034和1035号草案修正了DNS技术规范,并废除了之前的第882
DNS(11张)和883号草案。在此之后对因特网标准草案的修改基本上没有涉及到DNS技术规范部分的改动。
早期的域名必须以英文句号“.”结尾 ,这样DNS才能够进行域名解析。如今DNS服务器已经可以自动补上结尾的句号。
当前,对于域名长度的限制是63个字符,其中不包括www.和.com或者其他的扩展名。域名同时也仅限于ASCII字符的一个子集,这使得很多其他语言无法正确表示他们的名字和单词。基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集,这已经通过了验证并被一些注册机构作为一种变通的方法所采纳。
位置
提供DNS的是计算机,是安装了DNS服务器端软件的计算机。服务器端软件既可以是基于类Unix操作系统,也可以是基于Windows操作系统的。装好DNS服务器软件后,您就可以在您指定的位置创建区域文件了,所谓区域文件就是包含了此域中名字到IP地址解析记录的一个文件(如文件名可能是这个文件的内容是这样的:
primary name server = dns2(主服务器的主机名是 )
serial = 2007042913 (当前序列号是2007042913。这个序列号的作用是当辅域名服务器来copy时候这个文件时,如果号码增加了就copy)
refresh = 10800 (3 hours) (辅域名服务器每隔3小时查询一个主服务器)
retry = 3600 (1 hour) (当辅域名服务试图在主服务器上查询更时,而连接失败了,辅域名服务器每隔1小时访问主域名服务器)
expire = 604800 (7 days) (辅域名服务器在向主服务更新失败后,7天后删除中的记录。)
default TTL = 3600 (1 hour) (缓存服务器保存记录的时间是1小时。也就是告诉202.96.209.5保存域的解析记录为1小时)
方法
无论您是通过linux还是windows搭建dns服务器,原理都是一致的。
您可以把DNS服务器配置成以下3类之一:
1.主DNS服务器。
2.辅DNS服务器。
3.缓存DNS服务器。
国际域名的DNS必须在国际域名注册商处注册,国内域名的DNS必须在CNNIC注册,注册支持解析英文域名和中文域名的dns要分别注册:
(1)步骤:选择作为DNS后缀的域名---创建dns服务器---选择是在国际注册还是国内注册-申请--交付费用
(2)费用:约75元/个(一次性)
(3)条件:如果注册国际DNS服务器的,dns服务器的名称必须是在具有条件的公司注册的国际英文域名才能注册,有独立IP地址,DNS服务器域名前的前缀最好是dns.、ns.等
DNS服务器
现在只要在域名注册商或服务商注册域名,DNS都是免费。
(1)条件:要更改为合法的DNS。
如果要查询DNS是否为合法的DNS,请点击:DNS查询界面
输入DNS服务器的名称或者IP地址,选中第三个选项Nameserver,查询如果查询出有DNS注册的信息,如注册商,名称对应的IP地址,则这个DNS是合法的。
(2)修改方法:通过具有条件的公司注册的国际域名变更DNS:用户可通过和提供服务的该公司进行协商(大致步骤为:提出申请并提交相关材料后该业务公司会在48小时左右完成变更)。
国际英文域名、国内英文域名可以修改DNS,这项服务是免费的。
使用免费的DNS
国内外有不少提供免费DNS服务的提供商,其中国内著名的有IIDNS,DNSPod和OpenDns等解析故障。
在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS解析出现故障造成的。这个现象发生的机率比较大,所以本文将从零起步教给各位读者一些基本的排除DNS解析故障的方法。
什么是DNS解析故障?
一般来说像我们访问的地址都叫做域名,而众所周知网络中的任何一个主机都是IP地址来标识的,也就是说只有知道了这个站点的IP地址才能够成功实现访问操作。
不过由于IP地址信息不太好记忆,所以网络中出现了域名这个名字,在访问时我们只需要输入这个好记忆的域名即可,网络中会存在着自动将相应的域名解析成IP地址的服务器,这就是DNS服务器。能够实现DNS解析功能的机器可以是自己的计算机也可以是网络中的一台计算机,不过当DNS解析出现错误,例如把一个域名解析成一个错误的IP地址,或者根本不知道某个域名对应的IP地址是什么时,我们就无法通过域名访问相应的站点了,这就是DNS解析故障。
出现DNS解析故障最大的症状就是访问站点对应的IP地址没有问题,然而访问他的域名就会出现错误。
当我们的计算机出现了DNS解析故障后不要着急,解决的方法也很简单。
(1)用nslookup(网路查询)来判断是否真的是DNS解析故障:
要想百分之百判断是否为DNS解析故障就需要通过系统自带的NSLOOKUP来解决了。
第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。
第二步:输入nslookup命令后回车,将进入DNS解析查询界面。
第三步:命令行窗口中会显示出当前系统所使用的DNS服务器地址,例如笔者的DNS服务器IP为202.106.0.20。
第四步:接下来输入你无法访问的站点对应的域名。假如不能访问的话,那么DNS解析应该是不能够正常进行的。我们会收到DNS request timed out,timeout was 2 seconds的提示信息。这说明我们的计算机确实出现了DNS解析故障。
小提示:如果DNS解析正常的话,会反馈回正确的IP地址。
(2)查询DNS服务器工作是否正常:
这时候我们就要看看自己计算机使用的DNS地址是多少了,并且查询他的运行情况。
第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。
第二步:输入ipconfig/all命令来查询网络参数。
第三步:在ipconfig /all显示信息中我们能够看到一个地方写着DNS SERVERS,这个就是我们的DNS服务器地址。例如笔者的是202.106.0.20和202.106.46.151。从这个地址可以看出是个外网地址,如果使用外网DNS出现解析错误时,我们可以更换一个其他的DNS服务器地址即可解决问题。
第四步:如果在DNS服务器处显示的是自己公司的内部网络地址,那么说明你们公司的DNS解析工作是交给公司内部的DNS服务器来完成的,这时我们需要检查这个DNS服务器,在DNS服务器上进行nslookup操作看是否可以正常解析。解决DNS服务器上的DNS服务故障,一般来说问题也能够解决。
(3)清除DNS缓存信息法:
当计算机对域名访问时并不是每次访问都需要向DNS服务器寻求帮助的,一般来说当解析工作完成一次后,该解析条目会保存在计算机的DNS缓存列表中,如果这时DNS解析出现更改变动的话,由于DNS缓存列表信息没有改变,在计算机对该域名访问时仍然不会连接DNS服务器获取最新解析信息,会根据自己计算机上保存的缓存对应关系来解析,这样就会出现DNS解析故障。这时我们应该通过清除DNS缓存的命令来解决故障。
第一步:通过“开始->运行->输入CMD”进入命令行模式。
第二步:在命令行模式中我们可以看到在ipconfig /?中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令。
第三步:执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被成功清除。
第四步:接下来我们再访问域名时,就会到DNS服务器上获取最新解析地址,再也不会出现因为以前的缓存造成解析错误故障了。
(4)修改HOSTS(主机)文件法:
修改HOSTS法就是把HOSTS文件中的DNS解析对应关系进行修改,从而实现正确解析的目的。因为在本地计算机访问某域名时会首先查看本地系统中的HOSTS文件,HOSTS文件中的解析关系优先级大于DNS服务器上的解析关系。
这样当我们希望把某个域名与某IP地址绑定的话,就可以通过在HOSTS文件中添加解析条目来实现。
第一步:通过“开始->搜索”,然后查找名叫hosts的文件。
第二步:当然对于已经知道他的路径的读者可以直接进入c:\windows\system32\drivers\etc目录中找到HOSTS文件。如果你的系统是windows 2000,那么应该到c:\winnt\system32\drivers\etc目录中寻找。
第三步:双击HOSTS文件,然后选择用“记事本”程序将其打开。
第四步:之后我们就会看到HOSTS文件的所有内容了,默认情况下只有一行内容“127.0.0.1 localhost”。(其他前面带有#的行都不是真正的内容,只是帮助信息而已)
第五步:将你希望进行DNS解析的条目添加到HOSTS文件中,具体格式是先写该域名对应的IP地址,然后空格接域名信息。
第六步:设置完毕后我们访问网址时就会自动根据是在内网还是外网来解析了。
DNS查询
DNS查询可以有两种解释,一种是指客户端查询指定DNS服务器上的资源记录(如A记录),另一种是指查询FQDN名的解析过程。
一、查询DNS服务器上的资源记录
您可以在Windows平台下,使用命令行工具,输入nslookup,返回的结果包括域名对应的IP地址(A记录)、别名(CNAME记录)等。除了以上方法外,还可以通过一些DNS查询站点如国外的国内的 查询域名的DNS信息。
二、FQDN名的解析过程查询
若想跟踪一个FQDN名的解析过程,在Linux Shell下输入dig www +trace,返回的结果包括从跟域开始的递归或迭代过程,一直到权威域名服务器。
检测系统是否安装了DNS服务器对应的软件包,此处已经安装了。如果没有安装,需要进行安装(linux下DNS服务器默认使用bind软件)。
rpm –qa | grep bind
DNS所需要的软件包,依赖关系很复杂,所以我们使用yum进行安装。
如图所示:
Bind的配置文件默认是没有的,需要自己手动写,但是很多,容易写错,所以我们安装模板文件,然后用来修改。由于安装了chroot环境,所以我们的/etc/named.conf应该在/var/named/chroot/etc/目录。切换到/var/named/chroot/etc下查看,如图所示:
ll查看/var/named/chroot/var/named下的内容,如图所示:
没有named.conf,所以我们要把named.caching-name.conf文件copy一份成named.conf。 cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf如图所示:
编辑named.conf这个文件,把文件里面多余的东西删除,只剩下如图所示的内容,保存退出,之后我们自己来写:
先检查你主机的名字,使用hostname。如图所示:
注:linux的主机名要是FQDN的样式,把你们自己的主机名字改改,不要最后的那个,这个很重要的。
修改主机名hostname redhat.cloud.com。如图所示:
修改hosts文件,vi /etc/hosts。如图所示:
修改vi /etc/sysconfig/network
修改vi /etc/sysconfig/network-scripts/ifcfg-eth0,然后service network restart并且reboot如图所示。
现在我们以cloud.com这个二级域名来建立一个域名服务器,vi /var/named/chroot/etc/named.conf。如图
全局配置(options)options语句在每个配置文件只有一个。如果出现多个options,则第一个options的配置有效,并会产生一个警告信息。
Listen-on port 53 {192.168.1.193;};
监听端口,修改成自己的IP地址,如果有多个IP,就写多个IP,就写多个,每行要以;结束。
Directory “/var/named”;
Zone文件的存放目录,这里的/var/named是相对目录,在chroot环境下/var/named目录下。
Allow-query {localhost;};
允许查询的client,我们修改成为本地网段192.168.1.0/24。
Vi /var/named/chroot/etc/named.conf:
下面我们开始写zone文件,区域配置(zone)
zone语句作用是定义DNS区域,在此语句中可定义DNS区域选项
zone区域设置,第一步,设置根区域
当DNS服务器处理递归查询时,如果本地区域文件不能进行查询和解析,就会转到根DNS服务器查询,所以在主配置文件named.conf文件中还要定义根区域。
注:“.”意思是根区域,IN是internet记录,type是类型,根的类型是hint,file是根的区域文件。
下面我们去看看根区域文件,根的类型如图所示:
Cat namad.ca
继续编辑vi /var/named/chroot/etc/named.conf。指定正向解析的配置文件。bind对配置文件要求很严格,就算是有些地方多了个空格,服务器都可能启动不来。如图所示:
反向解析配置文件。如图所示:
修改区别文件,添加记录。cp /var/named/chroot/var/named/localhost.zone /var/named/chroot/var/named/michael.com.zone。如图所示:
先查看,如图:
然后copy文件:
注:cloud.com是你刚才在named.conf里面定义的名字,记住,要和那个一样反向区域的zone名字,必须是这样的命令方式,把IP地址反过来表达。
编辑/var/named/chroot/var/named/cloud.com.zone。如图所示:
注:TTL是生存期,单位是秒
$TTL是全局定义的
第二行 SOA记录,@取代在/etc/named.conf中指定的域名。
SOA段中的数字,分别为:序列号、刷新、重试、过期、生存期
序列号:序列号用于DNS数据库文件的版本控制。每当数据被改变,这个序列号就应该被增加。
刷新:从服务器向主服务器查询最新数据的间隔周期。每一次检查时从服务器的数据是否需要更改,则根据序列号来判别。
重试:一旦从服务器尝试连接主服务器失败,下一次查询主服务器的延迟时间。
过期:如果从服务器无法连通主服务器,则在经过此时间后,宣告其数据过期。
生存期:服务器回答 ‘无此域名’ 的间隔时间。
数字的默认单位为秒。否则:W= 周、D= 日、H= 小时、M= 分钟。
下面我们来写自己的zone文件。如图所示:
注:第一个NS记录,NS(name server):设置域名服务器的域名;然后添加一个MX记录,MX(Mail eXchanger):设置邮件交换器资源记录。简单的正向配置文件就到这里。
下面配置反向的zone文件,把正向解析zone文件拷贝一份,名字是你在named.conf中定义的反向解析的名字。cp /var/named/chroot/var/named/cloud.com.zone /var/named/chroot/var/named/1.168.192.in-addr.arpa.zone。如图所示:
我们现在开始修改反向解析。vi /var/named/1.168.192.in-addr.arpa.zone。如图所示:
配置完毕以后,下面我们来使用配置文件检测工具来检测我们的配置文件语法是否正确。named-checkconf /var/named/chroot/etc/named.conf,这条命令是检查named.conf主配置文件的,如果没有提示,就证明这个文件没有问题。
named-checkzone michael.com /var/named/chroot/var/named/michael.com.zone
named-checkzone michael.com /var/named/chroot/var/named/1.168.192.in-addr.arpa.zone
如图所示:
检测完毕以后,我们重新启动下DNS服务器。如图所示:
启动失败。我们需要将/var/named/chroot/etc/named.conf的权限修改成为644。如图所示:
这样我们的DNS服务器就搭建完毕。
原创文章,作者:夜风博客,如若转载,请注明出处:https://www.homedt.net/19027.html