Linux之DNS配置及案例
域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。
dns协议——53端口——tcp、udp协议——正向解析
bind :dns协议的一种开源实现
named:bind程序运行起来后的进程名
因特网的域名结构
由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。
域名只是逻辑概念,并不代表计算机所在的物理地点。分为三大类:
- 国家顶级域名:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)
- 通用顶级域名:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
- 基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
发展
Hosts文件 ---------------需要不停地添加域名
1.周期性任务 ---------------在指定时间自动的去写(自动化)
2.server ---------------东西太多(性能)
3.分布式数据库 -------------全球各地分放
查找方式
递归查询:
也就是DNS客户端送出查询要求后,如果DNS服务器内没有需要的数据,则DNS服务器会代替客户端向其他的DNS服务顺查询。
迭代查询:
客户机向dns服务器发送请求,如果该服务器本地没有储存查询的DNS信息,那么它会告诉客户机另一台DNS服务器的地址,客户机在向这台DNS服务器查询DNS信息,依次循环直到返回结果。所以,客户机可能接触多个DNS服务器。
DNS解析过程
1.在浏览器中输入www.qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2.如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3.本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4.如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5.如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理qq.com的DNS服务器地址给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。
6.如果用的是转发模式,本地DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把请求转至上上级,以此循环。找到最后把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
正向解析
在DNS域名解析服务中,正向解析是指根据域名(主机名)查找到对应的IP地址。
反向解析
在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,
DNS 服务类型:
- 主DNS服务器:数据修改(接受用户请求返回数据) —— master
- 辅助dns服务器: 定期请求数据同步 —— slave
- 缓存dns服务器: 只缓存dns数据 —— hint
- 转发服务器:缓存服务器去掉缓存功能 —— forward
bind相关的程序包
- bind:提供dns server程序,以及几个常用的测试工具。
- bind-utils:bind客户端程序集,例如提供dig, nslookup等工具。
- bind-libs:提供bind和bind-utils包中的程序共同用到的库文件。
- bind-chroot:选装,让bind程序(named进程)运行于jail进程之下。
bind相关的配置文件
- /etc/named.conf 主配置文件
- /etc/rndc.conf: 相关配置文件
- 区域数据文件,需要手动创建
/var/named/zidingyi.zone - 配置检查脚本工具
/usr/sbin/named-checkconf - 区域配置检查工具
/usr/sbin/named-checkzone - #全球十三个根服务器的相关信息;
/var/named/named.ca 区域文件dns数据库 - 解析库文件:存放于/var/named/目录下,一般名字为ZONE_NAME.zone
要点:
(1)一台DNS服务器可同时为多个区域提供解析。dns
(2)DNS服务器必须要有根区域解析库文件:named.ca.
(3)DNS服务器还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库,这两个文件分别如下:
①正向解析库文件:/var/named/named.localhost
②反向解析库文件:/var/named/named.loopback
rndc的全称是Remote Name Domain
Controller,它可以帮助用户更方便地管理DNS服务器,包括可以检查DNS服务器的状态与统计信息、重载配置文件及zone或单独重载某个区域而不需要重新启动整个DNS服务,还有查看已存在DNS缓存当中的资料等。
DNS在53端口上监听请求并提供响应的服务。出于性能的考虑,DNS查询请求用UDP协议交互并且每个请求的大小小于512字节,但是如果返回的请求大小大于512字节,交互双方会协商使用TCP协议。
rndc服务默认监听在tcp的953端口,且默认监听于127.0.0.1地址,因此默认仅允许本地使用。
rndc的常见用法:
rndc reload:在不重新启动DNS服务的情况下,重新加载配置文件及zone.
rndc reload zone:重新加载指定的zone.
rndc status:查看当前DNS服务器的状态。
rndc stats:将当前系统的DNS统计数据记录下来,默认会将数据存储为一个文件:/var/named/data/named_stats.txt.
rndc dumpdb:将当前DNS高速缓存中的数据记录下来,与stats类似,默认会将数据存储为一个文件:/var/named/data/cache_dump.db
rndc flush:清空当前DNS服务器上的所有缓存。
Usage: rndc [-b address] [-c config] [-s server] [-p port] [-k key-file ] [-y key] [-V] command
资源记录名称
- SOA(起始授权记录) 记录提供有关dns区域工作方式的信息 -----具体负责哪个区域的解析 (指定权威服务器)这代表着master/salve相关的认证,授权资料。不论有没有设定master/salve的架构都需要设定好。
- NS 标记dns服务器 将域名最终映射到哪一台主机(标记本地 dns服务器)
- A (ipv4地址记录) 资源记录将主机名映射到ipv4地址。
- CNAME (规范名称)记录域别名
- MX 邮件交换记录 —标记邮件服务主机名
- PTR指针记录 将IPV4 IPV6地址映射到主机名 (用于反向DNS)
- AAAA (IPV6 地址记录) 资源记录(四A记录)将主机名映射到ipv6地址。
- /var/named/named.ca (数据文件----资源记录文件)
配置文件详解:
dns的主配置文件,作为dns的设定档,将我自己的设定档案列出来然后逐部分进行解释。
注意格式:"//" “/* */” ";"结尾
该文件属主root,named用户组
###################################
#全局选项
options {
#定义监听端口,如果所有地址都监听,则只写端口
listen-on port 53 { 127.0.0.1; };
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 { localhost; }; #只允许本地主机进行查询
recursion yes; #允许递归
#allow-recursion { 192.168.0.0/16; } ;指定可以递归的范围
dnssec功能会对解析结果进行验证,是否为权威解答,不是就会报错,虽然不影响使用,但是看着不爽
logging { //指定日志记录分类和他们的目标位置
};
zone{ 定义区域,一个zone定义一个区域
type hint;
File named.ca
};
查看named.localhost文件:
[root@www ~]# cat /var/named/named.localhost
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
@ A 127.0.0.1 //关键就是这一条记录。
查看named.loopback文件:
[root@www ~]# cat /var/named/named.loopback
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
PTR localhost. //关键就是这一条记录。
配置案例
1.配置主从本地dns服务器,实现www.openlab.com域的正反向解析。
首先进行装包
[root@redhat ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@redhat ~]# yum install bind -y
本地dns服务器
配置配置文件
[root@redhat ~]# vim /etc/named.conf//正向解析
options {listen-on port 53 { 192.168.159.128; };directory "/var/named";
};
zone "openlab.com" IN {type master;file "named.openlab.com";
};
创建资源文件
[root@redhat ~]# vim /var/named/named.openlab.com
//正向解析
@ IN SOA @ admin.admin.com. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS dns.openlab.com.
dns IN A 192.168.159.128www IN A 192.168.159.128
检测配置文件语法,如果出错会有提示
[root@redhat ~]# named-checkconf
重启服务、关闭防火墙、关闭selinux
[root@redhat ~]# systemctl restart named
[root@redhat ~]# systemctl stop firewalld
[root@redhat ~]# setenforce 0
客户端利用nslookup工具查看是否解析成功
[root@redhat ~]# nslookup
> server 192.168.159.128
Default server: 192.168.159.128
Address: 192.168.159.128#53
> www.openlab.com
Server: 192.168.159.128
Address: 192.168.159.128#53Name: www.openlab.com
Address: 192.168.159.128
反向解析
修改配置文件
[root@redhat ~]# vim /etc/named.confoptions {listen-on port 53 { 192.168.159.128; };directory "/var/named";
};
//正向解析
zone "openlab.com" IN {type master; file "named.openlab.com";
};
//反向解析
zone "159.168.192.in-addr.arpa" IN {type master;file "named.fanxiang.com";
};
创建资源文件
[root@redhat ~]# vim /var/named/named.fanxiang.com@ IN SOA @ admin.openlab.com. (01D1H1W3H ) IN NS ns.openlab.com.144 IN PTR ns.openlab.com.
144 IN PTR www.openlab.com.
客户端测试
[root@bogon ~]# nslookup
> server 192.168.159.128
Default server: 192.168.159.128
Address: 192.168.159.128#53
> 192.168.159.128
Server: 192.168.159.128
Address: 192.168.159.128#53128.159.168.192.in-addr.arpa name = www.openlab.com.
配置从dns服务器
从服务端下载安装
[root@bogon ~]# yum install bind -y
在服务器端的主配置文件定义完全区域传送 (主服务)
[root@redhat ~]# vim /etc/named.conf
添加下面这个
重启主服务得服务
[root@redhat ~]# systemctl restart named
从服务端配置主配置文件
[root@bogon ~]# vim /etc/named.conf
重启从服务、关闭防火墙、关闭selinux
[root@bogon ~]# systemctl restart named
[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# setenforce 0
查看同步的主服务的区域数据文件
[root@bogon ~]# ll /var/named/slaves
total 8
-rw-r--r--. 1 named named 270 Aug 29 00:02 named.fanxiang.com
-rw-r--r--. 1 named named 247 Aug 29 00:02 named.openlab.com
配置增量区域传送
主服务器修改资源配置文件
新加一条
重启主从服务器
[root@redhat ~]# systemctl restart named[root@bogon ~]# systemctl restart named
查看结果
通过tail -f /var/log/message来查看从服务器的日志,注意传送过程
⒉配置转发服务器,通过上面所配置的主服务器可以查询解析结果。
新开一台虚拟机作为转发
首先装包
[root@bogon ~]# yum install bind -y
然后配置主配置文件
[root@bogon ~]# vim /etc/named.conf
重启服务、关闭防火墙、关闭selinux
[root@bogon ~]# systemctl restart named
[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# setenforce 0
测试
3.分离解析
Linux之DNS配置及案例相关推荐
- Linux的DNS配置2-主从服务器
1.实验背景 之前写了Linux的DNS配置1-DNS入门,其中只用了一台DNS服务器,但一般在大型网络中,都要通过配置辅助DNS服务器可以提高DNS服务的可靠性,本次实验即配置DNS主从服务器 2. ...
- Linux bind DNS配置
为什么80%的码农都做不了架构师?>>> 1,DNS服务 yum -y bind* cach BIND 提供DNS服务 libnss_file.so libnss_dns.so ...
- linux下DNS配置详解
linux下DNS配置详解 DNS 是域名系统 (Domain Name Server) 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务.在Internet上域名与IP地址之间是一一对应的 ...
- linux bind命令,Linux初学者DNS配置指南(一)安装Bind
手把手教你如何配置Linux下的DNS(一)安装Bind 最近配置linux下DNS时,遇到些问题,查了网上的很多资料,内容都比较全面,但是没有一个能让linux初学者,按照所写的步骤一步一步执行下去 ...
- linux系统dns配置
linux系统dns配置 DNS(Domain Name System,域名系统): 因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取 ...
- linux下dns配置方法与常用dns
linux下dns配置方法: 1.修改网卡配置文件 echo 'DNS1="114.114.114.114" ' >> /etc/sysconfig/network-s ...
- linux配置dns 视频教程,linux下DNS配置视频
yaoxinrisk 于 2013-12-02 20:07:11发表: 现在都打不开了 657129880@qq.co 于 2013-04-21 18:01:29发表: 谢谢分享!!! qwertpa ...
- linux下 DNS配置过程『罗斌原创』
DNS配置过程 任务1:配置主DNS 1.检查是否安装了bind软件包,rpm -qa | grep bind 如果没有安装则挂载第四张光盘, mount -t iso9660 /dev/cdrom ...
- linux服务器dns配置丢失处理
最近公司有服务器发现配置了dns后,检查/etc/resolv.conf中也已经修改了,但重启服务器后或者重启网络服务(services networkrestart)后,dns配置丢失. 通过检查发 ...
- linux 内核配置 dns,Linux的dns配置 - Linux操作系统基础进阶练习题_Linux教程_Linux公社-Linux系统门户网站...
1.1)查询是否安装DNS软体 1.2)安装bind_chroot 1.3)编辑/etc/sysconfig/named,查看chroot的路径 1.4)注释掉/etc/resolv.conf中其它D ...
最新文章
- PYTHON编程导论群问题汇总(三)
- ef entity转json引起的Self referencing loop
- 微信小程序中用setData修改一个对象的属性值
- Category 特性在 iOS 组件化中的应用与管控
- java gson 工具类_GSON 实体 转换工具类
- 数学建模学习笔记(三)——插值算法
- 使用preparedStatement执行sql语句 20210411094249744
- Powershell 磁盘使用空间监控,并使用dbmail发送邮件
- 查看maven,JDK版本号
- 计算机开机提示dll,电脑开机提示dll文件出错怎么办
- Win7系统怎么开启远程桌面?Win7远程桌面怎么用(转)
- 如何阻止手机虚拟键盘弹起
- snap install cloudcompare碰到问题
- 蓝桥杯JAVA-32.二维数组(矩阵)实现旋转模板(JAVA实现)
- 如何查看office是否是永久激活
- 使用fs传真模块mod_fax的一点点经验
- java-集合框架库-ArrayList
- STM32F4-DMA及相关配置
- SpringBoot的个人博客管理系统(毕业论文范文)
- window系统下安装VS(Microsoft Visual Studio),及Visual Studio使用教程