● DNS(Domain Name Service):域名解析,核心和标准都是基于一个软件,软件名为:BIND(Berkeley Internet Name Domain)
■ DNS:名称解析,Name Resolving 名称转换(背后有查询过程,依赖于数据库)
♦ FQDN(主机名)<-->IP:双向转换,这就是解析的过程
# 名称解析不仅仅只是主机和ip之间,很多两者之间的转换都属于名称解析
# 将端口转换成对应服务也属于名称解析,如:http和80之间
♦ 要完成名称解析的机制有很多,于是,一个统一的框架便出现了:
nsswitch
● nsswitch:是一个框架、平台,展现出来的是一个配置文件:
/etc/nsswitch.conf
■ 将DNS转换为ip地址的机制有两个:
libnss_files.so
libnss_dns.so
这两个都是库文件,只能被调用
■ /etc/nsswitch.conf中加入一行
hosts: files dns
# files是指让libnss_files.so找/etc/hosts文件
# dns是指dns服务
■ stub resolver:名称解析器
主机名和ip地址转换的过程是由stub resolver来完成的
♦ 当ping www.magedu.com的时候就会借助本地的stub resolver来完成名称解析
stub resolver第一步会根据files去找/etc/hosts中是否有www.magedu.com对应的ip地址,没有就会找DNS来解析
■ 为什么要用到hosts文件呢?
♦ 人们记住数字的能力是有限的,很难记住几十个ip地址,所以便有了hosts文件,它的格式为:
IPASSR FQDN Ailases(别名)
172.16.0.1 www.magedu.com www
♦ 主机越来越多之后,随意给自己的主机起名字造成通信的不便,于是便出现了名称地址管理机构:IANA
但是由于IANA拥有军方的背景,人们不想自己的信息被政府所掌控,于是功能转移到了ICANN
● ICANN:管理顶级域,规范ip和主机名之间的关系
■ A主机如何知道网络上加入了D主机呢?
♦ 早期时,IANA通过ftp服务器管理了一个hosts文件,在线更新,用户只要将hosts文件下载下来覆盖自己的hosts就行了
1、定义周期性计划任务,每多长时间就下载hosts并覆盖
2、后来IANA干脆建立服务器,只要用户提出请求,服务器负责解析,不需要再下载更新
3、但后来hosts文件条目太多了,不便于查询和管理,便开始进行分布式管理,将权限一步步下放,IANA只需维护根就OK
● 分布式数据库:DNS属于分布式数据库
上级仅知道其直接下级,不能越级管理
下级不知道上级以及上上级,但能知道根
但是不绝对,只要会配置
● 域名:
■ www.magedu.com 这是个主机名(主机名FQDN:Full Qualified Domain Name,完全限定域名)
# .com是个域名,magedu是.com下的一个域
# .magedu.com也是个域名,只不过有的主机叫做www有的叫做ftp、mail等
■ 域名由大到小进行组合,就像外国人写地址,如www.magedu.com.
# www:范围最小,主机名
# .magedu:
# .com:顶级域
# .:全局,表示根域
■ 根域-->顶级域(TLD:Top Level Domain)-->二级域
顶级域分为:
组织域:.com,.org,.net,.cc…
国家域:.cn,.tw,.hk,.iq,.ir,.jp…
反向域:将IP-->FQDN专用的
反向:IP-->FQDN在一个数据库
正向:FQDN-->IP在另一个数据库
■ 主机名称是自底向上的如:www.magedu.com,而授权是自顶向下的
■ 查询有两种方式:
递归:只发出一次请求
迭代:可能发出多次请求
♦ 递归:
# st1主机想要查询www主机,可以向根域发送请求,但如果2秒后st1想要继续查询,就需要再次发送请求
这样就十分浪费带宽,但是可以将www主机地址缓存下来,下次访问直接读取缓存文件即可
# 这时st2也想查询www主机,但是st2无法读取st1的缓存文件,如果ibm下上万台主机同时查询www主机就会很麻烦
# 于是就在ibm下建立一台主机ns.ibm.com专门负责接收请求和解析
# 此时st1想要查询www主机时,会向ns发送请求,由于ns不知道它的上级只能将请求发送至根,根找.com,.com找
magedu,magedu找www,找到后便将答案一步一步发送到st1
这样就会造成根十分繁忙,所以,根不会给任何主机递归。于是,正确的方式应该是这样的:
♦ 迭代:
# st1找ns,ns找根,根让ns找.com,.com让ns找magedu,magedu直接把答案告诉ns,ns将答案缓存到本地
♦ 权威答案和非权威答案:
♠ ns主机缓存下来的条目属于非权威答案
♠ magedu提供的才是权威答案,因为只有magedu才是最清楚www信息的
# magedu将www的信息以及TTL发给ns,告诉ns此信息缓存的有效时间是多久
# 所以说每个服务器返回答案中还必须包含超时时间
# 缓存10S和1000S服务器负载的差距是巨大的
# 缓存时间的长短取决于主机的变动频率
♦ 授权数据库:
每个域都有一个数据库,里面记录的是它的所有下级中负责接收请求和解析的服务器的ip地址,返回的答案就是此ip
● ns服务器管理:
■ 一个服务器如何管理多个ns服务器?
每个ns服务器的ip同时指向该服务器
■ 此服务器如何管理多个域?
该服务器同时维护多个服务器,每个域对应不同的服务器
● DNS的高级机制:负载均衡
■ 在dns中主机名和ip地址之间是多对多的关系,也就是说一个ip地址有多个主机名,一个主机名也能对应对多个ip地址
■ 这样的好处就是负载均衡,比如:1000个用户同时访问www.111.com,500个用户在A服务器,500个用户在B服务器
■ 但是这种机制的性能很差
● DNS服务器的作用:
1、接受本地客户查询请求,查询方式为递归:
比如st1请求ns服务器,ns服务器给st1进行递归,自己迭代查询
2、外部客户端请求:请求权威答案
如果请求的主机存在,则发送肯定答案和缓存时间(TTL)
如果请求的主机不存在,则发送否定答案和缓存时间(TTL)
3、外部客户端请求非权威答案,比如:
st1想要查询www,但是它没有给ns.ibm.com发送请求反而去请求ns.kernel.org
■ /etc/resolv.conf中
♦ nameserver后面的ip地址一定是可以给本ip进行递归的,不然上不了网
♦ 就像如果运营商的DNS服务器不给我们递归,我们一样上不了网是一样的道理
■ 根和顶级域不会给其他服务器递归
● DNS的主从结构和类型:
■ DNS服务器如果挂了,通过ip地址可以访问,无法通过域名来访问。为了安全,需要不止一台DNS服务器
■ 为了保证两台服务器的数据能够完全同步就需要用到主从结构:
♦ 主DNS服务器:数据修改在此完成,每修改一次数据版本号+1
♦ 辅助DNS服务器:请求数据同步
♠ 辅助DNS不能修改
♠ 如果主DNS挂了,辅助DNS也会跟着挂掉
♠ 数据只能是去请求而不能被推送过来:不能说我没开浏览器,浏览器就自动打开网页
♠ 所以,辅助DNS定时去查看主DNS,比较二者的数据的版本/序列号。由此,我们需要定义:
# 版本/序列号(serial number):
# 查看时间(refresh time):
# 重试时间(retry):上一次查看主DNS没反应
# 过期时间(expire):多长时间内查看主DNS没反应
# 否定答案的缓存时长(nagative ansver TTL):
■ 缓存DNS服务器:不提供权威答案(不接受外部请求),只提供缓存服务
■ 转发器:不缓存,只转发。缓存服务器把缓存功能去了就成了转发器
● DNS
■ DNS服务器是由上级授权,比如ns作为ibm域的DNS便是由.com授权
■ DNS服务器数据库中记录了该域内所有主机的类型
数据库中的每一个条目称作一个资源记录(RR:Resource Record)
■ 资源记录的格式:
NAME [TTL] IN RRT(资源记录类型) VALUE(类型)
www.magedu.com. IN A 1.1.1.1 正向
1.1.1.1 IN PTR(主机名类型) www.magedu.com. 反向
♦ 以上都是资源记录
♦ 如果TTL都相同,可以在全局定义TTL值,此时的TTL就能省略
♦ www.magedu.com.中的.必须写上
■ 资源记录类型:
SOA(Start Of Authority): 起始授权记录,用于标明一个区域内部主从服务器之间如何同步数据以及起始授权对象是谁的
ZONE NAME TTL IN SOA FQDN ADMINISTRATOR_MAILBOX( )
@/magedu.com. 600 IN SOA ns1.magedu.com. admin.magedu.com. (
2013040101;最长不能超过10位
1H
5M
1W
1D )
# SOA必须为第一条,用于标明本区域内多个DNS服务器彼此之间是如何完成数据同步的
# FQDN:起始授权主机一般是主DNS服务器地址
# ADMINISTRATOR_MAILBOX:邮件邮箱地址
邮箱格式:[email protected]>admin.magedu.com
@是有特殊意义的,是一个通配符,用来表示ZONE NAME
# 括号里面的内容为:(serial number refresh retry expire na TTL)写在同一行中括号可以省略
时间单位:MHDW(分时日周),默认是秒
# 分号为注释信息,不再是#,比如:
2013040101 ; serial number换行格式时使用,同一行不方便
NS(Name Server):ZONE NAME(区域名)-->FQDN
magedu.com. 600 IN NS ns.magedu.com.
ns.magedu.com 600 IN A 1.1.1.2
# 任何NS记录都要有A记录与之相随
# FQDN必须要有A记录
# 需要成组出现refresh timerefresh time
MX(Mail eXchanger):ZONE NAME-->FQDN(邮件服务器的名称) 邮件交换器
ZONE NAME TTL IN MX pri(优先级) VALUE
magedu.com. 600 IN MX 10 mail.magedu.com.
mail.magedu.com. 600 IN A 1.1.1.3
# FQDN对应ip地址,而通信也要依赖ip地址,所以任何一个邮件服务器都需要增加一个A记录
# 它有优先级的概念,从0-99,数字越少级别越高
# 多台邮件服务器工作时,首选级别最高的服务器接收邮件,然后才会是次一级
A(address):FQDN-->Ipv4 最常见
AAAA:FQDN-->Ipv6
PTR(pointer):IP-->FQDN
CNAME(Canonical NAME):FQDN-->FQDN 正式名称
www2.magedu.com. IN CNAME www.magedu.com.
表示www2.magedu.com.是www.magedu.com.的别名
TXT
CHAOS
SRV
● 域名解析分为:
正向:FQDN-->IP
反向:IP-->FQDN
● 根域:
■ 根服务器是相当重要的,如果根挂了,网络就会瘫痪
■ 全球一共有13个根服务器
从a.root-server.net-->m.root-server.net
■ 根服务器的内容都是一模一样,所以说:
每一个域为了安全性和稳定性会有多个服务器,每个服务器的内容必须一模一样
● 域和区域:
站在DNS的角度上讲:
域(Domain):是个逻辑概念
区域(Zone):是个物理概念
区域和域没有必然的包含关系,域从上级得到授权,上级是在区域文件中定义
■ 现有主机名:magedu.com. ip网段:192.168.1.0/24,配置其他主机的ip和域名
♦ 首先要获得上级的授权,.com中这样定义:
magedu.com. IN NS ns.mage.com.
ns.magedu.com. IN A 192.168.0.10 说明ns所在的ip
♦ 规划主机:
www 192.168.0.1
mail 192.168.0.2,MX(邮件服务器)
♦ 建立,建立两个区域文件:
♠ 正向区域文件:
magedu.com. IN SOA
www.magedu.com. IN A 192.168.0.1
可以简写为:
www IN A 192.168.0.1
# 简写是一定不能加.但全写时一定要加.
♠ 反向区域文件:
0.168.192.in-addr.arpa. IN SOA
192.168.0.1 IN PTR www.magedu.com.
全写:
1.0.168.192.in-addr.arpa. IN PTR www.magedu.com.
简写:
1 IN PTR www.magedu.com
# 1由于没带点所以会自动补上0.168.192.in-addr.arpa.
# www.magedu.com.一定不能简写,因为简写自动补全的区域名,如果简写为www那结果就是
www.0.168.192.in-addr.arpa.
# 区域文件不能直接写主机名而应该写域名
# 区域文件中无论是正向还是反向第一条一定是SOA,通常第二条记录是ns,接下去正向是A记录,反向是PTR
# 按照规定手动写入
# 反向区域文件一定是跟ip地址相关,所以第一行是网段地址反过来写
# in-addr.arpa.:特定后缀
# 两个区域文件中SOA格式除了区域名称之外其他都可以是相同的
# MX记录只需要定义在正向文件之中
# NS记录可以定义在正反向文件中
# A记录只能定义在正向,PTR只能定义在反向
■ 区域传送:
主从同步时间取决于SOA中的定义,主DNS服务器只要被修改就会通知从DNS服务器进行同步
♠ 区域传送的类型:
完全区域传送(axfr):新增一台从DNS服务器,需要完全复制
增量区域传送(ixfr):主DNS服务器只更新了一条记录,只同步修改的
♠ 区域类型:从服务器不仅可以作为主的从,还可以作为从的从。所以要规定从服务器要去哪同步数据
主区域(master):主DNS服务器
从区域(slave):
提示区域(hint):dns服务器在接到客户端请求的时候得不到正确答案,此时就要定义根的位置,让DNS找根
转发区域(forword):直接告诉客户端所请求主机的位置,不用再去找根
● 配置DNS服务器:
■ 互联网上使用最好多的DNS软件是:BIND
但是BIND不再由伯克利而是由ISC进行维护,dhcp也是由ISC维护
● bind:
[root@localhost ~]# yum list |grep "^bind" bind.i686 32:9.8.2-0.30.rc1.el6_6.1 updates bind-chroot.i686 32:9.8.2-0.30.rc1.el6_6.1 updates bind-devel.i686 32:9.8.2-0.30.rc1.el6_6.1 updates bind-dyndb-ldap.i686 2.3-5.el6 base bind-libs.i686 32:9.8.2-0.30.rc1.el6_6.1 updates bind-sdb.i686 32:9.8.2-0.30.rc1.el6_6.1 updates bind-to-tinydns.i686 0.4.3-15.20140818gitdf0ddc3.el6 bind-utils.i686 32:9.8.2-0.30.rc1.el6_6.1 updates # bind-utils:DNS客户端工具,提供了常用的工具 # bind-libs:提供了程序运行所需库文件 # bind-devel:头文件和库文件,二次开发时需要用到 # bind-chroot:默认bind工作在根下,如果DNS被劫持将会造成安全风险,所以让它工作在假根之下,比如建立 /var/named/chroot/目录,让这个目录称为假根,假根下建立以下named程序运行所需的所有文件: etc/name.conf etc/rdnc.conf sbin/named var/named |
■ 配置文件:
♦ 主配置文件: /etc/named.conf,其中定义了:
BIND进程的工作属性
区域的定义
♦ 额外的:/etc/rndc.key,严格来说这是个密钥文件
rndc(Remote Name Domain Controller):远程控制文件
配置信息:/etc/rndc.conf
♦ 配置文件语法:
完整语句必须用分号结尾
花括号的前后必须有空格(后面没有字符串和分号结尾除外),中间的任何语句都需要分号结尾
♦ 区域的定义:
zone “ZONE NAME” IN {
type {master|slave|hint|forword};
file “区域数据文件路径(可以是相对的)“; # 主区域需定义
file ”区域文件路径”; # 从区域需要定义
masters { 主DNS服务器地址; }; # 从区域需要定义
};
[root@localhost ~]# vim /etc/named.conf options { # 全局选项 listen-on port 53 { 127.0.0.1; }; # 此时只监听本地的,如果想要监听任何外网只需去掉{ 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; # 递归
dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto;
/* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic"; };
logging { # 定义生成和保存日志 channel default_debug { file "data/named.run"; severity dynamic; }; };
zone "." IN { # 定义区域 type hint; file "named.ca"; };
include "/etc/named.rfc1912.zones"; # 包含其他文件 include "/etc/named.root.key";
[root@localhost ~]# vim /etc/named.rfc1912.zones # 打开分片的配置文件 zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; };
zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; };
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; }; };
zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; };
zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; # 都是定义区域的
[root@localhost ~]# cd /var/named [root@localhost named]# ls chroot data dynamic named.ca named.empty named.localhost named.loopback slaves [root@localhost named]# cat named.ca # 此文件中包含13个根节点的地址,有v4地址也有v6的,如果没有此文件可以dig命令生成 … a.root-servers.net. 518400 IN A 198.41.0.4 b.root-servers.net. 518400 IN A 192.228.79.201 c.root-servers.net. 518400 IN A 192.33.4.12 d.root-servers.net. 518400 IN A 199.7.91.13 e.root-servers.net. 518400 IN A 192.203.230.10 f.root-servers.net. 518400 IN A 192.5.5.241 g.root-servers.net. 518400 IN A 192.112.36.4 h.root-servers.net. 518400 IN A 128.63.2.53 i.root-servers.net. 518400 IN A 192.36.148.17 j.root-servers.net. 518400 IN A 192.58.128.30 k.root-servers.net. 518400 IN A 193.0.14.129 l.root-servers.net. 518400 IN A 199.7.83.42 m.root-servers.net. 518400 IN A 202.12.27.33 a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30 c.root-servers.net. 518400 IN AAAA 2001:500:2::c d.root-servers.net. 518400 IN AAAA 2001:500:2d::d f.root-servers.net. 518400 IN AAAA 2001:500:2f::f h.root-servers.net. 518400 IN AAAA 2001:500:1::803f:235 i.root-servers.net. 518400 IN AAAA 2001:7fe::53 j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30 k.root-servers.net. 518400 IN AAAA 2001:7fd::1 l.root-servers.net. 518400 IN AAAA 2001:500:3::42 m.root-servers.net. 518400 IN AAAA 2001:dc3::35 … [root@localhost named]# rpm -ql bind-utils # 查看bind-utils提供了哪些工具 /usr/bin/dig # dig -t NS . @a.root-servers.net.就能显示根节点 /usr/bin/host /usr/bin/nslookup /usr/bin/nsupdate /usr/share/man/man1/dig.1.gz /usr/share/man/man1/host.1.gz /usr/share/man/man1/nslookup.1.gz /usr/share/man/man1/nsupdate.1.gz
[root@localhost named]# cat named.localhost $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 # 为避免DNS服务器配置错误,将localhost解析成一个正常地址 AAAA ::1
[root@localhost named]# cat named.loopback # 用于实现将127.0.0.1解析成localhost,本地主机名的正反向解析 $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 PTR localhost. -----------------------------------手动创建配置文件----------------------------------- [root@localhost named]# mv /etc/named.conf /etc/named.conf.bak # 先备份 [root@localhost named]# ll /etc/named.conf.bak -rw-r-----. 1 root named 1008 7月 19 2010 /etc/named.conf.bak # 组是named,只有named组能读 [root@localhost named]# vim /etc/named.conf
options { directory "/var/named"; };
zone "." IN { # 定义根所在 type hint; # 定义区域文件类型 file "named.ca"; };
zone "localhost" IN { # 正向区域 type master; file "named.localhost"; };
zone "0.0.127.in-addr.arpa" IN { type master; # 没有主服务器不能为从只能为主 file "named.loopback"; }; # 这就是缓存DNS服务器配置
[root@localhost named]# chown root:named /etc/named.conf # 修改属主属组 [root@localhost named]# chmod 640 /etc/named.conf # 修改权限 [root@localhost named]# named-checkconf # 检查配置文件语法 [root@localhost named]# named-checkzone "." /var/named/named.ca # 检查语法 zone ./IN: has 0 SOA records zone ./IN: not loaded due to errors. [root@localhost named]# named-checkzone "localhost" /var/named/named.localhost # 检查语法 zone localhost/IN: loaded serial 0 OK [root@localhost named]# named-checkzone "0.0.127.in-addr.arpa" /var/named/named.loopback # 检查语法 zone 0.0.127.in-addr.arpa/IN: loaded serial 0 OK [root@localhost named]# service named configtest # 可以一个命令搞定 zone localhost/IN: loaded serial 0 zone 0.0.127.in-addr.arpa/IN: loaded serial 0 [root@localhost named]# service named start # 启动DNS服务 Generating /etc/rndc.key: [确定] 启动 named: [确定] [root@localhost named]# tail /var/log/messages # 启动过程中的信息所在文件 Jan 14 20:19:28 localhost named[2439]: automatic empty zone: 9.E.F.IP6.ARPA Jan 14 20:19:28 localhost named[2439]: automatic empty zone: A.E.F.IP6.ARPA Jan 14 20:19:28 localhost named[2439]: automatic empty zone: B.E.F.IP6.ARPA Jan 14 20:19:28 localhost named[2439]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA Jan 14 20:19:28 localhost named[2439]: command channel listening on 127.0.0.1#953 Jan 14 20:19:28 localhost named[2439]: command channel listening on ::1#953 Jan 14 20:19:28 localhost named[2439]: zone 0.0.127.in-addr.arpa/IN: loaded serial 0 Jan 14 20:19:28 localhost named[2439]: zone localhost/IN: loaded serial 0 Jan 14 20:19:28 localhost named[2439]: managed-keys-zone ./IN: loaded serial 0 Jan 14 20:19:28 localhost named[2439]: running # running [root@localhost named]# getenforce # 查看selinux启动状态 Enforcing # 此时为启动状态,应关闭 [root@localhost named]# setenforce 0 # 临时性关闭 [root@localhost named]# getenforce Permissive # 成功 [root@localhost named]# netstat -tulnp # 查看监听的端口,默认监听tcp和udp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1010/php-fpm tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1162/mysqld tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2026/nginx tcp 0 0 192.168.1.102:53 0.0.0.0:* LISTEN 2439/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 2439/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1025/sshd tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 2439/named tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1129/sendmail tcp 0 0 :::22 :::* LISTEN 1025/sshd tcp 0 0 ::1:953 :::* LISTEN 2439/named udp 0 0 192.168.1.102:53 0.0.0.0:* 2439/named udp 0 0 127.0.0.1:53 0.0.0.0:* 2439/named udp 0 0 0.0.0.0:68 0.0.0.0:* 2004/dhclient [root@localhost named]# vim /etc/resolv.conf # 测试能不能解析主机名 nameserver 192.168.1.102 # 改为指向本机地址 [root@localhost named]# dig -t NS . @A.root-servers.net. # 测试是否能找到根的位置,结果可以 [root@localhost named]# ping www.magedu.com # 直接上互联网测试,由于本机不负责解析www.magedu.com,所以去找根,结果可以找到 PING www.magedu.com (122.10.114.6) 56(84) bytes of data. 64 bytes from 122.10.114.6: icmp_seq=1 ttl=51 time=74.1 ms 64 bytes from 122.10.114.6: icmp_seq=2 ttl=52 time=73.7 ms
[root@localhost named]# chkconfig --list named # 查看是否开机启动 named 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭 [root@localhost named]# chkconfig named on [root@localhost named]# chkconfig --list named named 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 ---------------------当前主机可以解析主机名了,缓存服务器就此配置完成--------------------- |
■ bind需要提供区域数据文件:客户端请求查询,DNS需要知道去哪查
区域文件默认是由管理员在/var/named/目录下创建,文件名可以自定义
■ bind安装完成后会生成/etc/rc.d/init.d/named脚本文件,支持命令:
start|stop|restart|status|reload|configtest
其中configtest是检查配置文件语法错误的
■ 二进制程序(命令):named
■ 命令:
named-checkzone
named-checkconf
● 一般而言,先配置成缓存服务器,然后才能成为主DNS服务器,最后才是从
● DNS监听的协议及端口:
53/udp:客户端发起的查询请求,因为udp不需要三次握手速度快得多
53/tcp:从服务器到主服务器那里传输数据的时候,为了保证安全性和机密性
953/tcp,rndc:远程
● DNS服务器能不能指向此主机,取决于此主机能不能给它递归,而这些都需要进行配置
● SOCKET:套接字
♦ IP:PORT
ip+端口,这就是套接字,使客户端通过这样一个机制让两个位于不同主机上的进程进行通信
♦ 服务器端一般都会监听在某个套接字上,作为客户端的访问入口
如果监听在此套接字:172.16.100.1:53就只能接收172.16.100.1的查询请求
如果监听在此套接字:127.0.0.1将无法接收外网的查询请求
如果监听在此套接字:0.0.0.0:53表示所有地址的53号端口都不再监听
♦ 只要能接收客户端请求都应该监听在套接字上
● 配置
■ 域:mageedu.com ip网段:172.16.100.0/24,并且在.com上已经授权给当前主机来解析
■ 规划:
ns 172.16.100.1
www 172.16.100.1,172.16.100.3 有两个地址
mail 172.16.100.2
ftp www 在www主机上,所以是www的别名
■ 定义自己负责的区域,首先实现正向解析:
[root@localhost named]# vim /etc/named.conf # 打开配置文件,新增一个区 zone "mageedu.com" IN { type master; # 此时没有其他主DNS服务器 file "mageedu.com.zone"; # 此文件手动建立,文件名做到见名知意 }; [root@localhost named]# named-checkconf # 检查语法,只能检查语法错误不能检查逻辑错误 [root@localhost named]# service named restart 停止 named:. [确定] 启动 named: Error in named configuration: zone localhost/IN: loaded serial 0 zone 0.0.127.in-addr.arpa/IN: loaded serial 0 zone mageedu.com/IN: loading from master file mageedu.com.zone failed: file not found zone mageedu.com/IN: not loaded due to errors. _default/mageedu.com/IN: file not found [失败] # 文件还没建立报错是必然的 [root@localhost named]# cd /var/named [root@localhost named]# vim mageedu.com.zone # 开始创建区域文件,区域数据文件里面只能存放资源记录 $TTL 600 # 首先定义全局TTL,因为ttl不是一条记录需要使用$引用,声明任何宏的时候需要加$ @ IN SOA ns1.mageedu.com. admin.mageedu.com. ( # @:由于主配置文件中已经定义可以简写为@ 20150117 1H 5M 2D 6H ) IN NS ns1 # ns记录,得先说明这个域的域名服务器是谁,区域名为空白表示和上面相同,ns1为简写会自动补齐为ns1.mageedu.com. IN MX 10 mail # MX记录 ns1 IN A 192.168.1.102 # 为DNS服务器即是本机地址指错了也没关系,不在本机用,真正解析本机DNS服务器的是来自父域中的记录 mail IN A 192.168.1.104 www IN A 192.168.1.102 # 有FQDN就必须要有A记录 www IN A 192.168.1.103 ftp IN CNAME www # 别名不是具体的名字,而是某个名字的别名
[root@localhost named]# chmod 640 mageedu.com.zone [root@localhost named]# chown root:named mageedu.com.zone [root@localhost named]# ll 总用量 36 drwxr-x---. 6 root named 4096 1月 9 08:38 chroot drwxrwx---. 2 named named 4096 12月 12 10:22 data drwxrwx---. 2 named named 4096 12月 12 10:22 dynamic -rw-r-----. 1 root named 408 1月 14 22:01 mageedu.com.zone -rw-r-----. 1 root named 2075 4月 23 2014 named.ca -rw-r-----. 1 root named 152 12月 15 2009 named.empty -rw-r-----. 1 root named 152 6月 21 2007 named.localhost -rw-r-----. 1 root named 168 12月 15 2009 named.loopback drwxrwx---. 2 named named 4096 12月 12 10:22 slaves [root@localhost named]# named-checkzone "mageedu.com" /var/named/mageedu.com.zone # 语法检查 zone mageedu.com/IN: loaded serial 20150117 OK [root@localhost named]# service named restart # 重启完成 停止 named: [确定] 启动 named: [确定] |
● 常用的命令:
■ dig:
dig -t RT(指定资源记录类型) NAME(要查的名称) @IP(DNS服务器)
# -t还可以指定:
axfr:完全区域传送
ixfr:增量区域传送
# @IP:不经过互联网中间环节,直接去此IP查询答案
dig -t NS mageedu.com:查mageedu.com的DNS服务器
+recurse:递归
+norecurse:不递归查询
+trace:追踪查询
反向查询:
dig -x IP:查询ip对应的主机名
[root@localhost ~]# vim /etc/resolv.conf nameserver 192.168.1.102 # 改为本机地址 [root@localhost named]# dig -t A www.mageedu.com # 查询www.mageedu.com的A记录
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> -t A www.mageedu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36682 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION: # 问题 ;www.mageedu.com. IN A
;; ANSWER SECTION: # 回答 www.mageedu.com. 600 IN A 192.168.1.102 www.mageedu.com. 600 IN A 192.168.1.103
;; AUTHORITY SECTION: # 权威段,ns1.mageedu.com.是mageedu.com.的权威DNS服务器 mageedu.com. 600 IN NS ns1.mageedu.com.
;; ADDITIONAL SECTION: # 附加段,任何NS记录都要有A记录与之相随 ns1.mageedu.com. 600 IN A 192.168.1.102
;; Query time: 7 msec ;; SERVER: 192.168.1.102#53(192.168.1.102) ;; WHEN: Thu Jan 15 13:23:55 2015 ;; MSG SIZE rcvd: 99 [root@localhost named]# dig -t A www.mageedu.com # 第二次查询 … ;; ANSWER SECTION: www.mageedu.com. 600 IN A 192.168.1.102 # 192.168.1.102在上,这就是DNS的负载均衡 www.mageedu.com. 600 IN A 192.168.1.103 … [root@localhost named]# dig -t CNAME ftp.mageedu.com # 查询CNAME … ;; ANSWER SECTION: ftp.mageedu.com. 600 IN CNAME www.mageedu.com. … [root@localhost named]# dig -t NS mageedu.com. # 查询mageedu.com.域内DNS服务器 … ;; ANSWER SECTION: mageedu.com. 600 IN NS ns1.mageedu.com.
;; ADDITIONAL SECTION: ns1.mageedu.com. 600 IN A 192.168.1.102 … [root@localhost named]# dig -t MX mageedu.com. # mail和ns对应的名称只能是域,而不是具体的主机 … ;; ANSWER SECTION: mageedu.com. 600 IN MX 10 mail.mageedu.com.
;; AUTHORITY SECTION: mageedu.com. 600 IN NS ns1.mageedu.com.
;; ADDITIONAL SECTION: mail.mageedu.com. 600 IN A 192.168.1.104 ns1.mageedu.com. 600 IN A 192.168.1.102 … [root@localhost named]# dig -t SOA mageedu.com. … ;; ANSWER SECTION: mageedu.com. 600 IN SOA ns1.mageedu.com. admin.mageedu.com. 20150117 3600 300 172800 21600 … |
■ host:
host -t RT NAME:查询名称的解析结果
[root@localhost named]# host -t A www.mageedu.com www.mageedu.com has address 192.168.1.102 www.mageedu.com has address 192.168.1.103 [root@localhost named]# host -t NS mageedu.com mageedu.com name server ns1.mageedu.com. [root@localhost named]# host -t MX mageedu.com mageedu.com mail is handled by 10 mail.mageedu.com. [root@localhost named]# host -t SOA mageedu.com mageedu.com has SOA record ns1.mageedu.com. admin.mageedu.com. 20150117 3600 300 172800 21600 |
■ nslookup:工作在交互式和命令行模式并支持windows
● 配置反向解析:
[root@localhost named]# vim /etc/named.conf # 新增反向区域 zone "1.168.192.in-addr.arpa" IN { type master; # 仍然是主DNS file "192.168.1.zone"; }; [root@localhost named]# cp mageedu.com.zone 192.168.1.zone -p # 以正向文件作为反向文件的模板连同权限一起复制 [root@localhost named]# ll 总用量 40 -rw-r----- 1 root named 413 1月 15 13:53 192.168.1.zone … [root@localhost named]# vim 192.168.1.zone $TTL 600 @ IN SOA ns1.mageedu.com. admin.mageedu.com. ( # SOA保持不变 20150117 1H 5M 2D 6H ) IN NS ns1.mageedu.com. 102 IN PTR ns1.mageedu.com. 102 IN PTR www.mageedu.com. 104 IN PTR mail.mageedu.com. 103 IN PTR www.mageedu.com. # 102都为简写 # 反向区域文件中不需要MX记录 # 别名为正向也不需要 [root@localhost named]# named-checkconf # 检查语法 [root@localhost named]# named-checkzone "1.168.192.in-addr.arpa" 192.168.1.zone # 检查语法 zone 1.168.192.in-addr.arpa/IN: loaded serial 20150117 OK [root@localhost named]# service named restart 停止 named:. [确定] 启动 named: [确定] [root@localhost ~]# dig -x 192.168.1.102 # 测试 … ;; QUESTION SECTION: ;102.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION: 102.1.168.192.in-addr.arpa. 600 IN PTR www.mageedu.com. 102.1.168.192.in-addr.arpa. 600 IN PTR ns1.mageedu.com.
;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 600 IN NS ns1.mageedu.com.
;; ADDITIONAL SECTION: ns1.mageedu.com. 600 IN A 192.168.1.102 … |
● 当我们DNS服务器建立起来后不能随意给其他人进行递归
[root@localhost named]# dig -t A www.qq.com @192.168.1.102 # 通过本机给www.qq.com解析
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> -t A www.qq.com @192.168.1.102 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55346 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
;; QUESTION SECTION: ;www.qq.com. IN A
;; ANSWER SECTION: www.qq.com. 300 IN A 101.226.103.106 www.qq.com. 300 IN A 101.226.129.158
;; AUTHORITY SECTION: www.qq.com. 86400 IN NS ns-tel2.qq.com. www.qq.com. 86400 IN NS ns-tel1.qq.com.
;; ADDITIONAL SECTION: ns-tel2.qq.com. 3600 IN A 183.60.3.202 ns-tel1.qq.com. 600 IN A 101.226.66.18 ns-tel1.qq.com. 600 IN A 182.140.167.155 # 默认是开启递归功能的,因为www.qq.com并不是本DNS负责的域,但还是解析出来了
[root@localhost named]# dig +norecurse -t A www.baidu.com @192.168.1.102 # +norecurse:不开启递归
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> +norecurse -t A www.baidu.com @192.168.1.102 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60778 ;; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 14
;; QUESTION SECTION: ;www.baidu.com. IN A
;; AUTHORITY SECTION: com. 172729 IN NS m.gtld-servers.net. com. 172729 IN NS d.gtld-servers.net. com. 172729 IN NS a.gtld-servers.net. com. 172729 IN NS i.gtld-servers.net. com. 172729 IN NS l.gtld-servers.net. com. 172729 IN NS k.gtld-servers.net. com. 172729 IN NS g.gtld-servers.net. com. 172729 IN NS h.gtld-servers.net. com. 172729 IN NS j.gtld-servers.net. com. 172729 IN NS b.gtld-servers.net. com. 172729 IN NS e.gtld-servers.net. com. 172729 IN NS c.gtld-servers.net. com. 172729 IN NS f.gtld-servers.net.
;; ADDITIONAL SECTION: j.gtld-servers.net. 172729 IN A 192.48.79.30 b.gtld-servers.net. 172729 IN A 192.33.14.30 b.gtld-servers.net. 172729 IN AAAA 2001:503:231d::2:30 g.gtld-servers.net. 172729 IN A 192.42.93.30 m.gtld-servers.net. 172729 IN A 192.55.83.30 l.gtld-servers.net. 172729 IN A 192.41.162.30 c.gtld-servers.net. 172729 IN A 192.26.92.30 h.gtld-servers.net. 172729 IN A 192.54.112.30 a.gtld-servers.net. 172729 IN A 192.5.6.30 a.gtld-servers.net. 172729 IN AAAA 2001:503:a83e::2:30 f.gtld-servers.net. 172729 IN A 192.35.51.30 i.gtld-servers.net. 172729 IN A 192.43.172.30 d.gtld-servers.net. 172729 IN A 192.31.80.30 e.gtld-servers.net. 172729 IN A 192.12.94.30
;; Query time: 3 msec ;; SERVER: 192.168.1.102#53(192.168.1.102) ;; WHEN: Thu Jan 15 15:42:34 2015 ;; MSG SIZE rcvd: 503 # 让我们去找根
[root@localhost named]# dig +norecurse -t A www.baidu.com @a.gtld-servers.net. # 那我们就去找根
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> +norecurse -t A www.baidu.com @a.gtld-servers.net. ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22910 ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 5, ADDITIONAL: 5
;; QUESTION SECTION: ;www.baidu.com. IN A
;; AUTHORITY SECTION: baidu.com. 172800 IN NS dns.baidu.com. baidu.com. 172800 IN NS ns2.baidu.com. baidu.com. 172800 IN NS ns3.baidu.com. baidu.com. 172800 IN NS ns4.baidu.com. baidu.com. 172800 IN NS ns7.baidu.com.
;; ADDITIONAL SECTION: dns.baidu.com. 172800 IN A 202.108.22.220 ns2.baidu.com. 172800 IN A 61.135.165.235 ns3.baidu.com. 172800 IN A 220.181.37.10 ns4.baidu.com. 172800 IN A 220.181.38.10 ns7.baidu.com. 172800 IN A 119.75.219.82 … # 只返回了baidu DNS的结果
[root@localhost named]# dig +norecurse -t A www.baidu.com @dns.baidu.com. # 继续查询 … ;; ANSWER SECTION: www.baidu.com. 1200 IN CNAME www.a.shifen.com.
;; AUTHORITY SECTION: a.shifen.com. 1200 IN NS ns5.a.shifen.com. a.shifen.com. 1200 IN NS ns4.a.shifen.com. a.shifen.com. 1200 IN NS ns1.a.shifen.com. a.shifen.com. 1200 IN NS ns3.a.shifen.com. a.shifen.com. 1200 IN NS ns2.a.shifen.com.
;; ADDITIONAL SECTION: ns1.a.shifen.com. 1200 IN A 61.135.165.224 ns2.a.shifen.com. 1200 IN A 180.149.133.241 ns3.a.shifen.com. 1200 IN A 61.135.162.215 ns4.a.shifen.com. 1200 IN A 115.239.210.176 ns5.a.shifen.com. 1200 IN A 119.75.222.17 # 不递归查询就不会返回正确答案
[root@localhost named]# dig +trace -t A www.baidu.com @192.168.1.102 # 进行追踪
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> +trace -t A www.baidu.com @192.168.1.102 ;; global options: +cmd . 516943 IN NS a.root-servers.net. . 516943 IN NS l.root-servers.net. . 516943 IN NS b.root-servers.net. . 516943 IN NS e.root-servers.net. . 516943 IN NS j.root-servers.net. . 516943 IN NS k.root-servers.net. . 516943 IN NS g.root-servers.net. . 516943 IN NS i.root-servers.net. . 516943 IN NS h.root-servers.net. . 516943 IN NS f.root-servers.net. . 516943 IN NS d.root-servers.net. . 516943 IN NS m.root-servers.net. . 516943 IN NS c.root-servers.net. ;; Received 496 bytes from 192.168.1.102#53(192.168.1.102) in 4367 ms
com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. ;; Received 491 bytes from 192.203.230.10#53(192.203.230.10) in 6377 ms
baidu.com. 172800 IN NS dns.baidu.com. baidu.com. 172800 IN NS ns2.baidu.com. baidu.com. 172800 IN NS ns3.baidu.com. baidu.com. 172800 IN NS ns4.baidu.com. baidu.com. 172800 IN NS ns7.baidu.com. ;; Received 201 bytes from 192.31.80.30#53(192.31.80.30) in 658 ms
www.baidu.com. 1200 IN CNAME www.a.shifen.com. a.shifen.com. 1200 IN NS ns1.a.shifen.com. a.shifen.com. 1200 IN NS ns4.a.shifen.com. a.shifen.com. 1200 IN NS ns5.a.shifen.com. a.shifen.com. 1200 IN NS ns3.a.shifen.com. a.shifen.com. 1200 IN NS ns2.a.shifen.com. ;; Received 228 bytes from 202.108.22.220#53(202.108.22.220) in 73 ms # .-->com.-->baidu.com.-->www.badu.com.
[root@localhost ~]# vim /etc/named.conf # 打开全局配置 options { directory "/var/named"; #recursion yes; # 开启递归,即使不定义默认也是开启的,但是这会给任何人递归,所以注释掉 #allow-query # 只允许某些主机递归,很少使用 allow-recursion { 192.168.1.0/24; }; # 只给此网段的ip递归 };
[root@localhost named]# service named reload 重新载入named: [确定] [root@localhost named]# dig +recurse -t A www.baidu.com @192.168.1.102 # 可以查询答案 … ;; QUESTION SECTION: ;www.baidu.com. IN A
;; ANSWER SECTION: www.baidu.com. 1200 IN CNAME www.a.shifen.com. www.a.shifen.com. 300 IN A 115.239.211.112 www.a.shifen.com. 300 IN A 115.239.210.27 … [root@localhost named]# dig +recurse -t A www.baidu.com @127.0.0.1 # 由于只能给192网段递归导致本机都递归不了 … ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available
[root@localhost named]# dig -t axfr mageedu.com # 列出区域内所有数据,这样能随便列出来是很不安全的
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> -t axfr mageedu.com ;; global options: +cmd mageedu.com. 600 IN SOA ns1.mageedu.com. admin.mageedu.com. 20150117 3600 300 172800 21600 mageedu.com. 600 IN NS ns1.mageedu.com. mageedu.com. 600 IN MX 10 mail.mageedu.com. ftp.mageedu.com. 600 IN CNAME www.mageedu.com. mail.mageedu.com. 600 IN A 192.168.1.104 ns1.mageedu.com. 600 IN A 192.168.1.102 www.mageedu.com. 600 IN A 192.168.1.102 www.mageedu.com. 600 IN A 192.168.1.103 mageedu.com. 600 IN SOA ns1.mageedu.com. admin.mageedu.com. 20150117 3600 300 172800 21600
[root@localhost named]# dig -t IXFR=20150117 mageedu.com # 列出指定版本号相对于当前版本号所做出的改变
|
● 配置区域传送:
■ 区域传送只能允许从服务器进行,其他任何ip都不可以
[root@localhost ~]# vim /etc/named.conf # 打开全局配置 options { directory "/var/named"; allow-recursion { 192.168.1.0/24; }; };
zone "." IN { type hint; file "named.ca"; };
zone "localhost" IN { type master; file "named.localhost"; allow-transfer { none; }; # 因为本机不能作为任何从服务器,allow-transfer可以放在全局配置中 };
zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-transfer { none; }; };
zone "mageedu.com" IN { type master; file "mageedu.com.zone"; allow-transfer { 192.168.1.104; }; # 只允许从服务器 };
zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.zone"; allow-transfer { 192.168.1.104; }; }; [root@localhost named]# named-checkconf [root@localhost named]# service named reload 重新载入named: [确定] [root@localhost named]# dig -t axfr mageedu.com # 由于本机ip并不是192.168.1.104,所以无法查看
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> -t axfr mageedu.com ;; global options: +cmd ; Transfer failed.
[root@localhost ~]# ifconfig # ip为192.168.1.104 eth1 Link encap:Ethernet HWaddr 00:0C:29:3A:03:E7 inet addr:192.168.1.104 Bcast:192.168.1.255 Mask:255.255.255.0 [root@localhost ~]# dig -t axfr mageedu.com @192.168.1.102 # 换ip为192.168.1.104就OK
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> -t axfr mageedu.com @192.168.1.102 ;; global options: +cmd mageedu.com. 600 IN SOA ns1.mageedu.com. admin.mageedu.com. 20150117 3600 300 172800 21600 mageedu.com. 600 IN NS ns1.mageedu.com. mageedu.com. 600 IN MX 10 mail.mageedu.com. ftp.mageedu.com. 600 IN CNAME www.mageedu.com. mail.mageedu.com. 600 IN A 192.168.1.104 ns1.mageedu.com. 600 IN A 192.168.1.102 www.mageedu.com. 600 IN A 192.168.1.102 www.mageedu.com. 600 IN A 192.168.1.103 mageedu.com. 600 IN SOA ns1.mageedu.com. admin.mageedu.com. 20150117 3600 300 172800 21600 |
● 配置从服务器,高亮表示从服务器端
[root@localhost ~]# ifconfig # ip为192.168.1.104,将这台主机配置为从服务器 eth1 Link encap:Ethernet HWaddr 00:0C:29:3A:03:E7 inet addr:192.168.1.104 Bcast:192.168.1.255 Mask:255.255.255.0
[root@localhost ~]# yum install bind-utils bind-libs bind # 安装bind
[root@localhost var]# ll -d named # 从服务器的区域文件不是手动建立而是以named进程去同步主服务器而成的,named进程的属主属组都是named,由于/var/named目录named并不具备写权限,所以同步文件并不能放在此目录下 drwxr-x---. 6 root named 4096 1月 15 20:19 named [root@localhost var]# cd named/ [root@localhost named]# ll 总用量 40 -rw-r----- 1 root named 392 1月 15 14:42 192.168.1.zone drwxr-x---. 6 root named 4096 1月 9 08:38 chroot drwxrwx---. 2 named named 4096 12月 12 10:22 data drwxrwx---. 2 named named 4096 12月 12 10:22 dynamic -rw-r----- 1 root named 413 1月 15 13:53 mageedu.com.zone -rw-r-----. 1 root named 2075 4月 23 2014 named.ca -rw-r-----. 1 root named 152 12月 15 2009 named.empty -rw-r-----. 1 root named 152 6月 21 2007 named.localhost -rw-r-----. 1 root named 168 12月 15 2009 named.loopback drwxrwx---. 2 named named 4096 12月 12 10:22 slaves # 存放此目录中再好不过
[root@localhost ~]# setenforce 0 [root@localhost ~]# mv /etc/named.conf /etc/named.conf.bak [root@localhost ~]# scp 192.168.1.102:/etc/named.conf /etc/ # 从主服务器直接下载作为模板 [email protected]'s password: named.conf
[root@localhost ~]# vim /etc/named.conf options { directory "/var/named"; allow-recursion { 192.16; }; };
zone "." IN { type hint; file "named.ca"; };
zone "localhost" IN { type master; file "named.localhost"; allow-transfer { none; }; };
zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-transfer { none; }; };
zone "mageedu.com" IN { type slave; # 从服务器 file "slaves/mageedu.com.zone"; # 指定文件所在位置 masters { 192.168.1.102; }; # 指定主服务器 allow-transfer { none; }; # 没有设定从的从之前肯定是不允许的 };
zone "1.168.192.in-addr.arpa" IN { type slave; file "slaves/192.168.1.zone"; masters { 192.168.1.102; }; allow-transfer { none; };
[root@localhost ~]# named-checkconf [root@localhost ~]# chgrp named /etc/named.conf [root@localhost ~]# ll !$ ll /etc/named.conf -rw-r-----. 1 root named 717 1月 3 15:16 /etc/named.conf
[root@localhost named]# vim mageedu.com.zone $TTL 600 @ IN SOA ns1.mageedu.com. admin.mageedu.com. ( 2015011701 1H 5M 2D 6H ) IN NS ns1 IN NS ns2 # 将新增的从DNS服务器加入 IN MX 10 mail ns1 IN A 192.168.1.102 ns2 IN A 192.168.1.104 # 任何NS记录都要有A记录与之相随 mail IN A 192.168.1.104 www IN A 192.168.1.102 www IN A 192.168.1.103 ftp IN CNAME www
[root@localhost named]# vim 192.168.1.zone $TTL 600 @ IN SOA ns1.mageedu.com. admin.mageedu.com. ( 2015011701 1H 5M 2D 6H ) IN NS ns1.mageedu.com. IN NS ns2.mageedu.com. # 反区域文件中同样加入 102 IN PTR ns1.mageedu.com. 102 IN PTR www.mageedu.com. 104 IN PTR ns2.mageedu.com. # 反区域文件中同样加入 104 IN PTR mail.mageedu.com. 103 IN PTR www.mageedu.com. [root@localhost named]# service named reload 重新载入named: [确定] [root@localhost ~]# service named start 启动 named: [确定]
[root@localhost named]# tail /var/log/messages Jan 15 20:18:11 localhost named[3532]: client 192.168.1.104#43721: bad zone transfer request: 'megeedu.com/IN': non-authoritative zone (NOTAUTH) Jan 15 20:20:04 localhost named[3532]: client 192.168.1.104#42600: transfer of 'mageedu.com/IN': AXFR started Jan 15 20:20:04 localhost named[3532]: client 192.168.1.104#42600: transfer of 'mageedu.com/IN': AXFR ended Jan 15 20:56:14 localhost dhclient[1355]: DHCPREQUEST on eth0 to 192.168.1.1 port 67 (xid=0xdd28e1) Jan 15 20:56:14 localhost dhclient[1355]: DHCPACK from 192.168.1.1 (xid=0xdd28e1) Jan 15 20:56:16 localhost dhclient[1355]: bound to 192.168.1.102 -- renewal in 3218 seconds. Jan 15 21:27:44 localhost named[3532]: client 192.168.1.104#43665: transfer of 'mageedu.com/IN': AXFR started Jan 15 21:27:44 localhost named[3532]: client 192.168.1.104#43665: transfer of 'mageedu.com/IN': AXFR ended Jan 15 21:27:45 localhost named[3532]: client 192.168.1.104#54698: transfer of '1.168.192.in-addr.arpa/IN': AXFR started Jan 15 21:27:45 localhost named[3532]: client 192.168.1.104#54698: transfer of '1.168.192.in-addr.arpa/IN': AXFR ended
[root@localhost ~]# tail /var/log/messages # 如果同步失败请关闭iptables [root@localhost ~]# cd /var/named/slaves/ [root@localhost slaves]# ls 192.168.1.zone mageedu.com.zone [root@localhost slaves]# cat mageedu.com.zone $ORIGIN . # ORIGIN和TTL可以声明多次,到下次声明之间的区域就是此ORIGIN生效的区域 $TTL 600 ; 10 minutes mageedu.com IN SOA ns1.mageedu.com. admin.mageedu.com. ( 2015011701 ; serial 3600 ; refresh (1 hour) 300 ; retry (5 minutes) 172800 ; expire (2 days) 21600 ; minimum (6 hours) ) NS ns1.mageedu.com. NS ns2.mageedu.com. MX 10 mail.mageedu.com. $ORIGIN mageedu.com. ftp CNAME www mail A 192.168.1.104 ns1 A 192.168.1.102 ns2 A 192.168.1.104 www A 192.168.1.102 A 192.168.1.103 [root@localhost slaves]# cat 192.168.1.zone $ORIGIN . $TTL 600 ; 10 minutes 1.168.192.in-addr.arpa IN SOA ns1.mageedu.com. admin.mageedu.com. ( 2015011701 ; serial 3600 ; refresh (1 hour) 300 ; retry (5 minutes) 172800 ; expire (2 days) 21600 ; minimum (6 hours) ) NS ns1.mageedu.com. NS ns2.mageedu.com. $ORIGIN 1.168.192.in-addr.arpa. 102 PTR ns1.mageedu.com. PTR www.mageedu.com. 103 PTR www.mageedu.com. 104 PTR ns2.mageedu.com. PTR mail.mageedu.com. [root@localhost named]# tail /var/log/messages # 查看日志,一定要习惯看日志 Jan 15 21:27:45 localhost named[3532]: client 192.168.1.104#54698: transfer of '1.168.192.in-addr.arpa/IN': AXFR ended Jan 15 21:45:23 localhost named[3532]: received control channel command 'reload' Jan 15 21:45:23 localhost named[3532]: loading configuration from '/etc/named.conf' Jan 15 21:45:23 localhost named[3532]: using default UDP/IPv4 port range: [1024, 65535] Jan 15 21:45:23 localhost named[3532]: using default UDP/IPv6 port range: [1024, 65535] Jan 15 21:45:23 localhost named[3532]: sizing zone task pool based on 5 zones Jan 15 21:45:23 localhost named[3532]: Warning: 'empty-zones-enable/disable-empty-zone' not set: disabling RFC 1918 empty zones Jan 15 21:45:23 localhost named[3532]: reloading configuration succeeded Jan 15 21:45:23 localhost named[3532]: reloading zones succeeded # 成功 Jan 15 21:45:23 localhost named[3532]: zone mageedu.com/IN: loaded serial 20150118
[root@localhost slaves]# cat mageedu.com.zone $ORIGIN . $TTL 600 ; 10 minutes mageedu.com IN SOA ns1.mageedu.com. admin.mageedu.com. ( 20150118 ; serial 3600 ; refresh (1 hour) 300 ; retry (5 minutes) 172800 ; expire (2 days) 21600 ; minimum (6 hours) ) NS ns1.mageedu.com. NS ns2.mageedu.com. MX 10 mail.mageedu.com. $ORIGIN mageedu.com. ftp CNAME www imap A 192.168.1.105 mail A 192.168.1.104 ns1 A 192.168.1.102 ns2 A 192.168.1.104 www A 192.168.1.102 A 192.168.1.103 [root@localhost slaves]# cat 192.168.1.zone $ORIGIN . $TTL 600 ; 10 minutes 1.168.192.in-addr.arpa IN SOA ns1.mageedu.com. admin.mageedu.com. ( 20150117 ; serial 3600 ; refresh (1 hour) 300 ; retry (5 minutes) 172800 ; expire (2 days) 21600 ; minimum (6 hours) ) NS ns1.mageedu.com. NS ns2.mageedu.com. $ORIGIN 1.168.192.in-addr.arpa. 102 PTR ns1.mageedu.com. PTR www.mageedu.com. 103 PTR www.mageedu.com. 104 PTR ns2.mageedu.com. PTR mail.mageedu.com. 测试增量传送 [root@localhost named]# vim /etc/named.conf $TTL 600 @ IN SOA ns1.mageedu.com. admin.mageedu.com. ( 2015011702 # 版本号+1 1H 5M 2D 6H ) IN NS ns1 IN NS ns2 IN MX 10 mail ns1 IN A 192.168.1.102 ns2 IN A 192.168.1.104 mail IN A 192.168.1.104 www IN A 192.168.1.102 www IN A 192.168.1.103 ftp IN CNAME www imap IN A 192.168.1.105 # 新增一行 [root@localhost ~]# service named reload 重新载入named: [确定] [root@localhost ~]# tail /var/log/messages # 确认增量传送进行完成,可以去从端确认 |
● 主从两个DNS服务器中各有正向反向两个区域文件,ns1是正向的主反向的从,ns2是正向的从反向的主是没有任何问题的
● rndc:远程控制DNS服务器的工具,远程连接一般是不开放的,因为相当危险
■ 首先需要提供一个key文件实现远程控制
[root@localhost ~]# rndc-confgen > /etc/rndc.conf [root@localhost ~]# vim !$ # Start of rndc.conf ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 中间才是key ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ key "rndc-key" { algorithm hmac-md5; secret "/REHC9Bic/s+rA5DEJ1dgw=="; };
options { default-key "rndc-key"; default-server 127.0.0.1; default-port 953; }; ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 中间才是key ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ # End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed: ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 中间需放在name.conf中,并且取消注释 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ # key "rndc-key" { # algorithm hmac-md5; # secret "/REHC9Bic/s+rA5DEJ1dgw=="; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 中间需放在name.conf中,并且取消注释 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ # End of named.conf :.,$-1w >> /etc/named.conf # 追加至/etc/named.conf [root@localhost ~]# vim /etc/named.conf :.,$s/^# //g # 取消注释 [root@localhost ~]# service named restart 停止 named:. [确定] 启动 named: [确定] [root@localhost ~]# rndc -c /etc/rndc.conf status # -c:指定配置文件,不指定也没关系rndc本身就是独立的配置文件 version: 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 CPUs found: 4 worker threads: 4 number of zones: 20 debug level: 0 xfers running: 0 # 是否发生区域传送 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/0/1000 tcp clients: 0/100 server is up and running [root@localhost ~]# rndc -c /etc/rndc.conf notify "mageedu.com" # 通知mageedu.com域 zone notify queued [root@localhost ~]# tail /var/log/messages … Jan 16 07:55:55 localhost named[1582]: zone mageedu.com/IN: sending notifies (serial 2015011702) [root@localhost ~]# rndc -c /etc/rndc.conf flush # 清空缓存 [root@localhost ~]# rndc -c /etc/rndc.conf stop # 服务停止 [root@localhost ~]# rndc stop # 和上面结果相同 [root@localhost ~]# netstat -tunlp # 53端口没了 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1127/php-fpm tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1295/mysqld tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1142/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1235/sendmail tcp 0 0 :::22 :::* LISTEN 1142/sshd [root@localhost ~]# service named start 启动 named: [确定]
---------------------------------------远程控制--------------------------------------- [root@localhost ~]# vim /etc/named.conf controls { inet 192.168.1.102 port 953 # 将ip改为外网地址或者0.0.0.0 allow { 192.168.1.104; } keys { "rndc-key"; }; # 将ip改为远程控制的ip,并且是由rndc-key进行控制 }; [root@localhost ~]# service named restart 停止 named:. [确定] 启动 named: [确定] [root@localhost ~]# netstat -tlnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1127/php-fpm tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1295/mysqld tcp 0 0 192.168.1.102:53 0.0.0.0:* LISTEN 1758/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1758/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1142/sshd tcp 0 0 192.168.1.102:953 0.0.0.0:* LISTEN 1758/named # 端口已启动 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1235/sendmail tcp 0 0 :::22 :::* LISTEN 1142/sshd [root@localhost ~]# scp /etc/rndc.conf 192.168.1.104:/root/ # 将key发送到远程主机,最好不要放在对方/etc/下,以免覆盖其他人 The authenticity of host '192.168.1.104 (192.168.1.104)' can't be established. RSA key fingerprint is e3:62:a9:82:4d:3a:e2:c3:68:8e:60:a1:43:35:7c:c1. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.104' (RSA) to the list of known hosts. [email protected]'s password: rndc.conf 100% 479 0.5KB/s 00:00 [root@localhost ~]# vim rndc.conf # Start of rndc.conf key "rndc-key" { algorithm hmac-md5; secret "/REHC9Bic/s+rA5DEJ1dgw=="; };
options { default-key "rndc-key"; default-server 192.168.1.102 # 改成主DNS ip default-port 953; [root@localhost ~]# rndc -c rndc.conf status # 可以了 |
● 子域授权:
从www.mageedu.com/fin-->www.fin.megeedu.com
■ 正向区域内实现授权:
子域名称 IN NS 子域服务器的名称(子域得有个域名服务器)
子域服务器的名称 IN A IP(子域服务器的)
# 任何ns记录都要有A记录与之相随
♦ 例如:
.com
mageedu.com. IN NS ns1.mageedu.com.
IN NS ns2.megeedu.com
ns1.mageedu.com. IN A 192.168.1.102
ns2.mageedu.com. IN A 192.168.1.104
# 所有DNS服务器都要写进去
mageedu.com
fin.mageedu.com IN NS ns1.fin.mageedu.com.
ns1.fin.mageedu.com. IN A 192.168.1.105(无需和mageedu.com.域在同一个网段,因为.com不可能和mageedu.com在同一网段)
market.mageedu.com IN NS ns1.market.mageedu.com
ns1.market.mageedu.com IN A 192.168.1.110
# 如果只有一台DNS服务器但写了两条DNS的记录,将会造成逻辑错误
[root@localhost named]# vim mageedu.com.zone # 打开主DNS正向文件 2015011702 # 并将版本号+1 fin IN NS ns1.fin # 新增4行 ns1.fin IN A 192.168.1.109
market IN NS ns1.market ns1.market IN A 192.168.1.110 [root@localhost ~]# service named restart 停止 named:. [确定] 启动 named: [确定] [root@localhost slaves]# vim /etc/named.conf # 子域配置
options { directory "/var/named"; };
zone "." IN { type hint; file "named.ca"; };
zone "localhost" IN { type master; file "named.localhost"; allow-transfer { none; }; };
zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-transfer { none; }; };
zone "fin.mageedu.com" IN { # 新增子域 type master; file "fin.mageedu.com.zone"; }; [root@localhost ~]# cd /var/named [root@localhost named]# scp 192.168.1.102:/var/named/mageedu.com.zone . # 直接复制 [root@localhost named]# mv mageedu.com.zone fin.mageedu.com.zone # 更名 [root@localhost named]# chown :named fin.mageedu.com.zone # 更改属组 [root@localhost named]# ll 总用量 32 drwxrwx---. 2 named named 4096 12月 12 10:22 data drwxrwx---. 2 named named 4096 12月 12 10:22 dynamic -rw-r-----. 1 root named 663 1月 4 04:41 fin.mageedu.com.zone …
[root@localhost named]# vim fin.mageedu.com.zone
$TTL 600 @ IN SOA ns1.fin.mageedu.com. admin.fin.mageedu.com. ( 2015011701 1H 5M 2D 6H ) IN NS ns1 IN MX 10 mail ns1 IN A 192.168.1.105 mail IN A 192.168.1.109 www IN A 192.168.1.110
[root@localhost named]# service named restart 停止 named: [确定] 启动 named: [确定] [root@localhost named]# dig -t A www.fin.mageedu.com @192.168.1.105 # 测试 … ;; ANSWER SECTION: www.fin.mageedu.com. 600 IN A 192.168.1.110
;; AUTHORITY SECTION: fin.mageedu.com. 600 IN NS ns1.fin.mageedu.com.
;; ADDITIONAL SECTION: ns1.fin.mageedu.com. 600 IN A 192.168.1.105 … [root@localhost named]# dig -t NS fin.mageedu.com @192.168.1.105 # 测试,NS记录对应域而不是主机名 … ;; ANSWER SECTION: fin.mageedu.com. 600 IN NS ns1.fin.mageedu.com.
;; ADDITIONAL SECTION: ns1.fin.mageedu.com. 600 IN A 192.168.1.105 … [root@localhost ~]# dig -t A ns1.fin.mageedu.com @192.168.1.102 # 在主DNS上测试 … ;; ANSWER SECTION: ns1.fin.mageedu.com. 600 IN A 192.168.1.103 # 木有问题
;; AUTHORITY SECTION: fin.mageedu.com. 600 IN NS ns1.fin.mageedu.com. ------------------------------------定义转发,让子域能知道父域------------------------------------ [root@localhost named]# vim /etc/named.conf options { directory "/var/named"; forward first; # 增加两行转发机制 forwarders { 192.168.1.102; }; };
# forward有两个选项:only|first # only:转发给其他服务器,如果没有结果返回就算了 # first:,先转发如果没有结果返回就去找根 # 设置了转发后,默认除了请求查询自身管理的域内的主机外,其他域的请求一律转走 [root@localhost named]# service named restart 停止 named:. [确定] 启动 named: [确定]
# 如果不是父域自己负责解析的域,子域转发给他意义不大,因为父域找根和自己找根完全一样,所以需要设定只转发查询父域的请求 [root@localhost named]# vim /etc/named.conf options { directory "/var/named"; # 将两行移动到下面 };
zone "mageedu.com" IN { # 新建一个转发域,当要查询mageedu.com域内的请求时 type forward; forward first; forwarders { 192.168.1.102; };, # 转发到此ip }; [root@localhost named]# named-checkconf [root@localhost named]# service named restart 停止 named:. [确定] 启动 named: [确定]
|
● godaddy.com购买域名
● acl:
■ named.conf中的acl就相当于shell中的变量
当允许的客户端太多的话写起来会很麻烦,而且修改起来也很不方便
如 :allow -quert { 192.16.0.0/16; 127.0.0.0/8; 10.0.0.0/8 }
■ 格式:
acl ACL_NAME(列表名称) {
172.16.0.0/16
127.0.0.0/8
};
例如:
acl innet {
172.16.0.0/16
127.0.0.0/8
};
后面引用时:
allow-auery { innet; };
■ named中内置了两个常用的列表:
none:谁都不允许
any:谁都可以
■ acl一般定义在文件的最上头
[root@localhost ~]# vim /etc/named.conf # 打开配置文件 acl innet { # 新增 192.168.1.0/24; 127.0.0.0/8; };
options { directory "/var/named"; allow-recursion { innet; }; notify yes; }; # acl的名称中间有空格的话就用引号引起来 [root@localhost ~]# service named restart # 重启没问题 停止 named:. [确定] 启动 named: [确定] [root@localhost ~]# tail /var/log/messages # 没报错,ok Jan 21 14:50:59 localhost named[2098]: couldn't add command channel 127.0.0.1#953: not found Jan 21 14:50:59 localhost named[2098]: couldn't add command channel ::1#953: not found Jan 21 14:50:59 localhost named[2098]: zone 0.0.127.in-addr.arpa/IN: loaded serial 0 Jan 21 14:50:59 localhost named[2098]: zone 1.168.192.in-addr.arpa/IN: loaded serial 2015011701 Jan 21 14:50:59 localhost named[2098]: zone mageedu.com/IN: loaded serial 2015011708 Jan 21 14:50:59 localhost named[2098]: zone localhost/IN: loaded serial 0 Jan 21 14:50:59 localhost named[2098]: managed-keys-zone ./IN: loaded serial 0 Jan 21 14:50:59 localhost named[2098]: running Jan 21 14:50:59 localhost named[2098]: zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 2015011701) Jan 21 14:50:59 localhost named[2098]: zone mageedu.com/IN: sending notifies (serial 2015011708)
|
● DNS智能解析功能:
# 网站拥有多个DNS服务器时,多个DNS服务器是轮流工作的
# 电信和联通是两个独立的网络,在一个机房有个总接口把它们连接起来了,接口的带宽为100G,这就造成了联通线路和电信线路间的访问速度很慢
# 当一个网站被电信和联通同时访问时,如何将来自电信的请求用电信机房的地址返回呢?
将网站的数据文件分成两个部分,来应付来自两个网络的请求
■ 想要使用DNS智能解析功能要用到视图view
■ view格式:
view VIEW_NAME {
}
# 一旦定义了视图,所有的区域都必须定义在视图中
# 根区域放在DNS服务器递归的view中
# 划分为3个view,一个电信一个联通还有一个是内网,由于我们DNS只给内网递归所以根区域放在内网view中就行
将192.168.1.0/24归类为电信的,其余为联通的
[root@localhost named]# cp /etc/named.conf . # 备份配置文件 [root@localhost named]# vim /etc/named.conf acl innet { 192.168.1.0/24; 127.0.0.0/8; };
options { directory "/var/named"; allow-recursion { innet; }; };
view telecom { # 电信 match-clients { innet; }; # 这样一个视图是用来匹配来自什么地方的客户端的 zone "mageedu.com" IN { type master; file "telecom.mageedu.com.zone"; }; };
view unicom { # 联通 match-clients { any; }; # 除了电信以外的,any:所有,上面view匹配不到的下面的都能匹配到 zone "mageedu.com" IN { type master; file "unicom.mageedu.com.zone"; }; }; [root@localhost named]# named-checkconf [root@localhost ~]# cd /var/named/ [root@localhost named]# vim unicom.mageedu.com.zone $TTL 43200 @ IN SOA ns1.mageedu.com. admin.mageedu.com. ( 2015010001 1H 10M 7D 1D ) IN NS NS1 IN MX 10 mail ns1 IN A 192.168.1.102 mail IN A 192.168.1.103 www IN A 192.168.1.104 [root@localhost named]# chgrp named telecom.mageedu.com.zone [root@localhost named]# chmod 640 telecom.mageedu.com.zone [root@localhost named]# cp telecom.mageedu.com.zone unicom.mageedu.com.zone -p [root@localhost named]# vim unicom.mageedu.com.zone $TTL 43200 @ IN SOA ns1.mageedu.com. admin.mageedu.com. ( 2015010001 1H 10M 7D 1D ) IN NS NS1 IN MX 10 mail ns1 IN A 192.168.1.102 mail IN A 172.16.100.1 www IN A 172.16.100.2 [root@localhost named]# service named restart 停止 named:. [确定] 启动 named: [确定] [root@localhost named]# dig -t A www.mageedu.com @192.168.1.102 # 测试 … ;; ANSWER SECTION: www.mageedu.com. 43200 IN A 192.168.1.104 # 返回的是电信主机的地址,如果是其他网段访问返回的地址是172.16.100.2
;; AUTHORITY SECTION: mageedu.com. 43200 IN NS NS1.mageedu.com.
;; ADDITIONAL SECTION: NS1.mageedu.com. 43200 IN A 192.168.1.102 # DNS应该都是相同的 # 由于没有其他网段的ip地址,做不了实验,但结果不会有什么问题 |
# 192.168.0.254和172.16.0.1在同一台主机上是允许给对方路由数据的
■ 一个DNS服务器可以给多个域提供解析,现在有个a.net域,如何设定a.net域不分开解析呢?
只要将这个域写入两个view中就行,但指向的文件都应该相同
zone "a.net" IN {
type master;
file "a.net.zone";
};
● CDN(Content Delivery Network):
能判断客户端的来源,并且能够返回一个距离客户端最近的服务器的地址
● DNS之所以解析会这么快,是因为服务在启动时会将配置文件的信息全都载入到内存中,解析都是在内存中完成的
# 相应的,配置文件越大,服务重启速度就越慢,但是解析的速度还是一样
# 区域定义的越多配置文件也就越大,人们后来就不再将区域的信息写入配置文件,而是写入数据库中
# 这样的好处是即时修改即时生效,缺点是解析速度慢
# bind-sdb.i686便可以将配置文件信息放入数据库
■ dnspod:中国非常著名的免费DNS提供商
# 自己购买了域名以后,可以将自己的DNS服务器指向dnspod,并在上面留下自己的记录,就能实现智能解析
■ www.dns.la
● DNS日志系统:
[root@localhost named]# vim /etc/named.conf options { directory "/var/named"; allow-recursion { innet; }; querylog yes; # 只需要加入一行,便能够记录日志信息 }; [root@localhost named]# service named restart 停止 named:. [确定] 启动 named: [确定] [root@localhost named]# dig -t A www.mageedu.com @192.168.1.102 # 使用其他ip进行访问 [root@localhost named]# tail /var/log/messages # 查看日志 …Jan 21 17:31:11 localhost named[2374]: client 192.168.1.103#42847: view telecom: query: www.mageedu.com IN A + (192.168.1.102) # 详细说明,但如果记录的信息太多会非常麻烦 |
■ bind提供了很有弹性的日志系统,日志系统又分为两个子系统:
♦ channel:定义日志保存位置,一般有两个位置
♠ syslog:/var/log/message,syslog是分级别的
♠ file:自定义保存日志信息的文件,也应该定义日志级别
critical
error
warning
notice
info
debug[level]
dynamic(动态级别)
# debug和dynamic是bind独有的级别,bind的debug和syslog的不同,bind的debug是有级别的,级别数字越大,信息越详细
# 默认是info级别
♦ category:产生日志的日志源,可以通过category自定义日志源
日志源总共有15个,不能自定义其他的日志源
default:为所有category定义默认channel
general:普通的
client:客户端相关
config:配置文件中产生的问题
dispatch:
dnssec:
lame-servers:
network:跟网络相关的
notify:跟通知相关
queries:查询相关的
resolver:
security:拒绝查询请求
update:
xfer-in:作为从服务器来讲,别人传进来的信息
xfer-out:传出的信息
一个category可以定义到多个channel,但一个channel只能属于一个category
■ 格式:
logging {
channel my_file { # 定义保存位置和名字
file “log.msgs” versions 3 size 10k; # 类型是file文件名为log.msgs,一旦文件超过10k就滚动,保存3个版本
severity dynamic; # 日志级别
};
channel my_syslog {
syslog local0; # 需自定义local0保存的位置
severity info; # info及info级别以上
};
category xfer-in { my_file; } # 和xfer-in相关的信息保存至定义的文件中
category update { my_syslog; }
};
[root@localhost ~]# vim /etc/named.conf … options { directory "/var/named"; allow-recursion { innet; }; querylog yes; # 将此行删除 };
logging { channel querylog { file "/var/log/named/bind_query.log" versions 5 size 10M; severity dynamic; print-category yes; print-time yes; print-severity yes; };
category queries { querylog; }; }; [root@localhost ~]# mkdir /var/log/named [root@localhost ~]# chown named:named !$ chown named:named /var/log/named [root@localhost ~]# chmod 770 !$ chmod 770 /var/log/named [root@localhost ~]# vim /etc/named.conf [root@localhost ~]# service named restart 停止 named:. [确定] 启动 named: [确定] [root@localhost ~]# dig -t A www.mageedu.com @192.168.1.102 # 查询一下 |
● queryperf:dns服务器进行压力测试,查询日志对于测试的影响是相当大的
● named.conf中//为注释一行 ,/*-->*/为注释多行
● DHCP(Dynamic Host Configuration Protocol)它的前身是bootp