DNS
: 表示的是Domain Name Service
,表示域名解析服务,www.baidu.com
表示的是一个主机名FQDN:Full Qualified Domain Name
:表示的是完全限定域名;DNS
是用于实现名称解析的过程,这个转换的过程涉及到查询的过程,查询依赖的是数据库,用于实现FQDN-->IP
的转换,双向转换是通过不同的机制来实现的,用于实现转换的是通过两个库来实现的,这两个库为libnss_files.so
以及libnss_dns.so
,借助于nsswitch.conf
配置文件来实现名称解析的机制;hosts: files dns
:表示的含义就是通过调用libnss_files.so
以及调用libnss_dns.so
来实现域名解析的;/etc/hosts
里面的书写格式IPADDR FQDN ALIAS
172.16.0.1 www.**.com. **.com
表示的含义分别是IP
地址,主机名以及主机别名;
IANA
:表示的互联网地址分配机构,用于管理顶级域名ICANN
;
对于分布式域名的服务器来说,下级是不知道上级存在的,但是上级是知道下级存在的,但是每一个都知道根所在的位置,对于根域来说只需要维护和顶级域名的关系就可以了;
根域:是用来进行自引用的,是抽象的顶层存在;
顶级域:是根域的直接下级,常见的顶级域名一共是13
个,包括.net .org .com .gov .edu
,顶级域包括三类:组织域.com .org .net .cc
,国家域:.cn .tw hk
反向域:是用于实现将IP--->FQDN
;对于顶级域是交给对应的组织来进行管理的;
为了防止网络中大量的流量是用来时进行名称解析,通常存在一个本地的域名解析服务器,用于缓存已经解析过的名称,对于本地的NS
来说都是不知道上级所在的位置的,但是知道根所在的位置,对于本地的NS
会直接查找根域查询根域所在的服务器,
对于解析的方式来说存在两种:
A<-->B<-->C
,对于这种方式,根是不会给任何服务器进行递归的;A-->B A<-->C
;对于名称解析的过程:对于用户主机来说整个过程是递归的,但是对于NS
来说,这个过程是迭代的;对于迭代过程以及从缓冲返回答案的过程都是非权威的; 对于服务器来说,不仅仅应该返回最终答案,还应该返回超时时间;
域名解析最终都是两个ns
之间来进行解析的;
对于查找的模型:
对于外部请求的权威答案[也就是请求的结果在ns管理范围内]
,那么返回的就是一个全为答案,如果请求的是非权威答案,那么根据自己内部指定的策略,来决定是否对于这种请求进行响应;
通常来说,一个ns
可以为多个域来提供域名解析;,在查询的过程中.com
是一个域,同样的在这个域里面存在的是一个ns
服务器,有这个ns
服务器来管理这个域,对于域名解析的每一个层级来说,都是需要维护一个数据库,来记录自己管理的域里面的信息的;维护这些数据的数据库就是授权数据库;
对于FQDN<--->IP
的对应关系来说,是不存在一一对应的关系的,可以多对多,并且可以利用一个FQDN
和多个IP
的对应关系可以实现负载均衡;
对于根和定义域查询的过程都是迭代的,不允许为任何主机递归;
本地请求域名解析的服务是stub resolve
,通过配置文件/etc/resolve.conf
来定义ns
服务器的位置,这里面写入的IP
不能够是根域以及顶级域的IP
地址;
根域名服务器:全球一共存在13
台, 称为root server
,对于根域名服务器中的数据是需要实时保持一致的;
对于每一个域的ns
服务器,都是一主多从的架构,主服务器主要是用于进行修改操作,从服务器主要是用于查询操作,这种称为主 DNS
服务器,同时还存在辅助DNS
服务器;对于主DNS
服务器来说应该在数据更新之后,通知从服务器进行拉取操作;对于主DNS
服务器出现故障,那么在一段时间从DNS
会查询状态,如果一直故障,就会停止工作;
对于主从之间的同步是通过版本号来完成的,如果主DNS
服务器更新数据,那么从版本的服务器就会将数据+1
,从服务器比较版本好不一致,就会进行数据的同步;
serial number 数据库版本号
refresh 数据同步更新时间
retry 再次尝试时间
expire 过期时间
nagetive answer TTL 否定答案的缓存时间
缓存DNS
服务器;[Resoure Record] RR
,资源记录的格式NAME TTL(时长) IN(表明是互联网) RRT(资源记录类型) VALUE(数据)
www.lixun.com. IN A 1.1.1.1
1.1.1.1 IN PTR www.lixun.com.
SOA:start Of Authority
:起始授权记录,必须是第一个记录,用于标识一个区域里面,主从服务器之间如何同步数据以及起始授权对象是谁;Zone Name TTL IN SOA FQDN Admin_Mail(
serial number
refresh
retry
expire
na ttl)
lixun.com. 600 IN SOA ns1.lixun.com. admin.lixun.com. (
2018081501;最长为10位
1H
5M
1W
1D)
时间单位:M(分钟),H(小时),D(天),W(周)
,默认单位是秒钟;
邮箱格式:[email protected] ---> admin.lixun.com
NS[Name Server]
:用于实现Zone Name --> FQDN
,例如;
lixun.com 600 IN NS ns.lixun.com
ns.lixun.com 600 IN A 1.1.1.2
//这两个记录是需要成组出现的
A:[address]
:从FQDN-->IPv4
称为A
记录;AAAA:[address]
:表示从 FQDN-->IPv6
记录;PTR:[pointer]
:表示的是实现从IP-->FQDN
的解析记录;MX:[Mail eXchanger]
:表示的是Zone Name --> FQDN
,用于解析邮件服务器,邮件服务器是存在优先级的概念的;Zone Name TTL IN MX Pri Value
lixun.com. 600 IN MX 10[优先级0-->99] mail.lixun.com.
mail.lixun.com. 600 IN A 1.1.1.2
CNAME[Cabinical Name正式名称]
:是用于实现从FQDN-->FQDN
的,用于指定别名记录;www2.lixun.com. IN CNAME www.lixun.com.
0.168.192.in-addr.arpa. IN SOA
1.0.168.192.in-addr.arpa. IN PTR www.lixun.com. //不能够简写
DNS
服务器和从DNS
服务器进行数据同步的类型包括两种:
axfr
从DNS
服务器的数据是全新的,需要进行完全同步;ixfr
在同步的过程中,只同步发生改变的数据;master
slave
hint
,可以通过定义提示区域,来指定根服务器的地址;*.com
,如果知道.com
的ns
服务器的地址,就在提示区域里面定义,直接查询.com
的ns
服务器,不用借助于查找根域名服务器;负责解析的域名:lixun.com
负责解析的网段地址:172.15.23.0/24
ns的地址为:172.25.23.1
web服务器的地址为:172.25.23.1 172.25.23.3
mail服务器的地址为:172.25.23.2
ftp 使用www主机的别名
通过bind
来实现关于上述规划的实现
bind
软件的相关信息
/etc/named.conf
:是主要的配置文件,BIND
进程的工作属性,区域的工作属性,区域的定义;/etc/rndc.key
:Remote Name Domain Controller
,表示远程控制工具,这只是远程工作的一个秘钥文件,bind
主要使用的是/etc/rndc.conf
文件;/var/named/
目录底下,区域数据文件需要自己去创建,可以自命名;/etc/rc.d/init.d/named
:是一个服务控制脚本,可以直接使用,支持的命令包含 configtest
用于测试语法是否出错;named
;bind-chroot
:用于切换根,默认情况下,运行于根目录下,为了安全起见需要伪造一个根目录提供给named
进程使用,这样即使named
进程被劫持,系统任然是安全的,这里不适用伪根目录;/etc/named.conf
:options
是全局选项是对全局生效的,logging
是定义日志的相关信息的,zone
是用来定义区域的,其中会包含其他文件;/etc/named.rfc1912.conf
:这里面都是区域文件;/var/named/named.ca
:这里面都是13
个根节点服务器的地址,可以手动生成/usr/bin/dig
;/var/named/named.localhost
:用于专门将localhost
解析为本机的正反解析;
DNS
:
53/udp
, 53/tcp
协议,客户端的查询使用的udp
,主从之间同步数据时使用的是tcp
协议;同时rndc
监听的是953
端口的tcp
,和rndc
端口;使用0.0.0.0:53
号端口便是所有的主机都会进行监听;所以一般使用这种格式;也可以省略地址不写;directory
:表示数据文件目录,这个很重要;rescursion
:表示是否进行递归,权限是root
用户named
组;allow-query
:表示允许那个主机进行查询;allow-transfer
:用于指定那个主机可以进行区域传送,这是为了安全进行的设置;notify
:表示启用通知功能;配置文件/etc/named.conf
的说明
options { //全局选项,对于每一个zone生效
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; }; //表示允许那些主机进行查询
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes; //表示是否进行递归查询
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
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";
;
结尾,在{}
前后必须有空格;options {
directory “/varnamed”
};
zone “ZONE_NAME” IN {
type {master | slave |Hint| forward}
}
Zone “0.0.127.in-addr.arpa” IN {
type master;;
filename “named.loopback”;
}
file "区域数据文件" IN {
master {master;}
};
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";
};
[root@lixun etc]# chown root:named /etc/named.conf
[root@lixun etc]# chmod 640 /etc/named.conf
[root@lixun etc]# named-checkconf
zone "lixun.com" IN {
type master;
file "lixun.com.zone";
};
lixun.com.zone
$TTL 600
lixun.com. IN SOA ns1.lixun.com. admin.lixun.com. (
2018081501
1H
4M
2D
6H)
IN NS ns1
IN MX 10 mail
ns1 IN A 172.25.23.1
mail IN A 172.25.23.1
www IN A 172.25.23.1
www IN A 172.25.23.2
ftp IN CNAME www
[root@lixun etc]# chown root:named /var/named/lixun.com.zone
[root@lixun etc]# chmod 640 /var/named/lixun.com.zone
zone "23.25.172.in-addr.arpa" IN {
type master;
file "172.25.23.zone";
};
[root@lixun etc]# cp /var/named/lixun.com.zone /var/named/172.25.23.zone -p
$TTL 600
@ IN SOA ns1.lixun.com. admin.lixun.com. (
2018081501
1H
4M
2D
6H)
IN NS ns1.lixun.com.
1 IN PTR ns1.lixun.com.
1 IN PTR www.lixun.com.
2 IN PTR mail.lixun.com.
3 IN PTR www.lixun.com.
[root@lixun named]# named-checkzone "23.25.172.in-addr.arpa" 172.25.23.zone
zone 23.25.172.in-addr.arpa/IN: loaded serial 2018081501
OK
systemctl restart named
*.lixun.com. IN A 172.25.23.3 //用于确保用户再输入错误的情况下,可以得到一个页面;
options {
directory "/var/named/";
allow-recursion { 172.25.23.0/24; }; //表示只给这个网段进行递归
};
[root@lixun named]# dig +trace -t A www.qq.com @127.0.0.1
; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> +trace -t A www.qq.com @127.0.0.1
;; global options: +cmd
. 517280 IN NS j.root-servers.net.
. 517280 IN NS m.root-servers.net.
. 517280 IN NS l.root-servers.net.
. 517280 IN NS e.root-servers.net.
. 517280 IN NS d.root-servers.net.
. 517280 IN NS k.root-servers.net.
. 517280 IN NS a.root-servers.net.
. 517280 IN NS c.root-servers.net.
. 517280 IN NS g.root-servers.net.
. 517280 IN NS b.root-servers.net.
. 517280 IN NS f.root-servers.net.
. 517280 IN NS i.root-servers.net.
. 517280 IN NS h.root-servers.net.
. 518360 IN RRSIG NS 8 0 518400 20180828050000 20180815040000 41656 . mHsJgO/MPvKYjdZ88qrTf9db72xwMEQPm5+PrtjcV5TVIDzVYYM0k3th PgNhdByW9zljyZV44g9XdsJLf0BTrF1/i1b8KRPk/F60r+0r3rW3eNQ3 bT8xE+qljkZy0/bBBgKRii1JT1yOEY4HlzKXq1pKt6LQVfZfPL6B7c6w QCo3NG5sPEuhmjqT+PhN0pM0ZK+siHNyyFwpagIsHFjZvtPYqOBMGdVc NBHuW7kGNjzcx0RDX422iIEeRZmxm8+Wdn//9uPVaiVPeFyiFWlLcFah lyE6uymhSdyPr3Uh5ri606/I64Q/+jk17K2yac9yTSeL4BGDeYbpgi/i ZGN7Ug==
;; Received 1097 bytes from 127.0.0.1#53(127.0.0.1) in 3 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.
com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com. 86400 IN RRSIG DS 8 1 86400 20180828050000 20180815040000 41656 . TB5BzFBRkI5DtohvrrxsoKtko1yfnPkaE2qRD2vSJ/ZKhAWfGDFm0ovI R62+HlVe+XS5JVhqWEkMJ9JxklvrMRciKnmPFIbAXxd6Jj3PU6a32rxn n1J2rP8iLTr+74fwmNgnz6CTiJS1OexGeDoXbNt1PHdR+/1zTQovt9Zw 8UmEFl69+2qrwG1n5JZm6Jbi+2iKVkFdd00iSqmLZz0PWOThCmfeQ/Sh pl2lMGxPgwd73dGehDg/vCgW60LLkev4NpHibxqkF+tNcetf+/pPINk4 LNguOe5fSEVFFGS0MTQKJqIYh2amEOpLskPoq3assodTifr94mtOOJqQ yDsVJQ==
;; Received 1170 bytes from 193.0.14.129#53(k.root-servers.net) in 226 ms
qq.com. 172800 IN NS ns1.qq.com.
qq.com. 172800 IN NS ns2.qq.com.
qq.com. 172800 IN NS ns3.qq.com.
qq.com. 172800 IN NS ns4.qq.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20180820044557 20180813033557 46475 com. cTxZP9z7uYuaBI0fbLH3nPSOzDcxOEvnBjtzaumObV/iZY3apUNIf0hm BQ7UXVnQ832Uo0ceKtnkrt8OMyPVB5K+VTygONbJh5ANYkFKc4W8P97D toy5KgxctiyDVssrbBtU3v3sGfJuM10jiGA7IjtxI0LMHsH7kQBQMuC8 kmA=
J97567G9DNF0C32H8NOSB0GCO4QCQMHJ.com. 86400 IN NSEC3 1 1 0 - J976TGIABNDMDDT91K24Q2V3GFDKKDGK NS DS RRSIG
J97567G9DNF0C32H8NOSB0GCO4QCQMHJ.com. 86400 IN RRSIG NSEC3 8 2 86400 20180819043725 20180812032725 46475 com. a0aaa2DoHX8FL2W0oq4NMoD0Rd1p9Y1YKnYON6rh8vEIWir+8ODTjJyB IKlI4hRUw5R0jJQimNZnJxMlyH00epfiiHg4jIPvROlxUqkKRJtxd4nV XirVYdvS2Nozma22lh1IQY6yngMZQJHqM+eNPukNtPYC8w5TJgI1fI/z wn8=
;; Received 724 bytes from 192.55.83.30#53(m.gtld-servers.net) in 212 ms
www.qq.com. 86400 IN NS ns-os1.qq.com.
www.qq.com. 86400 IN NS ns-cmn1.qq.com.
www.qq.com. 86400 IN NS ns-tel1.qq.com.
www.qq.com. 86400 IN NS ns-cnc1.qq.com.
;; Received 302 bytes from 58.144.154.100#53(ns3.qq.com) in 29 ms
www.qq.com. 300 IN A 180.163.26.39
;; Received 55 bytes from 111.161.107.195#53(ns-cnc1.qq.com) in 37 ms
allow-query { 172.25.23.0/24; };
options {
directory "/var/named/";
allow-recursion { 172.16.0.0/24; };
allow-transfer { 172.25.23.0/24 };
};
如果是在某个区域里面定义,表示限定范围为某个区域,否则就是对于全局生效的
配置一个从DNS
服务器的过程:
options {
directory "/var/named/";
allow-recursion { 172.16.0.0/24; };
};
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";
};
zone "lixun.com" IN {
type slave;
file "slaves/lixun.com.zone";
masters { 172.25.23.1; };
allow-transfer { none };
};
zone "23.25.172.in-addr.arpa" IN {
type slave;
file "slaves/172.25.23.zone";
master { 172.25.23.1 };
};
DNS
的配置如下options {
directory "/var/named/";
allow-recursion { 172.16.0.0/24; };
};
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";
};
zone "lixun.com" IN {
type master;
file "lixun.com.zone";
allow-transfer { 172.25.23.2 };
};
zone "23.25.172.in-addr.arpa" IN {
type master;
file "172.25.23.zone";
allow-transfer { 172.25.23.2 };
};
DNS
服务器了,所以需要说明这个位置$TTL 600
lixun.com. IN SOA ns1.lixun.com. admin.lixun.com. (
2018081501
1H
4M
2D
6H)
IN NS ns1
IN NS ns2
IN MX 10 mail
ns1 IN A 172.25.23.1
ns2 IN A 172.25.23.2
mail IN A 172.25.23.1
www IN A 172.25.23.1
www IN A 172.25.23.2
ftp IN CNAME www
DNS
子域授权的相关知识SUB_ZONE_NAME IN NS NSserver_Zone_Name
NSserver_Zone_Name IN A IP
fin.lixun.com. IN NS ns1.fin.lixun.com.
ns1.fin.lixun.com. IN A 172.25.23.100
market.lixun.com. IN NS ns1.marker.lixun.com.
ns1.market.lixun.com. IN A 172.25.23.200
添加:
fin IN NS ns1.fin
ns1.fin IN A 172.25.23.100
market IN NS ns1.market
ns2.market IN A 172.25.23.200
$TTL 86400
@ IN SOA ns1.fin.lixun.com. admin.fin.lixun.com. (
2018081501
2H
10M
7D
2D
)
IN NS ns1
IN MX 10 mail
ns1 IN A 172.25.23.100
mail IN A 172.25.23.101
www IN A 172.25.23.102
$TTL 86400
@ IN SOA ns1.market.lixun.com. admin.market.lixun.com. (
2018081501
2H
10M
7D
2D
)
IN NS ns1
IN MX 10 mail
ns1 IN A 172.25.23.200
mail IN A 172.25.23.201
www IN A 172.25.23.202
forward
的两种方式:
only
:对于请求只进行转发,并且要求一定要得到结果,否则就会出错;first
:首先将请求进行转发,如果得不到结果,就自己查找根域;options {
directory "/var/named/";
forward first;
forwarders { 172.25.23.1 }; //可以将子域查找不到的请求转发到父域;
};
对于请求的不是自己负责的子域的请求就进行转发,如果只需要对某个域进行转发,就需要在域里面定义转发选项,通常建议这种选项;
DNS
的ACL
的定义:
acl innet {
172.25.23.0/24;
172.25.25.0/24;
};
DNS
智能响应的过程view VIEW_NAME {
};
acl telecom {
172.25.23.0/24;
};
acl unicom {
192.168.10.0/24;
};
options {
directory "/var/named/";
allow-recursion { 172.16.0.0/24; };
};
view telecom {
match-clients { telecom };
zone "lixun.com" IN {
type master;
file "telecom.lixun.com.zone";
};
};
view unioncom {
match-clients { unicom };
zone "lixun.com" IN {
type master;
file "unicom.lixun.com.zone";
};
};
view other {
match-clients { any };
zone "lixun.com" IN {
type master;
file "other.lixun.com.zone";
};
};
IP
地址,一个是telecom
$TTL 600
lixun.com. IN SOA ns1.lixun.com. admin.lixun.com. (
2018081501
1H
4M
2D
6H)
IN NS ns1
IN NS ns2
IN MX 10 mail
ns1 IN A 172.25.23.1
mail IN A 172.25.23.1
www IN A 172.25.23.1
www IN A 172.25.23.2
ftp IN CNAME www
union
的配置$TTL 600
lixun.com. IN SOA ns1.lixun.com. admin.lixun.com. (
2018081501
1H
4M
2D
6H)
IN NS ns1
IN MX 10 mail
ns1 IN A 192.168.23.1
mail IN A 192.168.23.2
www IN A 192.168.23.3
www IN A 192.168.23.1
ftp IN CNAME www
other
的定义如下:$TTL 600
lixun.com. IN SOA ns1.lixun.com. admin.lixun.com. (
2018081501
1H
4M
2D
6H)
IN NS ns1
IN MX 10 mail
ns1 IN A 172.25.23.1
mail IN A 172.25.23.1
www IN A 172.25.23.1
www IN A 172.25.23.2
ftp IN CNAME www
IP
地址;querylog yes;
:表示打开记录日志的功能,可以通过category
来自定义日志的来源,channel
用于定义日志应该记录在哪里;