域名是用点分割的一串字符表示的网络中计算机或计算机组的名称。
DNS服务器是一个占用53端口的应用层服务,提供域名和IP地址的相互解析。
正向解析:域名转化为IP地址
反向解析:IP地址转化为域名
基本工作原理:
1.客户机提出域名解析请求,并将请求发送给本地域名服务器。
2.本地域名服务器接到请求后,在本地缓存中查找。如果有此记录则返回给客户机。
3.若本地缓存中不存在此记录,本地域名服务器将请求发送给根域服务器。根域服务器将一个
顶级域地址返回给本地服务器。
4.本地服务器向顶级域服务器发出请求,顶级域查询自己本地记录,若没有记录则返回下级域
的地址。
5.重复查询下级域,直到找到正确记录。
6.本地服务器将正确记录保存在本地缓存,并发送给客户机。
域名自右向左依次为根域(在域名最右侧用“.”来表示,一般都会省略)顶级域(com(商业
机构)、net(网络服务机构)、org(非营利性组织)、edu(教育机构)、gov(政府机构)、mil(军事
机构))、二级域(在顶级域下的域名,它是指域名注册人或机构的网上名称。如(baidu、
google、ibm等)).....
各级域名的长度不超过63个字符,域名总长度不超过255个字符
linux中搭建DNS服务器
程序包名:bind
程序名:named
程序包:
bind:提供DNS服务
bind-libs:提供bind库文件
bind-utils:提供bind命令行测试工具(dig、host、nslookup、nsupdate)
bind-chroot:将bind根文件放在/var/named/chroot
bind:
服务脚本:/etc/rc.d/init.d/named
主配置文件:/etc/named.comf,/etc/named.rfc1912.zones,/etc/rndc.key
解析库文件:/var/named/ZONE_NAME.ZONE
注意:
1.一台物理服务器可同时为多个区域提供解析
2.必须要有根区域文件;named.ca
3.应该有两个(如果包括ipv6,应该更多)实现localhost和本地回环地址解析库
rndc:默认与bind安装在同意主机,且只能通过127.0.0.1来连接named进程,
提供辅助性的管理功能。端口953/tcp
主配置文件
全局配置:options {}
listen-on:监听端口以及IP地址(需要配置一个可与外部通信的IP地址)
allow-query:允许那些主机访问(any为所有)
recursion:是否允许递归查询;(一般为yes)
日志子系统配置:logging {}
区域定义:本机能够为那些zone进行解析,就要定义哪些zone
zone "ZONE_NAME" IN {}
/etc/named.comf文件配置好后DNS服务器可作为缓存名称服务器使用
主DNS服务器
1.在/etc/named.rfc1912.zones配置文件中定义区域
zone "ZONE_NAME" IN {
type {master(主)|slave(副)|hint(根)|forward(转发)}
file "ZONE_NAME.ZONE";
};
2.定义区域解析库文件
在/var/name/下创建ZONE_NAME.zone文件
$TTL 86400(缓存生效期:秒)
@ IN SOA www.123456.com.(完整域名) admin.163.com(邮箱不能使用@)(
2018021001 (序列号,每次修改此文件都应手动修改序列号)
1H (刷新时间)
10M (重试时间)
7D (过期时间)
1D (否定回答最小时间))
IN NS ns1
IN NS ns2
IN MX 10 mX1
ns1 IN A 123.123.10.23
......
资源记录类型:
A:实现主机名到IP地址的解析
AAAA:主机名到IPv6地址解析
PTR:IP地址到主机名解析
SOA:定于域是由谁负责
NS:DNS服务器记录
CNAME:别名记录
MX:邮件交换器
区域定义:
区域名称: 网络地址反写.in-addr.arpa.
173.18.100 --> 100.18.173.in-addr.arpa.
1.在/etc/named.rfc1912.zones配置文件中定义区域
zone "ZONE_NAME" IN {
type {master(主)|slave(副)|forward(转发)}
file "网络地址.zone";
};
2.定义区域解析库文件(不需要MX和A记录;以PTR记录为主)
在/var/name/下创建"网络地址.zone"文件
$TTL 86400(缓存生效期:秒)
$ORIGIN 100.18.173.in-addr.arps.(网络地址自动补全)
@ IN SOA ns1.abcd.com. admin.163.com(
2018021001
1H
10M
7D
1D
IN NS ns1.abcd.com.
11 IN PTR ns1.abcd.com
11 IN PTR www.abcd.com
......
主从复制
从服务器应该是一台独立的服务器,主服务器中区域解析必须有一条NS记录指向从服务器,
主服务器应允许从服务器做区域传送
1.配置/etc/named.conf,使服务器可作为缓存名称服务器
2.配置/etc/named.rfc1912.zones,是服务器
添加正向解析域
zone "ZONE_NAME" IN {
type slave;
masters [ 主DNS服务器IP地址 ];
file "slaves/ZONE_NAME.zone"; (slaves目录专用于从DNS服务器放置zone文件)
};
添加反向解析域
zone "网络地址.zone" IN {
type slave;
masters [ 主DNS服务器 ];
file "slave/网络地址.zone";
};
名称服务器命令
named-checkconf:检测主配置文件是否有语法错误
named-checkzone "ZONE_NAME" /var/name/ZONE_NAME.zone :检测zone文件是否有语法错误
rndc reload:重读解析库
dig命令使用
dig [-t type] name [@sername]
查询选项
+[no]trace:跟踪解析过程
+[no]recurse:进行递归解析
dig -x IP @SERVER:测试反向解析
host命令
host [-t type] name [SERNAME]
nslookup命令
nslookup [-optin] name [server]
交互式模式
server IP:指定DNS服务器IP
set q=TYPE:致命资源记录类型
NAME:要查询的名称
rndc命令:
rndc是一个可远程操作名称服务器的命令,由服务端和客户端组成。
服务端应在名称服务器上访问端口为953,tcp协议。
-s:指明名称服务器
-p:指明端口
但为安全起见客户端一般同服务端在同一台机器上可不加选项
子命令:
reload:重载主配置文件和区域解析库文件
reload zone:重载区域解析库文件
retransfer zone:手动启动区域传送过程,而不管序列号是否增加
notify zone:重新对区域传送发通知
reconfig:重载主配置文件
querylog:开启或关闭查询日志
trace:递增debug级别
trace #:指定使用级别
status:查看服务器信息