DNS(Domain Name System):域名解析系统
DNS port:53 protocol:tcp
在早期,没有DNS服务器提供解析域名时,可以通过hosts文件来解析域名,hosts需手动配置,及其麻烦,文件 非常臃肿。
在Linux中hosts文件位置 :/etc/hosts
DNS工作原理(访问网站的流程)
Server Client
客户端向服务端请求解析服务
1. client先查询本地hosts文件,如果本地hosts有目标域名、IP,直接去访问。反之,
2. 将请求交给指定的DNS服务器请求解析,DNS服务器查询本地解析库,查询到对应的IP和域名后,直接返回给客户端,客户端在去访问。
正向解析:将域名解析为IP地址 (可以通过域名访问服务器【web】)
反向解析:将IP地址解析为域名(可以通过IP地址访问服务器【web】)
nslookup:Linux中的解析工具,可以得到域名和IP地址。
FQDN=www.baidu.com?
一级域名又称为顶级域:.com .edu .org .mil .net .top .gov
.com:表示商业机构 .edu:教育机构 .org:非营利组织
.mil:军方 .net:网络服务机构 .gov:政府机构 .top:高端,顶级,事业突破。国际通用域名
.:这个点代表根服务.
二级域名:baidu.com *.net *.gov .....
注:以.com结尾的域名都会去.com服务器查询,.net结尾的会去.net服务器查询,一 一对应。。。。其它的也相同.
这样可以提高访问速度
国家域:.cn、.hk、.tw、.us、.jp、.ir、.uk
反向域:.in-addr.arpa
www:这代表主机名。
综上介绍得出 www.baidu.com 叫做 FQDN(由主机名【www】和域名组成【baidu.com】).
DNS查询方式
举例:以客户端向163.com请求解析DNS为例
递归查询:产生在网络客户端和本地DNS服务器:A——>B B——>A ,网络客户端向本地DNS发起解析请求,在本地库查询到后,直接返回给网络客户端。
迭代查询:产生在根服务器间的查询 A——>B B——>C C——>B B——>D D——>B B——>E E——>B B——>A ,网络客户端向本地DNS
发起解析请求,本地DNS查询后没有找到匹配目标A——>B,将请求转发到.根服务器 B——>C ,根服务器查询本地解析库,没有匹配到目标,但帮本地DNS指路,
告诉它往哪个方向去寻找 C——>B,本地DNS按照提示的路去向.com域名服务器请求解析B——>D,.com域名服务器也没有查询到,又将路指向163.com域名服务
器D——>B,本地DNS服务器又向163.com发起解析请求B——>E,163.com域名服务器在本地解析库查询到结果,将结果返回到本地DNS服务器E——>B,
最后又将结果返回到网络客户端B——>A。
DNS的分类:
主DNS服务器:就是一台存储着原始资料的DNS服务器。
从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器。也成辅助DNS服务器。
缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。
转发器:这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。
搭建主从DNS步骤
要求:B同步到A的数据
主DNS(A) 备(从也称为备)DNS(B)
A有什么数据,B就会同步A的数据,当A挂机后,B会成为主DNS。(B没有权限,只会同步A,所以只能在A上配置指令,因为B只会同步!)
主DNS配置
1、安装DNS服务(yum源为本地挂载)
yum -y install bind (这是DNS的主服务)
yum -y install bind-utils (DNS工具,如 nslookup)
2、修改配置文件/etc/named.conf
vi /etc/named.conf
主DNS配置文件内容如下:
options {
listen-on port 53 { 192.168.10.10; }; //主服务IP地址
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 { 192.168.10.0/24; }; //允许访问DNS服务器的网段
recursion no; //yes代表当前服务器为缓存服务器(权威服务器),no代表当前为主服务器(非权威)
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
zone "yadong.com" IN { //正向解析
type master; //master、slave、hide
file "yadong.front"; //指定区域数据文件
allow-transfer { 192.168.10.11; }; //允许同步的从服务器地址
};
zone "10.168.192.in-addr.arpa" IN { //反向解析
type master;
file "yadong.verso"; //指定区域数据文件
allow-transfer { 192.168.10.11; };
};
编辑 区域数据文件/var/named/ (对应主配置文件设置的路径)
创建对应的 区域数据文件:touch yadong.front yadong.verso
编辑正向解析库:vi /var/named/yadong.front
$TTL 1D
@ IN SOA yadong.com. admin.yadong.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.yadong.com.
www IN A 192.168.10.2
mail IN A 192.168.10.3
ns1 IN A 192.168.10.4
ftp IN cname www
编辑反向解析库:vi /var/named/yadong.verso
$TTL 1D
@ IN SOA yadong.com. admin.yadong.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.yadong.com.
2 IN PTR www.yadong.com.
3 IN PTR mail.yadong.com.
4 IN PTR ns1.yadong.com.
3、启动服务
systemctl start named
主DNS搭建完毕
从DNS配置
1、安装DNS服务(yum源为本地挂载)
yum -y install bind (这是DNS的主服务)
yum -y install bind-utils (DNS工具,如 nslookup)
2、修改配置文件/etc/named.conf
vi /etc/named.conf
从DNS配置文件内容如下:
options {
listen-on port 53 { 192.168.10.11; };
directory "/var/named/slaves";
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 { 192.168.10.0/24; };
recursion no;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
zone "yadong.com" IN {
type slave;
file "yadong.front";
masters { 192.168.10.10; };
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
file "yadong.verso";
masters { 192.168.10.10; };
};
3、启动服务(等待同步)
systemctl start named
从DNS搭建完毕
4、验证是否同步成功:ls /var/named/slaves
yadong.front yadong.verso
5、测试(测试前需要指定解析的DNS服务器echo "nameserver 192.168.10.10" >> /etc/resolv.conf)
正向解析
[root@localhost /]# nslookup www.yadong.com
Server: 192.168.10.11
Address: 192.168.10.11#53
Name: www.yadong.com
Address: 192.168.10.2
反向解析
root@localhost /]# nslookup 192.168.10.2
Server: 192.168.10.11
Address: 192.168.10.11#53
2.10.168.192.in-addr.arpa name = www.yadong.com.
至此,主从DNS搭建完成!
搭建缓存master1 + master2
要求:只指定一台DNS服务器,实现解析两台DNS服务器上解析库的内容
master1
1、安装DNS服务(yum源为本地挂载)
yum -y install bind (这是DNS的主服务)
yum -y install bind-utils (DNS工具,如 nslookup)
2、修改配置文件/etc/named.conf
vi /etc/named.conf
master1配置如下:
options {
listen-on port 53 { 192.168.10.10; };
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 { 192.168.10.0/24; };
forwarders { 192.168.10.11; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
zone "yadong.com" IN {
type master;
file "yadong.front";
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "yadong.verso";
};
编辑 区域数据文件/var/named/ (对应主配置文件设置的路径)
创建对应的 区域数据文件:touch yadong.front yadong.verso
编辑正向解析库:vi /var/named/yadong.front
$TTL 1D
@ IN SOA yadong.com. admin.yadong.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.yadong.com.
www IN A 192.168.10.2
mail IN A 192.168.10.3
ns1 IN A 192.168.10.4
ftp IN cname www
编辑反向解析库:vi /var/named/yadong.verso
$TTL 1D
@ IN SOA yadong.com. admin.yadong.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.yadong.com.
2 IN PTR www.yadong.com.
3 IN PTR mail.yadong.com.
4 IN PTR ns1.yadong.com.
3、启动服务
systemctl start named
master1搭建完毕
master2
1、安装DNS服务(yum源为本地挂载)
yum -y install bind (这是DNS的主服务)
yum -y install bind-utils (DNS工具,如 nslookup)
2、修改配置文件/etc/named.conf
vi /etc/named.conf
master2配置如下:
options {
listen-on port 53 { 192.168.10.11; };
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 { 192.168.10.0/24; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
zone "nongfu.com" IN {
type master;
file "nongfu.front";
};
zone "11.221.231.in-addr.arpa" IN {
type master;
file "nongfu.verso";
};
编辑 区域数据文件/var/named/ (对应主配置文件设置的路径)
创建对应的 区域数据文件:touch nongfu.front nongfu.verso
编辑正向解析库:vi /var/named/nongfu.front
$TTL 1D
@ IN SOA nongfu.com. admin.nongfu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns2.nongfu.com.
www IN A 231.221.11.1
mail IN A 231.221.11.2
ns2 IN A 231.221.11.3
ftp IN cname www
编辑反向解析库:vi /var/named/nongfu.verso
$TTL 1D
@ IN SOA nongfu.com. admin.nongfu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns2.nongfu.com.
1 IN PTR www.nongfu.com.
2 IN PTR mail.nongfu.com.
3 IN PTR ns2.nongfu.com.
3、启动服务
systemctl start named
4、测试(测试前需要指定解析的DNS服务器echo "nameserver 192.168.10.10" >> /etc/resolv.conf)
解析192.168.10.10上的解析库
[root@localhost ~]# nslookup www.yadong.com //正向解析www.yadong.com
Server: 192.168.10.10
Address: 192.168.10.10#53
Name: www.yadong.com
Address: 192.168.10.2
[root@localhost ~]# nslookup 192.168.10.2 //反向解析192.168.10.2
Server: 192.168.10.10
Address: 192.168.10.10#53
2.10.168.192.in-addr.arpa name = www.yadong.com.
解析192.168.10.11上的解析库
[root@localhost ~]# nslookup www.nongfu.com //解析nongfu.com
Server: 192.168.10.10
Address: 192.168.10.10#53
Non-authoritative answer:
Name: www.nongfu.com
Address: 231.221.11.1
[root@localhost ~]# nslookup 231.221.11.1 //反向解析231.221.11.1
Server: 192.168.10.10
Address: 192.168.10.10#53
Non-authoritative answer:
1.11.221.231.in-addr.arpa name = www.nongfu.com.
Authoritative answers can be found from:
11.221.231.in-addr.arpa nameserver = ns2.nongfu.com.
ns2.nongfu.com internet address = 231.221.11.3
智能DNS
智能DNS是域名频道在业界首创的智能解析服务。能自动判断访问者的IP地址并解析出对应的IP地址,
使网通用户会访问到网通服务器,电信用户会访问到电信服务器。
优点:就近选择,查询速度快。
CDN:
Content Delivery Network,即内容分发网络(又称代理Agent)。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,
使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点
的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet
网络拥挤的状况,提高用户访问网站的响应速度。
优点:传输的更快、更稳定,隐藏真实服务器地址,提高安全性。
搭建智能DNS:
要实现DNS服务器的智能解析,需要先理解一个概念:Veiw. 假如有台web主机,www.yadong.com是域名
它真的有两个IP地址,一个连接内网IP为192.168.10.2,另一个外网IP为1.1.1.1,来自互联网的用户解析成
外网IP,内网的IP解析为内网IP,这种根据客户端的不同来源 将同一个主机解析成不同的结果,就叫做Veiw!
1、安装DNS服务(yum源为本地挂载)
yum -y install bind (这是DNS的主服务)
yum -y install bind-utils (DNS工具,如 nslookup)
2、修改配置文件/etc/named.conf
vi /etc/named.conf
智能DNS配置如下:
options {
listen-on port 53 { 192.168.10.2; };
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 no;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
//内网区域
view internal {
match-clients { 192.168.10.2; };
zone "yadong.com" IN {
type master;
file "yadong.com/internal";
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "yadong.com/internal.verso";
};
};
//外网区域
view external {
match-clients { any; };
zone "yadong.com" IN {
type master;
file "yadong.com/external";
};
zone "1.1.1.in-addr.arpa" IN {
type master;
file "yadong.com/external.verso";
};
};
创建对应的目录和区域数据文件
mkdir /var/named/yadong.com
touch /var/named/yadong.com/internal internal.front external external.verso
编辑对应的区域数据文件
vi /var/named/yadong.com/internal
内网正向解析库
$TTL 1D
@ IN SOA yadong.com. admin.yadong.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.yadong.com.
www IN A 192.168.10.2
mail IN A 192.168.10.2
ns1 IN A 192.168.10.2
ftp IN cname www
内网反向解析库vi /var/named/yadong.com/internal.verso
$TTL 1D
@ IN SOA yadong.com. admin.yadong.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.yadong.com.
2 IN PTR www.yadong.com.
2 IN PTR mail.yadong.com.
2 IN PTR ns1.yadong.com.
外网正向解析库vi /var/named/yadong.com/external
$TTL 1D
@ IN SOA yadong.com. admin.yadong.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.yadong.com.
www IN A 1.1.1.1
mail IN A 1.1.1.1
ns1 IN A 1.1.1.1
ftp IN cname www
外网反向解析库vi /var/named/yadong.com/external.verso
$TTL 1D
@ IN SOA yadong.com. admin.yadong.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.yadong.com.
1 IN PTR www.yadong.com.
1 IN PTR mail.yadong.com.
1 IN PTR ns1.yadong.com.
3、启动服务
systemctl start named
4、测试(测试前需要指定解析的DNS服务器echo "nameserver 192.168.10.2" >> /etc/resolv.conf)
内网测试正向解析
[root@localhost /]# nslookup www.yadong.com
Server: 192.168.10.2
Address: 192.168.10.2#53
Name: www.yadong.com
Address: 192.168.10.2
内网反向解析
[root@localhost /]# nslookup 192.168.10.2
Server: 192.168.10.2
Address: 192.168.10.2#53
2.10.168.192.in-addr.arpa name = ns1.yadong.com.
2.10.168.192.in-addr.arpa name = www.yadong.com.
2.10.168.192.in-addr.arpa name = mail.yadong.com.
外网正向解析
[root@localhost ~]# nslookup www.yadong.com
Server: 192.168.10.2
Address: 192.168.10.2#53
Name: www.yadong.com
Address: 1.1.1.1
外网反向解析
[root@localhost ~]# nslookup 1.1.1.1
Server: 192.168.10.2
Address: 192.168.10.2#53
1.1.1.1.in-addr.arpa name = www.yadong.com.
1.1.1.1.in-addr.arpa name = ns1.yadong.com.
1.1.1.1.in-addr.arpa name = mail.yadong.com.
测试完毕,全部解析成功,至此,智能DNS搭建成功!