文章目录
DNS
域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。
因特网的域名结构
由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。
域名只是逻辑概念,并不代表计算机所在的物理地点。分为三大类:
- 国家顶级域名:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。
- 通用顶级域名:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
- 基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
IANA — the internet Assigned Numbers Authority 互联网数字分配机构
ICANN — the internet Corporation for Assigned names and Nunbers 互联网名称与数字地址分配机构
现如今全球一共投放13个根服务器
-
服务器主要用来管理互联网的主目录,全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。 这13台根服务器可以指挥Firefox或互联网 Explorer这样的Web浏览器和电子邮件程序控制互联网通信。换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了。
-
由于根服务器中有经美国政府批准的260个左右的互联网后缀(如.com、.net等)和一些国家的指定符(如法国的.fr、挪威的.no等),美国政府对其管理拥有很大发言权。
-
在与现有IPv4根服务器体系架构充分兼容基础上,由下一代互联网国家工程中心牵头发起的“雪人计划”于2016年在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6(互联网协议第六版)根服务器架设,事实上形成了13台原有根加25台IPv6根的新格局,为建立多边、民主、透明的国际互联网治理体系打下坚实基础。
-
根域名服务器
-
顶级域名服务器
-
权限域名服务器
发展:
Hosts文件 ---------------需要不停地添加域名
1.周期性任务 ---------------在指定时间自动的去写(自动化)
2.server ---------------东西太多(性能)
3.分布式数据库 -------------全球各地分放
查找方式
递归 --------计算机只发送一次请求
迭代---------多次
实际解析分为两段,一段递归一段迭代
一般客户端与本地DNS服务器采用递归查询,而本地服务器朝上查询采用迭代查询。
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS
8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用
FQDN<–>IP,双向解析,但是使用完全不同的方法
正向解析:FQDN---->Ip
Ip 域名 (一对多)
反向解析:IP----->FQDN
DNS 服务类型
主DNS服务器:数据修改 (接受用户请求返回数据) master
辅助dns服务器: 定期请求数据同步 slave
缓存dns服务器: 只缓存dns数据 hint
转发器:缓存服务器去掉缓存功能 forward
DNS解析答案
当DNS客户端向DNS服务器发出解析请求时,不管是否能够查询到想要的结果,都会返回一个解析答案。根据是否能够查询到想要的结果,可分为肯定答案和否定答案;根据解析答案是否由直接负责的DNS服务器返回,可分为权威答案和非权威答案。
根据是否能够查询到想要的结果:
①肯定答案:存在查询的键(key),并且存在与其查询键对应的值(value)。
②否定答案:不存在查询的键(key),因此,自然不存在与其查询键(value)对应的值。
根据解析答案是否由直接负责的DNS服务器返回:
①权威答案:由直接负责的DNS服务器返回的答案。
②非权威答案:不是由直接负责的DNS服务器返回的答案。这种情况下一般是由其他DNS服务器直接返回缓存的解析结果。
DNS协议的一种开源实现–bind
-
提供dns服务的套件叫bind但执行服务名称的是named
-
我们说DNS是一种协议,而对于每一种协议的实现都需要程序员开发出遵循这种协议规范的软件程序来实现,这里要介绍的BIND就是DNS协议的一种开源实现。据统计,使用bind作为DNS服务器软件的DNS服务器大约占所有DNS服务器的九成。BIND全称为Berkeley Internet Name Domain,因为当今互联网上的通信几乎都必须借助于DNS服务器来解析主机名,得到通信对方的IP地址,而在DNS服务器上最常用的软件就是bind,所以,bind这款软件几乎可以说是当今互联网上常用的软件了。目前bind由ISC.org(Internet Systems Consortium,互联网系统协会)负责开发与维护。
-
学习bind这款软件之前,务必掌握以下基本概念:
- dns:协议
- bind:dns协议的一种开源实现
- named:bind程序运行起来后的进程名
bind相关的程序包
bind不仅提供了主包,还提供了各种bind的支包,它们用于实现不同的功能。而在众多bind支包中,最常用到的有:bind-utils, bind-libs, bind-chroot等。
- bind相关的程序包如下:
- bind:提供dns server程序,以及几个常用的测试工具。
- bind-utils:bind客户端程序集,例如提供dig, nslookup等工具。
- bind-libs:提供bind和bind-utils包中的程序共同用到的库文件。
- bind-chroot:选装,让bind程序(named进程)运行于jail进程之下。
基本信息
yum install bind -y
rpm -ql bind 查看
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
操作
#安装bind
[root@serv01~]# yum install bind* -y
--第二步,修改配置文件named.conf
[root@serv01~]# /etc/named.conf
#查询
[root@serv01~]# rpm -qa|grep bind
[root@serv01~]# rpm -ql bind|less
#编辑文件
[root@serv01~]# vim /etc/named.conf
options {
#监听端口 IP地址
#listen-onport 53 { 127.0.0.1; };
#监听任何IP地址
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
#指定根目录
directory "/var/named";
#对Cache进行备份
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";
#允许查询的IP地址
#allow-query { localhost; };
#允许查询所有的IP地址进行查询
allow-query { any; };
#默认递归查询
recursion yes;
#安全相关的
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
#根域服务器
zone "." IN {
type hint;
file "named.ca";
};
#区域文件
include"/etc/named.rfc1912.zones";
[root@serv01~]# ls /var/named/
chroot data dynamic named.ca named.empty named.localhost named.loopback slaves
#根域服务器的相关信息
[root@serv01~]# cat /var/named/named.ca
;<<>> DiG 9.5.0b2 <<>> +bufsize=1200 +norec NS .@a.root-servers.net
;; globaloptions: printcmd
;; Gotanswer:
;;->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34420
;; flags:qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 20
;; OPTPSEUDOSECTION:
; EDNS:version: 0, flags:; udp: 4096
;;QUESTION SECTION:
;. IN NS
;; ANSWERSECTION:
. 518400 IN NS M.ROOT-SERVERS.NET.
. 518400 IN NS A.ROOT-SERVERS.NET.
. 518400 IN NS B.ROOT-SERVERS.NET.
. 518400 IN NS C.ROOT-SERVERS.NET.
. 518400 IN NS D.ROOT-SERVERS.NET.
. 518400 IN NS E.ROOT-SERVERS.NET.
. 518400 IN NS F.ROOT-SERVERS.NET.
. 518400 IN NS G.ROOT-SERVERS.NET.
. 518400 IN NS H.ROOT-SERVERS.NET.
. 518400 IN NS I.ROOT-SERVERS.NET.
. 518400 IN NS J.ROOT-SERVERS.NET.
. 518400 IN NS K.ROOT-SERVERS.NET.
. 518400 IN NS L.ROOT-SERVERS.NET.
;;ADDITIONAL SECTION:
#13台根域服务器
A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4
A.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:ba3e::2:30
B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201
C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12
D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90
E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10
F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241
F.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:2f::f
G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4
H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53
H.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:1::803f:235
I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17
J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30
J.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:c27::2:30
K.ROOT-SERVERS.NET. 3600000 IN A 193.0.14.129
K.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:7fd::1
L.ROOT-SERVERS.NET. 3600000 IN A 199.7.83.42
M.ROOT-SERVERS.NET. 3600000 IN A 202.12.27.33
M.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:dc3::35
要点:
(1)一台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
区域类型:
主区域:主DNS,master
从区域:从DNS,slave
缓存区域:hint,在找不到相关信息的时候去从根查找,标识根的地址
转发区域:forward,转发到指定区域,而不是指向根
资源记录名称:(数据库中的每一个条目)
SOA(起始授权记录) 记录提供有关dns区域工作方式的信息 -----具体负责哪个区域的解析
这代表着master/salve相关的认证,授权资料。不论有没有设定master/salve的架构都需要设定好。
- NS 将自己的域名映射到DNS 将域名最终映射到哪一台主机(由哪一台主机去解析当前所定义的域主机)
- A (ipv4地址记录) 资源记录将主机名映射到ipv4地址。
- CNAME (规范名称)记录域别名 132 主机名
- MX 邮件交换记录
- PTR指针记录 将IPV4 IPV6地址映射到主机名 (用于反向DNS)
- AAAA (IPV6 地址记录) 资源记录(四A记录)将主机名映射到ipv6地址。
资源记录包含的元素:
owner-name TTL class type date
主机名 资源记录生存时间 INTERNET A 记录存储数据(主机ip)
- TTL值
(当外部DNS服务器对你的DNS这个域进行查询时,这个记录会放置在对方的DNS服务器几秒钟) - 五种定义的信息
serial number: 序列号 定义当前使用的数据序列号 sn遵循“年+月+日+编号” ·
主和从的更新依据
refresh: 定义检查间隔时间 (上次和这次变化的时间)
retry: 重试时间 < 检查时间>
expire: 过期时间 缓存放多久过期
negative answer ttl: 否定答案的缓存时长 (没有指定生存期的数据可以保存在数据中的时间及TTL值)
时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
配置文件详解:
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; } ;指定可以递归的范围
logging { //指定日志记录分类和他们的目标位置
};
Zone{ 定义区域,一个zone定义一个区域
type hint;
};
查看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. //关键就是这一条记录。
案例一:正向解析
主配置文件 /etc/named.conf
TTL(time to live)生存时间dns记录在dns服务器上的缓存时长。
@域名 IN INTERNET输入标准 起始授权记录 服务器所对应的主域名服务器 管理员邮件以.代替常见的类型的@
如何查看是否解析成功
Dig -t
#查询NS记录
dig -t NS baidu.com
dig +trace -t A www.linux7.com
使用nslookup,windows操作系统也可以使用
nslookup;交互式
Nslookup -type=A www.baidu.com
[root@localhost ~]# nslookup -type=A www.baidu.com
案例二: 反向解析
测试:
重启服务正常
区域传送
将一个区域文件复制到多个服务器上的过程叫做区域传送。将主服务器上的信息复制到辅助服务器上来实现。
两种区文件复制方式:
- 完全区域传送:axfr,all transfer,全部区域文件复制,复制整个区域文件
- 增量区域传送:ixfr,incremental transfer,仅复制区域里变化的文件
#定义全局,在options选项内定义
allow-transfer { 192.168.75.130; };
IXFR: 增量区域传送
查询上次序列号改变后的信息
dig -t ixfr=1 baidu.com @192.168.75.129
案例三:完全区域传送
在服务器端的主配置文件定义完全区域传送在另一台虚拟机作为从服务器安装bind软件包:
配置主配置文件/etc/named.conf#
ll /var/named/slaves
[root@localhost slaves]# ll
-rw-r–r--. 1 named named 274 1月 16 22:30 named.192.168.221
-rw-r–r--. 1 named named 336 1月 16 22:30 named.linux7.com
重启服务会动态同步主服务其中的区域数据文件。
案例四:增量区域传送
- 修改主服务器的区域配置文件/var/named/named.baidu.com
$TTL 1D
@ IN SOA @ admin.baidu.com. (
2018012313; 修改这个序列号,每次增加1
1M
1M
1M
3M )
IN NS ns.baidu.com.
IN NS ns2.baidu.com.
IN MX 10 mail.baidu.com.
ns IN A 192.168.221.132
ns2 IN A 192.168.221.133
mail IN A 192.168.221.132
maiaal IN A 192.168.221.132
注意每次增删一条资源记录
- 重启主&从服务器的服务
[root@localhost ~]# systemctl restart named - 查看结果
通过tail -f /var/log/message来查看从服务器的日志,注意传送过程
[root@localhost ~]# tail -f /var/log/messages
Jan 23 16:29:50 localhost named[73533]: reloading configuration succeeded
Jan 23 16:29:50 localhost named[73533]: reloading zones succeeded
Jan 23 16:29:50 localhost named[73533]: zone baidu.com/IN: refresh: failure trying master 192.168.18.132#53 (source 0.0.0.0#0): operation canceled
Jan 23 16:29:50 localhost named[73533]: zone baidu.com/IN: loaded serial 2018012313
Jan 23 16:29:50 localhost named[73533]: zone baidu.com/IN: expired
Jan 23 16:29:50 localhost named[73533]: all zones loaded
Jan 23 16:29:50 localhost named[73533]: running
Jan 23 16:29:50 localhost systemd: Reloaded Berkeley Internet Name Domain (DNS).
Jan 23 16:30:01 localhost systemd: Started Session 48 of user root.
Jan 23 16:30:01 localhost systemd: Starting Session 48 of user root.
案例五:批量解析
批量解析(主服务器:vim /var/named/named.baidu.com)
$GENERATE 1-10 $.linux7.com. IN A 192.168.221.$
在从服务器上: ping 1.baidu.com
反向格式
$GENERATE 1-10 $ IN PTR $.linux7.com.
DNS配置——正解
#DNS配置——正解(域名转换成IP地址)
#Serv01:DNS服务器
#Serv02:测试用
--第一步,serv01安装bind
#安装bind
[root@serv01~]# yum install bind* -y
--第二步,修改配置文件named.conf
[root@serv01~]# /etc/named.conf
#查询
[root@serv01~]# rpm -qa|grep bind
[root@serv01~]# rpm -ql bind|less
#编辑文件
[root@serv01~]# vim /etc/named.conf
options {
#监听端口 IP地址
#listen-onport 53 { 127.0.0.1; };
#监听任何IP地址
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
#指定根目录
directory "/var/named";
#对Cache进行备份
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";
#允许查询的IP地址
#allow-query { localhost; };
#允许查询所有的IP地址进行查询
allow-query { any; };
#默认递归查询
recursion yes;
#安全相关的
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
#根域服务器
zone "." IN {
type hint;
file "named.ca";
};
#区域文件
include"/etc/named.rfc1912.zones";
[root@serv01~]# ls /var/named/
chroot data dynamic named.ca named.empty named.localhost named.loopback slaves
#根域服务器的相关信息
[root@serv01~]# cat /var/named/named.ca
;<<>> DiG 9.5.0b2 <<>> +bufsize=1200 +norec NS .@a.root-servers.net
;; globaloptions: printcmd
;; Gotanswer:
;;->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34420
;; flags:qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 20
;; OPTPSEUDOSECTION:
; EDNS:version: 0, flags:; udp: 4096
;;QUESTION SECTION:
;. IN NS
;; ANSWERSECTION:
. 518400 IN NS M.ROOT-SERVERS.NET.
. 518400 IN NS A.ROOT-SERVERS.NET.
. 518400 IN NS B.ROOT-SERVERS.NET.
. 518400 IN NS C.ROOT-SERVERS.NET.
. 518400 IN NS D.ROOT-SERVERS.NET.
. 518400 IN NS E.ROOT-SERVERS.NET.
. 518400 IN NS F.ROOT-SERVERS.NET.
. 518400 IN NS G.ROOT-SERVERS.NET.
. 518400 IN NS H.ROOT-SERVERS.NET.
. 518400 IN NS I.ROOT-SERVERS.NET.
. 518400 IN NS J.ROOT-SERVERS.NET.
. 518400 IN NS K.ROOT-SERVERS.NET.
. 518400 IN NS L.ROOT-SERVERS.NET.
;;ADDITIONAL SECTION:
#13台根域服务器
A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4
A.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:ba3e::2:30
B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201
C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12
D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90
E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10
F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241
F.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:2f::f
G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4
H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53
H.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:1::803f:235
I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17
J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30
J.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:c27::2:30
K.ROOT-SERVERS.NET. 3600000 IN A 193.0.14.129
K.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:7fd::1
L.ROOT-SERVERS.NET. 3600000 IN A 199.7.83.42
M.ROOT-SERVERS.NET. 3600000 IN A 202.12.27.33
M.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:dc3::35
;; Querytime: 147 msec
;;SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN:Mon Feb 18 13:29:18 2008
;; MSGSIZE rcvd: 615
#本地域名的解析
[root@larrywen0808]# ping localhost.localdomain
PINGlocalhost (127.0.0.1) 56(84) bytes of data.
64 bytesfrom localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.024 ms
64 bytesfrom localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.026 ms
64 bytesfrom localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.025 ms
64 bytesfrom localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.027 ms
64 bytesfrom localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.026 ms
64 bytesfrom localhost (127.0.0.1): icmp_seq=6 ttl=64 time=0.026 ms
^C
---localhost ping statistics ---
6 packetstransmitted, 6 received, 0% packet loss, time 5624ms
rttmin/avg/max/mdev = 0.024/0.025/0.027/0.005 ms
--第三步,修改配置文件named.rfc1912.zones
[root@serv01~]# tail -n5 /etc/named.rfc1912.zones
zone"hongyi.com" IN {
typemaster;
#域名和IP地址的对应关系的存放文件
file"hongyi.com.zone";
#不允许更新
allow-update{none;};
};
#保持属性保持一致(所属组)
[root@serv01named]# cp named.localhost hongyi.com.zone -a
[root@serv01named]# ll named.localhost hongyi.com.zone
-rw-r-----.1 root named 152 Jun 21 2007hongyi.com.zone
-rw-r-----.1 root named 152 Jun 21 2007 named.localhost
--第四步,拷贝文件,修改hongyi.com.zone文件
$TTL 1D
#注意后面有点
@ IN SOA dns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
#和前面的DNS保持一致
NS dns.hongyi.com.
dns IN A 192.168.1.11
www IN A 192.168.1.88
#文件配置项解析
[root@serv01~]# cat /var/named/named.localhost
$TTL 1D
#@:域名 hongyi.com
#rname.invalid:出了问题,发送邮件地址
@ IN SOA @rname.invalid. (
#序列号,主从服务器更新需要。版本号,文件修改的次数
0 ;serial
#从服务器更新刷新的时间
1D ; refresh
#没有刷新成功,重试时间
1H ; retry
#如果还没成功,失效的时间
1W ; expire
#有效时间:三个小时
3H) ; minimum
#和前面保持一致
NS @
A 127.0.0.1
AAAA ::1
#最终配置结果
#/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";
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};
#/etc/named.rfc1912.zones配置
zone "hongyi.com" IN {
type master;
file "hongyi.com.zone";
allow-update {none;};
};
#/var/named/hongyi.com.zone 配置
$TTL 1D
#注意后面有点
@ INSOA dns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
#和前面的DNS保持一致
NS dns.hongyi.com.
dns INA 192.168.1.11
www INA 192.168.1.88
--第五步,重启服务
[root@serv01 named]# /etc/init.d/namedrestart
Stopping named: [ OK ]
Starting named: [ OK ]
--第六步,使用dig测试,查看是否配置成功
[root@serv01 named]# dig www.hongyi.com
; <<>> DiG9.7.3-RedHat-9.7.3-2.el6 <<>> www.hongyi.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR, id: 61132
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1,AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.hongyi.com. IN A
;; ANSWER SECTION:
www.hongyi.com. 86400 IN A 192.168.1.88
;; AUTHORITY SECTION:
hongyi.com. 86400 IN NS dns.hongyi.com.
;; ADDITIONAL SECTION:
dns.hongyi.com. 86400 IN A 192.168.1.11
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Aug 8 18:40:12 2013
;; MSG SIZE rcvd: 82
#查看简短的信息
[root@serv01 named]# dig www.hongyi.com+short
192.168.1.88
--第七步,serv01能ping通域名
#不能ping通
[root@serv01 named]# ping www.hongyi.com
ping: unknown host www.hongyi.com
#不能ping通
[root@serv01 named]# ping dns.hongyi.com
ping: unknown host dns.hongyi.com
#在resolv.conf文件中加入nameserver
[root@serv01 ~]# vim /etc/resolv.conf
[root@serv01 ~]# cat /etc/resolv.conf
nameserver 192.168.1.11
#现在可以ping了,可以解析对应的IP地址
[root@serv01 ~]# ping www.hongyi.com
PING www.hongyi.com (192.168.1.88) 56(84)bytes of data.
^C
--- www.hongyi.com ping statistics ---
2 packets transmitted, 0 received, 100%packet loss, time 1161ms
#可以ping通dns服务器
[root@serv01 ~]# ping dns.hongyi.com
PING dns.hongyi.com (192.168.1.11) 56(84)bytes of data.
64 bytes from 192.168.1.11: icmp_seq=1 ttl=64time=0.020 ms
64 bytes from 192.168.1.11: icmp_seq=2 ttl=64time=0.071 ms
64 bytes from 192.168.1.11: icmp_seq=3 ttl=64time=0.039 ms
64 bytes from 192.168.1.11: icmp_seq=4 ttl=64time=0.041 ms
^C
--- dns.hongyi.com ping statistics ---
4 packets transmitted, 4 received, 0% packetloss, time 3316ms
rtt min/avg/max/mdev = 0.020/0.042/0.071/0.019ms
--第八步,server02测试
[root@serv02 ~]# echo "nameserver192.168.1.11" > /etc/resolv.conf
[root@serv02 ~]# cat /etc/resolv.conf
nameserver 192.168.1.11
[root@serv02 ~]# yum install bind-utils -y
[root@serv02 ~]# dig www.hongyi.com +short
192.168.1.88
[root@serv02 ~]# nslookup www.hongyi.com
Server: 192.168.1.11
Address: 192.168.1.11#53
Name: www.hongyi.com
Address: 192.168.1.88
--第九步,增加其他的解析
[root@serv01 named]# vim/var/named/hongyi.com.zone
[root@serv01 named]# /etc/init.d/namedrestart
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@serv01 named]# cat/var/named/hongyi.com.zone
$TTL 1D
@ INSOA dns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns.hongyi.com.
dns INA 192.168.1.11
www INA 192.168.1.88
ftp INA 192.168.1.89
#或者这样
ftp.hongiy.com. IN A 192.168.1.89
hongiy.com. INMX 5 mail
mail IN A 192.168.1.90
[root@serv01 named]# dig ftp.hongyi.com+short
192.168.1.89
DNS——配置mail服务器
[root@serv01 named]# vim hongyi.com.zone
[root@serv01 named]# cat hongyi.com.zone
$TTL 1D
@ INSOA dns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns.hongyi.com.
dns INA 192.168.1.11
#第一种配置,指定全名
hongyi.com. INMX 5 mail
mail IN A 192.168.1.90
--第二步,重启服务
[root@serv01 named]# /etc/init.d/namedrestart
Stopping named: . [ OK ]
Starting named: [ OK ]
--第三步,检测是否配置成功
[root@serv01 named]# dig -t mx hongyi.com.+short
5 mail.hongyi.com.
--第四步,查看第二种配置
[root@serv01 named]# cat hongyi.com.zone
$TTL 1D
@ IN SOAdns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns.hongyi.com.
#继承自根
INMX 5 mail.hongyi.com.
mail.hongyi.com. IN A 192.168.1.90
[root@serv01 named]# dig -t mx hongyi.com.+short
5 mail.hongyi.com.
DNS——配置别名
--第一步,修改配置文件
[root@serv01 named]# cat hongyi.com.zone
$TTL 1D
@ IN SOA dns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.hongyi.com.
IN MX 5 mail.hongyi.com.
dns IN A 192.168.1.11
www IN A 192.168.1.88
ftp IN A 192.168.1.89
mail.hongyi.com. IN A 192.168.1.90
smtp IN CNAME mail.hongyi.com.
pop3 IN CNAME mail.hongyi.com.
--第二步,重启服务
[root@serv01 named]# /etc/init.d/named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
--第三步,测试
[root@serv01 named]# dig -t mx hongyi.com. +short
5 mail.hongyi.com.
[root@serv01 named]# dig pop3.hongyi.com +short
mail.hongyi.com.
192.168.1.90
[root@serv01 named]# dig smtp.hongyi.com +short
mail.hongyi.com.
192.168.1.90
DNS——通配符
#通配符(其他的不受影响)
--第一步,修改配置文件
[root@serv01 named]# vim hongyi.com.zone
[root@serv01 named]# cat hongyi.com.zone
$TTL 1D
@ INSOA dns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns.hongyi.com.
dns INA 192.168.1.11
* INA 192.168.1.88
--第二步,重启服务
[root@serv01 named]# /etc/init.d/namedrestart
Stopping named: . [ OK ]
Starting named: [ OK ]
--第三步,测试。只要不在DNS配置项里域名都被解析成192.168.1.88
192.168.1.88
[root@serv01 named]# dig mail.hongyi.com+short
192.168.1.88
[root@serv01 named]# dig xxxx.hongyi.com+short
192.168.1.88
#这个不能检测处IP
[root@serv01 named]# dig hongyi.com +short
[root@serv01 named]#
#把hongyi.com.加上
[root@serv01 named]# vim hongyi.com.zone
[root@serv01 named]# cat hongyi.com.zone
$TTL 1D
@ INSOA dns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns.hongyi.com.
dns INA 192.168.1.11
hongyi.com. IN A 192.168.1.88
* INA 192.168.1.88
#重启服务
[root@serv01 named]# /etc/init.d/namedrestart
Stopping named: . [ OK ]
Starting named: [ OK ]
#可以正常匹配出IP
[root@serv01 named]# dig hongyi.com +short
192.168.1.88
[root@serv01 named]# vim hongyi.com.zone
[root@serv01 named]# cat hongyi.com.zone
$TTL 1D
@ INSOA dns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns.hongyi.com.
INMX 5 mail.hongyi.com.
mail.hongyi.com IN A 192.168.0.90
dns INA 192.168.1.11
hongyi.com. IN A 192.168.1.88
* INA 192.168.1.88
[root@serv01 named]# /etc/init.d/namedrestart
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@serv01 named]# dig -t mx hongyi.com.+short
5 mail.hongyi.com.
[root@serv01 named]# dig mail.hongyi.com.+short
192.168.1.88
#本机有效,不循环查找
[root@serv01 named]# ping -c 2www.larrywen.com
PING www.larrywen.com (192.168.1.11) 56(84)bytes of data.
64 bytes from www.larrywen.com(192.168.1.11): icmp_seq=1 ttl=64 time=0.023 ms
64 bytes from www.larrywen.com(192.168.1.11): icmp_seq=2 ttl=64 time=0.039 ms
--- www.larrywen.com ping statistics ---
2 packets transmitted, 2 received, 0% packetloss, time 999ms
rtt min/avg/max/mdev =0.023/0.031/0.039/0.008 ms
[root@serv01 named]# vim /etc/hosts
[root@serv01 named]# tail -n1 /etc/hosts
192.168.1.11 www.larrywen.com
DNS做负载均衡
#一个域名解析成多个IP地址
--第一步,修改配置文件
[root@serv01 named]# vim hongyi.com.zone
[root@serv01 named]# cat hongyi.com.zone
$TTL 1D
@ INSOA dns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns.hongyi.com.
dns INA 192.168.1.11
www INA 192.168.1.88
www INA 192.168.1.188
--第二步,启动服务
[root@serv01 named]# /etc/init.d/namedrestart
Stopping named: . [ OK ]
Starting named: [ OK ]
--第三步,测试
[root@serv01 named]# dig www.hongyi.com+short
192.168.1.88
192.168.1.188
#不建议这样使用,因为会出现Session不一致的问题
DNS配置——反解
反解:IP地址解析成域名,比如192.168.1.88解析成www.hongyi.com.反解邮件服务器用得较多。
--第一步,修改配置文件named.conf,和正解保持不变
[root@serv01 named]# cat /etc/named.conf
#搭建DNS——正解 反解都配置
options {
listen-onport 53 { any; };
listen-on-v6port 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 { any; };
recursionyes;
dnssec-enableyes;
dnssec-validationyes;
dnssec-lookasideauto;
/*Path to ISC DLV key */
bindkeys-file"/etc/named.iscdlv.key";
};
--第二步,修改配置文件/etc/named.rfc1912.zones
[root@serv01 named]# vim/etc/named.rfc1912.zones
[root@serv01 named]# tail -n5/etc/named.rfc1912.zones
zone "1.168.192.in-addr.arpa" IN {
type master;
file "hongyi.com.rev";
allow-update { none; };
};
[root@serv01 named]# tail -n5/etc/named.rfc1912.zones
zone "1.168.192.in-addr.arpa" IN {
type master;
file "hongyi.com.rev";
allow-update { none;};
};
--第三步,拷贝模板文件,并修改
--#记住一定要有-a或者-p参数,保持属性不变
[root@serv01 named]# cp named.localhosthongyi.com.rev -a
[root@serv01 named]# ll hongyi.com.revhongyi.com.zone named.localhost
-rw-r-----. 1 root named212 Aug 8 21:52 hongyi.com.rev
-rw-r-----. 1 root named203 Aug 8 21:47 hongyi.com.zone
-rw-r-----. 1 root named152 Jun 21 2007 named.localhost
#如果组不是named,使用chgrp改变文件所属组
[root@serv01 named]# chgrp namedhongyi.com.rev
[root@serv03 named]# cat hongyi.com.rev
$TTL 1D
@ INSOA dns.hongyi.com. root.hongyi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns.hongyi.com.
11 IN PTR dns.hongyi.com.
88 IN PTR www.hongyi.com.
--第四步,重启服务
[root@serv01 named]# /etc/init.d/namedrestart
Stopping named: . [ OK ]
Starting named: [ OK ]
--第五步,dig命令检查
[root@serv01 named]# dig -x 192.168.1.88+short
www.hongyi.com.
##### DNS转发
DNS转发网络拓扑结构图,如图一:
--第一步,查看本机IP,通过yum源安装bind
[root@serv01 named]# yum install bind* -y
--第二步,修改named.conf文件,修改如下
[root@serv01 named]# vim /etc/named.conf
[root@serv01 named]# cat /etc/named.conf
options {
listen-onport 53 { any; };
listen-on-v6port 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 { any; };
forwarders {192.168.1.12;};
recursionyes;
#dnssec-enableyes;
#dnssec-validationyes;
#dnssec-lookasideauto;
/*Path to ISC DLV key */
bindkeys-file"/etc/named.iscdlv.key";
};
[root@serv01 named]# tail -n5/etc/named.rfc1912.zones
zone "justdb.com" IN {
typemaster;
file"justdb.com.zone";
allow-update{ none; };
};
--第三步,拷贝文件,注意加上-a或者-p参数
[root@serv01 named]# cp named.localhostjustdb.com.zone -a
--第四步,编辑justdb.com.zone文件
[root@serv01 named]# cat justdb.com.zone
$TTL 1D
@ INSOA dns.justdb.com. root.justdb.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns.justdb.com.
dns IN A 192.168.1.11
www IN A 192.168.1.66
[root@serv01 named]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr00:0C:29:07:DD:3B
inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe07:dd3b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2823 errors:0 dropped:0 overruns:0 frame:0
TX packets:1618 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:257429 (251.3 KiB) TXbytes:252898 (246.9 KiB)
--第五步,重启服务
[root@serv01 named]# /etc/init.d/namedrestart
Stopping named: . [ OK ]
Starting named: [ OK ]
--第六步,测试本机
[root@serv01 named]# dig www.justdb.com+short
192.168.1.66
--第一步,查看本机IP,通过yum源安装bind
[root@serv02 named]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr00:0C:29:6A:EC:97
inet addr:192.168.1.12 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe6a:ec97/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2943 errors:0 dropped:0overruns:0 frame:0
TX packets:1728 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:265863 (259.6 KiB) TXbytes:279067 (272.5 KiB)
[root@serv01 named]# yum install bind* -y
--第二步,修改named.conf文件,修改如下
root@serv02 named]# vim /etc/named.conf
[root@serv02 named]# cat /etc/named.conf
options {
listen-onport 53 { any; };
listen-on-v6port 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 { any; };
recursionyes;
dnssec-enableyes;
dnssec-validationyes;
dnssec-lookasideauto;
/*Path to ISC DLV key */
bindkeys-file"/etc/named.iscdlv.key";
};
[root@serv02 named]# tail -n6/etc/named.rfc1912.zones
zone "larrywen.com" IN {
type master;
file "larrywen.com.zone";
allow-update { none; };
};
--第三步,拷贝文件,注意加上-a或者-p参数
[root@serv02 named]# cp named.localhostlarrywen.com.zone -a
--第四步,编辑larrywen.com.zone文件
[root@serv02 named]# cat larrywen.com.zone
$TTL 1D
@ INSOA dns.larrywen.com. root.larrywen.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ; minimum
NS dns.larrywen.com.
dns IN A 192.168.1.12
www IN A 192.168.1.88
--第五步,重启服务
[root@serv02 named]# /etc/init.d/namedrestart
Stopping named: . [ OK ]
Starting named: [ OK ]
--第六步,测试本机
[root@serv02 named]# dig www.larrywen.com+short
192.168.1.88
--第一步,安装bind-util
[root@serv03 ~]# yum install bind-util* -y
--第二步,配置默认的dns
[root@serv03 ~]# cat /etc/resolv.conf
nameserver 192.168.1.11
--第三步,测试www.justdb.com
[root@serv03 ~]# dig www.justdb.com +short
192.168.1.66
--第四步,测试www.larrywen.com
[root@serv03 ~]# dig www.larrywen.com +short
192.168.1.88