DNS解析流程:
以Linux系统为例,当客户端需要解析www.csdn.net域名时
1.首先客户端会查询浏览器中的DNS缓存(如果从浏览器开始进行DNS解析),如查询成功则返回相应IP地址。
2.如果没有查到则去查询操作系统DNS缓存,如查询成功则返回相应IP地址。
3.如果操作系统DNS缓存中仍然没有查到相应的IP地址,则下一步会查询该客户端中的hosts文件(DNS配置文件)。
4.如果仍未查询到结果,则客户端会向其本地DNS服务器发送DNS解析请求。(本地DNS服务器地址是通过DHCP服务获取的或者自己手动配置的)
之前几步称为递归查询
5.如果本地DNS服务器中依旧没有我们查询的域名的IP地址,则本地域名服务器会去向根DNS服务器去查询该域名的IP地址。
6.如果根DNS服务器也不知道该域名的地址,根DNS服务器则会根据收到的请求判断这个域名(.net)是谁来授权管理,并会返回一个负责该域名的顶级域名服务器的一个IP 给本地DNS服务器。
注意:本地DNS服务器查询时是根据域名从后往前的,也就是先查. ,再查.net ,再查.csdn ,最后再查www
7.本地DNS服务器收到该IP后会继续向该IP进行查询,如果管理(.net)的顶级域名服务器也无法解析到该域名对应的IP,则会返回管理csdn.net的权限域名服务器的IP给本地DNS服务器。
8.以此循环直到找到该域名的解析或者没有找到该域名的解析,此时本地DNS服务器会把解析的结果返回给客户端,以供客户端进行下一步操作。
5——8步称为迭代查询,都是由本地DNS服务器和其他各种DNS服务器进行交流的
DNS服务器配置
yum install bind -y
# 下载完进入/etc/named.conf进行配置
listen-on port 53 { any;};
# 监听所有IP通过53号端口访问dns服务 也可以指定IP或网段
directory "/var/named";
# dns的工作目录
allow-query {any;};
# 指定能够进行DNS查询的客户端 可以指定IP 网段 和any所有人
DNS正向解析和反向解析
# 在/etc/named.conf文件中加入
# 正向解析
zone "csdn.com" IN {
type master;
file "csdn.zone";
# 该路径为相对路径,绝对路径为前面指定的dns工作目录加file中的路径
};
# 反向解析
# 这里区域名中的的IP地址必须倒着写
zone "211.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.211";
# 该路径为相对路径,绝对路径为前面指定的dns工作目录加file中的路径
};
正向
# 在/var/named/csdn.zone中加入
$TTL 1D #缓存时间
# 第一个@默认为配置文件中区域的名字即csdn.com
# dns.csdn.com 指定使用哪个dns服务器
# 这里也可以写@代表为dns. + csdn.com
#xxxx.qq.com 是邮箱
@ IN SOA dns.csdn.com xxxx.qq.com (
0
#序列号来判断该dns是新是旧
1D
#更新频率,定义slave多久向master要求数据更新
1H
#重新尝试时间,如果slave无法与master连接则定义多久尝试重连
1W
#失效时间,如果一直尝试连接失败,
#则当超过定义的时间后slave不会再尝试连接并删除该区域文件信息
3H
#缓存时间,该记录会被其他dns服务器缓存中保持多久
)
IN NS dns.csdn.com.
#指定可使用的dns服务器,可以指定多条,但此时不能写第二个@
#取而代之的是指定的dns服务器(SOA 后面那个参数)
#指定域名转换为IP地址
dns IN A 192.168.211.126
#表示的是dns.csdn.com
mail IN A 192.168.211.127
# mail + 区域名(csdn.com)
ftp.csdn.com. IN A 192.168.211.128
# 也可以直接指定完整域名
www.csdn.com. IN A 192.168.79.129
web IN CNAME www
# 意思为web.csdn.com 转化为和www.csdn.com一样的IP地址
反向
# 在/var/named/named.192.168.211 中写入
$TTL 1D
@ IN SOA dns.csdn.com. XXXX.csdn.com (
0
1D
1H
1W
3H )
IN NS dns.csdn.com.
126 IN PTR dns.csdn.com.
127 IN PTR mail.csdn.com.
128 IN PTR ftp.csdn.com.
100 IN PTR nfs.csdn.com
#把IP转换为域名
#区域192.168.211 + 126|127|128|100
测试
host 域名|IP dns服务器IP地址
nslookup 域名|IP dns服务器IP地址
dig -t A 域名 @dns服务器IP地址
dig -x IP地址 @dns服务器IP地址
DNS主从同步
主机A(192.168.79.129)为主DNS服务器,主机B(192.168.79.128)为从DNS服务器
主DNS服务器配置
# 先在主机A的/etc/named.conf文件下加入allow-transfer {192.168.79.128;};
# 在listen-on 和directory 那个位置加 ,写入从DNS服务器的地址
# 之后在相应区域的文件中加入 IN NS slave.csdn.com.
# 和slave.csdn.com. IN A 192.168.79.128
从DNS服务器配置
# /etc/named.conf 中加入
listen-on port 53 { 192.168.79.129;192.168.79.128; };
zone "csdn.com" IN {
type slave;
file "slaves/csdn.zone";
masters {192.168.79.129;};
};
之后systemctl restart named 重启俩个服务器的named服务
之后主从服务器都配置完成
在主机B从dns服务器上查询
之后主DNS服务器如要更新数据让从DNS服务器也同步的话
主DNS服务器在相应区域对应的文件下加入 域名 IN A IP地址
之后把序列号改成比原来大的数即可(序列号位置上面有写)
记得添加后把序列号改大,只有这样从DNS服务器才能认为该dns解析文件是新的,
否则从DNS服务器会认为该文件是旧的所以不会进行同步。
DNS view
实现 根据请求地址的IP来返回同一域名的不同IP
案例:
假如现有俩个服务器,且这俩个服务器一个在西安,一个在上海。
现要求西安的IP进行DNS解析时把域名解析成西安服务器的IP
上海的IP进行DNS解析时把域名解析成上海服务器的IP
且这俩个域名是相同的
这里便可以用view视图来解决问题
# 把配置文件改一下 把原本的区域放入视图中
#上海
view "shanghai"{
match-clients{192.168.79.128;};
#匹配的IP
zone "." IN {
type hint;
file "named.ca";
};
zone "csdn.com" IN {
type master;
file "csdn.zone";
};
zone "211.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.211";
};
include "/etc/named.rfc1912.zones";
};
#西安
view "xian"{
match-clients{192.168.79.129;};
#匹配的IP
zone "." IN {
type hint;
file "named.ca";
};
zone "csdn.com" IN {
type master;
file "csdn2.zone";
};
include "/etc/named.rfc1912.zones";
};
像上图中的match-clients就是匹配进行dns解析的请求方的地址,匹配上的话就用这个区域的dns解析。其余和之前的配置一样
不同IP访问同一个DNS服务器,相同的域名解析出不同的IP
nfs自动挂载
yum install autofs -y
下载完后进入/etc/auto.master
# 加入
/nfs /etc/autofs/auto.nfs
# 挂载父目录,之后挂载的所有目录都在这个目录里
# 配置文件的位置,决定该刚才配置的父目录里有哪几个挂载目录
进入设置的配置文件/etc/autofs/auto.nfs
#加入
shared 192.168.79.129:/nfs/shared
upload 192.168.79.129:/nfs/upload
#挂载目录的名字
#nfs服务器的名字
#nfs服务对应共享文件夹的位置
然后重启autofs服务即可,之后当客户端进入nfs文件夹中挂载的目录时,autofs就会帮我们自动挂载相应的nfs服务器上的目录。当我们退出挂载目录一段时间后autofs就会自动帮我们卸载该目录。