DNS(domain name system)是域名解析服务器,提供域名和IP地址之间一种相互转换的机制,目的是为了方便人们的记忆和管理。工作在应用层。同时监听TCP 53端口 ,UDP 53端口。
DNS基本常识
原创wg_rjaijdid ©著作权
©著作权归作者所有:来自51CTO博客作者wg_rjaijdid的原创作品,请联系作者获取转载授权,否则将追究法律责任
域名解析发展史;
早期初期在管理员去官方服务器hosts下载主机映射到本机/etc/hosts 下记录你想访问的网络的所有对应关系,但是适应不了网络更新频繁。随着时代的发展,hosts不堪重负。 之后出现了dns来解决这个问题。
特征:
nds是hosts的扩展,也是分层的。dns解析是从后向前的,www.baidu.com. 为主机名,最后面的.为根域,默认省略了。 .com为一级域,.baidu为二级域,www为主机名。
解析顺序:
先找.再找.com再找.baidu再找www
层次化的结构:
跟域 . 根服务器
一级域 com net org 一级域名(国家域,组织域,反向域)
二级域 ibm hp qq
在二级域ibm里可以再划分子域www、tech等三、四、五级域,最多64个子域。整个结构层次化,就像倒置的树。
nds服务器,只知道根还有与下级服务器之间关系。但是不知道上级服务器是谁,都需要从根查询。每个dns都需要知道跟在哪里。根节点全球只有13个,日本一个,亚洲一个,剩下全在美国。
查询类型:
1,递归查询:a询问b问题,b直接回应结果,b的工作量很大
2,迭代查询:a询问b问题,b给一个参考路径,a在去寻找
在互联网上,不进行递归查询,递归查询只在本地执行。
解析类型:
域名----> ip :正向解析
ip ----> 域名 :反向解析
记录类型:
nds本身就是一个数据库,一个文本文件记录了不同类型的映射,通过这些记录实现解析。
第一条,我们这个库代表着什么区域。
第二条,我们这个库里主机名的ip
第三条,ip号对应着哪个主机名
常用的记录类型:
SOA记录 表明起始授权记录,标识一个域名服务器的主服务器
A记录 主机名转换ip
PTR记录 ip转换主机名
NS记录 域对应的服务器
MX记录 域对应的邮箱
CNAME记录 别名对应的主机名
DNS服务器的类型:
可以设置多台dns服务器,但是必须有一个为主。主服务器有权限创建一个记录,其他从服务器只需要与主服务器进行拷贝同步。主、从服务器可以同时进行解析,从服务器数据保持与主服务器一样。
区域传送:
主从服务器之间进行,主服务器-----只有一台,一旦数据更新,立刻通知辅助名称服务器
辅助名称服务器------接受主服务器传来的配置文件,记录。更新时通知其他
缓存服务器--------把第一次的查询结果保存一定时间,在这个时间内,直接使用,不在查询。
axfr 完全区域传送,数据完全传送。
ixfr 增量区域传送,只传送变化的数据与记录。
名称解析 与 区域、域概念:
正向:需要一个单独的数据文件,
反向:需要一个单独的数据文件
区域:物理概念
域:逻辑概念
正向与反向解析各自都需要一个单独的文件来配置。这个单独的文件叫做区域,是物理概念。他们都是在一个域内,实现解析的配置文件。
一个域就包含了一个正向区域与一个反向区域。如果域中如果有子域,还可以在包含子域中的区域。
解析流程:客户端要找www.a.org
1.主机查看本地/etc/hosts,没有的话递归查询找dns服务器
2.dns服务器查看本地dns服务器缓存,有的话返回。没有,下一步
3,查看是否是在自己本地服务器的域,如果没有再找根,进行迭代查询(权威答案)
主机找dns,dns找根,找到根就等于找到了所有主机路径,除非目标不存在。
构建主、从服务器流程:
1.首现安装软件 dns是协议,bind是软件,named是进程
]# yum list all bind* 查找bind相关的包
]# yum install bind.i386 安装bind软件包
bind.i386 安装包 , caching-nameserver.i386 这个包包含了配置文件
2.配置主配置文件:主要有3个
一. /etc/name.conf 主配置文件,主要用于配置区域,全局设置。分两段。};不能有空格.
示例: options { 全局选项段options,表示对全局服务器生效。
directory "/var/named"; 定义工作目录
version " com on "
};
zone "." IN { 区域声明段zone,对区域生效。"."定义的为根域
type hint; 固定的,定义区域的类型。这里定义根为线索域,找不到就去找根
file "named.ca"; 相对路径,相对于/var/named
};
zone "localhost" IN { 声明本地正向区域
type master; 定义自己为主区域服务器
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN { 声明反向区域
type master;
file "named.local";
};
如何定义从区域:
zone "zone_name" IN {
type slave;
file "slaves/zone_name.zone";
masters { masrer_name; };
};
区域的类型:
hint 定义根线索域,跟域
master 定义主区域,主服务器
slave 定义从区域,从服务器
forward 定义反向区域
以上三条是最基本的,别人把dns指向你你就可以解析,可以利用根找到所有地址。
编辑好之后,把属组改为named
]# chown :named /etc/named.conf
配置文件准备完毕,cd /etc/named 里面是没有zone选项里的3个文件的。我们需要去创建数据文件.
创建数据文件:
named.ca localhost.zone named.local
利用dig -t NS . 查找,里面有13个根节点。
1.利用dig与输出重定向生成named.ca
]# dig -t NS . @a.root-servers.net > /var/named/named.ca
2.格式比较独特,这是区域文件。包含宏定义,类似变量。解析记录,第一条必须是SOA记录.格式name [ttl] IN RECORD_TYPE value 定义解析记录,
]# vim /var/named/localhost.zone
$TTL 86400 定义宏定义,生存周期为86400秒
@ 600 IN SOA localhost. admin.localhost. ( 定义SOA,固定在第一条,定义主服务器
2009021901 更新序列号用于标记地址数据库的变化,可以是10位以内的整数,改变一次加一。
3H 刷新时间从域名服务器更新该地址数据库文件的间隔时间
15M 重试延时从域名服务器更新地址数据库失败以后,等待多长时间再次尝试
1W 失效时间超过该时间仍无法更新地址数据库,则不再尝试。
1D ) 缓存时间设置无效地址解析记录(该数据库中不存在的地址)的默认缓存时间,在此时间内再差寻,做否定回答.
IN NS localhost. 重要:NS记录没写@与生存周期时间,代表保持上一条记录参数.这里的localhost为主机名.如果有多个服务器,则定义多条NS
localhost. IN A 127.0.0.1 定义正向解析
保存退出
3.刚刚是正向解析,我们还需要一个反向解析数据文件
cp /var/named/localhost.zone /var/named/named.local 修改成反向解析,名字为named.local
$TTL 86400
@ 600 IN SOA localhost. admin.localhost. (
2009021901
3H
15M
1W
1D )
IN NS localhost.
1 IN PTR localhost. 此处1前面引用named.conf中的0.0.127识别为127.0.0.1
保存退出,此时三个文件都有了.更改属组为named
二. /etc/rndc.conf 编辑客户端文件
nameserver 127.0.0.1
search localdomain
三. /etc/rndc.key
named-checkconf 检查配置文件语法错误
named-checkzone "区域名" 路径 检查区域配置文件语法错误
service named
dig -t TYPE name @server 不使用缓存,指向nds服务器
dig -t axfr magedu.com
dig -x ip地址 反向解析
dig -
netstat -tunlp 非常重要的网络查看命令,t表示tcp相关的会话,u表示udp相关的会话,n以数字的形式进行查看,不加n会很慢.l表示只产看在监听状态的连接,服务端套接字.p表示由哪个进程来连接的.
rndc:
rndc named start 开启named进程,dns协议
清空dns缓存: rndc flush 在windows上是ipconfig/flushdns
rndc status 查看rndc状态
rndc reload 重新加载数据文件与主配置文件,数据文件很大。
rndc reconfig重新加载主配置文件
server named configtest 用于测试named
上一篇:网路安全:加密技术
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
使用dnsmasq实现自建DNS
使用dnsmasq自建DNS
dnsmasq 自建DNS -
docker基本常识
常用命令:下载镜像: docker pull nginx查看本地镜像 docker images启动容器 dock
docker nginx php -
python基本常识
python 必备常识
python -
thymeleaf 基本常识
1、传参th:href="@{/console/createBilling(app
javascript 自定义 赋值