在互联网上通信需要借助于IP地址进行访问,但人类对于数字的记忆能力远不如文字,那么将IP地址转换成容易记忆的文字是个好办法,可是计算机只能识别0、1代码,这时就需要一种机制来解决IP地址与主机名的转换问题,DNS全称为Domain Name System,即域名系统,其作用就是将我们经常使用的"网址"解析为IP地址,联机分布式数据库系统,DNS大多数名字在本地解析,仅少量需要在网上通讯,所以效率高。
正向解析
:根据主机名称(域名)查找对应的IP地址反向解析
:根据IP地址查找对应的主机域名第一步:客户机访问某个网站,请求域名解析,首先查找本地HOSTS文件,如果有对应域名、IP记录,直接返回给客户机。如果没有则将该请求发送给本地的域名解析服务器;
第二步:本地DNS域名解析服务器能够解析客户端发来的请求,服务器直接将答案返回给客户机。
第三步:本地DNS服务器不能解析客户端发来的请求,分为两种解析方法:
递归查询
:大多数客户机向DNS服务器解析域名的方式;递归查询就是:如果主机所询问的
本地域名服务器不知道被查询的域名的IP地址
,那么本地域名服务器就以DNS客户的身份
,向其它根域名服务器继续发出查询请求报文
(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址
,或者是报错,表示无法查询到所需的IP地址。(一条龙服务,帮你搞定)
迭代查询
:大多数DNS服务器向其他DNS服务器解析域名的方式;迭代查询就是:当
根域名服务器收到本地域名服务器发出的迭代查询请求报文时
,要么给出所要查询的IP地址
,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”
。然后让本地服务器进行后续的查询
。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。(告诉你方式,你自己去查)
缓存域名服务器cache
:也称唯高速缓存服务器,通过向其他域名服务器查询获得域名->IP地址记录,将域名查询结果缓存到本地,提高重复查询时的速度;主域名服务器master
:特定DNS区域的官方服务器,具有唯一性,负责维护该区域内所有域名->IP地址的映射记录;从域名服务器slave
:也称为辅助域名服务器,其维护的域名->IP地址记录来源于主域名服务器;BIND(Berkeley Internet Name Daemon)伯克利Internet域名服务
主要执行程序
:/usr/sbin/named服务脚本
:/etc/init.d/named默认监听端口
:53主配置文件
:/etc/named.conf区域配置文件
:/etc/named.rfc1912.zones 用来保存域名和IP地址对应关系保存DNS解析记录的数据文件
:/var/named/chroot/var/named/DNS的主要作用是进行主机名的解析
根据用户提供一种名称,去查询解析库,以得到另一种名称。 域名—>IP,IP—>域名;
TTL值
:生存时间,DNS记录在DNS服务器上缓存时间IN
:表示后面的数据使用的是INTERNET标准SOA记录
:起始授权记录,一个区域文件只能有一个@
:表示相应的域名(区域)test.com
:授权主机root.test.com
:管理者信箱 [email protected]rr(resource record)
:有类型的概念,用于此记录解析的属性A记录
:用来指定主机名(或域名)对应的IP(ipv4)地址记录。(AAAA ipv6
)CNAME记录
:定义对应主机的一个别名(域名)NS记录
:域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析type
:类型:master、slave、hintmaster
:表示定义的是主域名服务器(主从)slave
:表示定义的是辅助域名服务器(主从)MX记录
:邮件交换记录,指向邮件服务器hint
:表示是互联网中根域名服务器zone
:关键字来定义域区,一个zone关键字定义一个域区PTR记录
:反向DNS记录,A记录的反向服务 | IP |
---|---|
DNS服务(主) | 192.168.182.13 |
DNS服务(从) | 192.168.182.12 |
测试主机 | 192.168.182.10 |
[root@localhost ~]# yum install -y bind*
[root@localhost ~]# named -v
BIND 9.11.4-P2-RedHat-9.11.4-9.P2.el7 (Extended Support Version) <id:7107deb>
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/named.conf ///只改三处
options { #选项
listen-on port 53 { any; }; #服务监听端口为53 ///改为any任意人可访问
listen-on-v6 port 53 { any; }; #服务监听端口为53(ipv6) ///改为any任意人可访问
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; }; #允许连接的客户机 ///改为any任意人可访问
recursion yes; #递归查找
dnssec-enable yes; #DNS加密
dnssec-validation yes; #DNS加密高级算法
dnssec-lookaside auto; #DNS加密的相关东西
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key"; #加密用的key(私钥公钥的加密,很强)
};
logging { #日志
channel default_debug {
file "data/named.run"; #运行状态文件
severity dynamic; #静态服务器地址(根域)
};
};
zone "." IN { #根域解析
type hint; master slave
file "named.ca"; #根域配置文件
};
include "/etc/named.rfc1912.zones"; #扩展配置文件(新开域名)
include "/etc/named.root.key";
保存域名和IP地址
对应关系的所在位置,在这个文件中,定义了域名与IP地址解析规则,保存的文件位置,以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息;hint(根区域)、master(主区域)、slave(辅助区域)
,其中常用的master和slave指的就是主服务器和从服务器;[root@localhost ~]# vim /etc/named.rfc1912.zones ///在配置文件添加正反解析
zone "villiantsang.com" IN {
type master; #服务类型
file "villiantsang.com.zone"; #域名与IP地址解析规则保存文件
allow-update { none; }; #允许哪些客户机动态更新解析信息(主从配置)
}; #正向解析参数
zone "182.168.192.in-addr.arpa" IN { #表示为192.168.182.0/24网段的反向解析区域
type master;
file "villiantsang.com.local"; #域名与IP地址解析规则保存文件
allow-update { none; }; #允许哪些客户机动态更新解析信息(主从配置)
}; #反向解析参数
复制加上-p
参数,可以保留原始文件的所有者、所属组、权限属性等信息
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost villiantsang.com.zone
$TTL 1D ///缓存记录为1天
@ IN SOA ns.villiantsang.com. root ( ///#@当前的域名 #授权信息开始 #DNS区域的地址 #域名管理员邮箱不要用@符号
0 ; serial ///更新序列号(与从DNS有关,每次更新需要+1)
1D ; refresh ///更新时间(与从DNS有关)
1H ; retry ///重试延时(与从DNS有关)
1W ; expire ///失效时间(与从DNS有关)
3H ) ; minimum ///无效解析记录时间(与从DNS有关)
@ IN NS ns.villiantsang.com. ///定义ns记录
ns IN A 192.168.182.13 ///域名服务器,用来指定该IP为DNS服务器(ns一定要与DNS服务器IP对应)
V1 IN A 192.168.182.11 ///定义v1 主机对应IP:192.168.182.11
V2 IN A 192.168.182.12 ///定义v2 主机对应IP:192.168.182.12
www IN A 192.168.182.13 ///定义www主机对应IP:192.168.182.13
bbs IN A 192.168.182.14 ///定义bbs主机对应IP:192.168.182.14
@ IN MX 10 mail.villiantsang.com. ///定义邮件地址
mail IN A 192.168.182.10 ///定义邮件地址
反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.loopback villiantsang.com.local
$TTL 1D
@ IN SOA villiantsang.com. root (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns.villiantsang.com. ///DNS域名服务器反向解析的IP:11
11 IN PTR v1.villiantsang.com. ///定义v1 主机头反向解析的IP:11
12 IN PTR v2.villiantsang.com. ///定义v2 主机头反向解析的IP:12
13 IN PTR www.villiantsang.com. ///定义www主机头反向解析的IP:13
14 IN PTR bbs.villiantsang.com. ///定义bbs主机头反向解析的IP:14
10 IN PTR mail.villiantsang.com. ///定义邮件地址,指定IP
named-checkzone
命令测试配置文件是否正确[root@localhost named]# named-checkzone villiantsang.com.zone villiantsang.com.local
zone villiantsang.com.zone/IN: loaded serial 0
OK
[root@localhost named]# systemctl restart named
192.168.182.10
域名解析文件/etc/resolv.conf
文件[root@test ~]# vim /etc/resolv.conf
nameserver 192.168.182.13 ///为做测试,删除所有域名解析服务,只设置这一条域名解析服务(不能ping 百度(8.8.8.8))
ping
测试[root@test ~]# ping v1.villiantsang.com
PING V1.villiantsang.com (192.168.182.11) 56(84) bytes of data. ///测试出 v1.villiantsang.com 的IP为192.168.182.11
^C
--- V1.villiantsang.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms
[root@test ~]# ping v2.villiantsang.com
PING V2.villiantsang.com (192.168.182.12) 56(84) bytes of data. ///测试出 v2.villiantsang.com 的IP为192.168.182.12
^C
--- V2.villiantsang.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms
[root@test ~]# ping www.villiantsang.com
PING www.villiantsang.com (192.168.182.13) 56(84) bytes of data. ///测试出 www.villiantsang.com 的IP为192.168.182.13
^C
--- www.villiantsang.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
[root@test ~]# ping bbs.villiantsang.com
PING bbs.villiantsang.com (192.168.182.14) 56(84) bytes of data. ///测试出 bbs.villiantsang.com 的IP为192.168.182.14
^C
--- bbs.villiantsang.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
nslookup
测试[root@test ~]# nslookup v1.villiantsang.com
Server: 192.168.182.13
Address: 192.168.182.13#53
Name: V1.villiantsang.com
Address: 192.168.182.11
[root@test ~]# nslookup v2.villiantsang.com
Server: 192.168.182.13
Address: 192.168.182.13#53
Name: V2.villiantsang.com
Address: 192.168.182.12
[root@test ~]# nslookup www.villiantsang.com
Server: 192.168.182.13
Address: 192.168.182.13#53
Name: www.villiantsang.com
Address: 192.168.182.13
[root@test ~]# nslookup bbs.villiantsang.com
Server: 192.168.182.13
Address: 192.168.182.13#53
Name: bbs.villiantsang.com
Address: 192.168.182.14
nslookup -qt=ptr IP
进行测试[root@test ~]# nslookup -qt=ptr 192.168.182.10
*** Invalid option: qt=ptr
10.182.168.192.in-addr.arpa name = mail.villiantsang.com.
[root@test ~]# nslookup -qt=ptr 192.168.182.11
*** Invalid option: qt=ptr
11.182.168.192.in-addr.arpa name = v1.villiantsang.com.
[root@test ~]# nslookup -qt=ptr 192.168.182.12
*** Invalid option: qt=ptr
12.182.168.192.in-addr.arpa name = v2.villiantsang.com.
[root@test ~]# nslookup -qt=ptr 192.168.182.13
*** Invalid option: qt=ptr
13.182.168.192.in-addr.arpa name = www.villiantsang.com.
[root@test ~]# nslookup -qt=ptr 192.168.182.14
*** Invalid option: qt=ptr
14.182.168.192.in-addr.arpa name = bbs.villiantsang.com.
[root@master ~]# vim /etc/named.rfc1912.zones ///在配置文件添加正反解析
zone "villiantsang.com" IN {
type master; ///服务类型 master
file "villiantsang.com.zone";
allow-update { 192.168.182.12; }; ///允许192.168.182.12客户机动态更新解析信息
};
zone "182.168.192.in-addr.arpa" IN {
type master; ///服务类型 master
file "villiantsang.com.local";
allow-update { 192.168.182.12; }; ///允许192.168.182.12客户机动态更新解析信息
}; ///反向解析参数
[root@slave ~]# yum install -y bind*
[root@slave ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
allow-query { any; };
[root@slave ~]# vim /etc/named.rfc1912.zones
zone "villiantsang.com" IN {
type slave; ///slave从服务
file "slave/villiantsang.com.zone"; ///从服务正向解析配置文件,不用创建,启动时会自动生成
masters { 192.168.182.13; }; ///绑定master主服务 IP 地址
};
zone "182.168.192.in-addr.arpa" IN {
type slave; ///slave从服务
file "slave/villiantsang.com.local"; ///从服务反向解析配置文件,不用创建,启动时会自动生成
masters { 192.168.182.13; }; ///绑定master主服务 IP 地址
};
[root@master ~]# systemctl restart named ///重启主DNS服务
[root@slave ~]# systemctl restart named ///重启从DNS服务
[root@slave slaves]# pwd
/var/named/slaves ///从服务配置文件目录
[root@slave slaves]# ls
villiantsang.com.local villiantsang.com.zone ///自动生成的正反解析配置文件
ping
测试[root@slave ~]# ping www.villiantsang.com
PING www.villiantsang.com (192.168.182.13) 56(84) bytes of data.
64 bytes from www.villiantsang.com (192.168.182.13): icmp_seq=1 ttl=64 time=0.675 ms
[root@slave ~]# ping v1.villiantsang.com
PING V1.villiantsang.com (192.168.182.11) 56(84) bytes of data.
64 bytes from www.villiantsang.com (192.168.182.11): icmp_seq=1 ttl=64 time=0.675 ms
[root@slave ~]# ping v2.villiantsang.com
PING V2.villiantsang.com (192.168.182.12) 56(84) bytes of data.
64 bytes from v2.villiantsang.com (192.168.182.12): icmp_seq=1 ttl=64 time=0.019 ms
[root@slave ~]# ping bbs.villiantsang.com
PING bbs.villiantsang.com (192.168.182.14) 56(84) bytes of data.
64 bytes from www.villiantsang.com (192.168.182.14): icmp_seq=1 ttl=64 time=0.675 ms
nslookup
测试[root@slave ~]# nslookup www.villiantsang.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.villiantsang.com
Address: 192.168.182.13
[root@slave ~]# nslookup v1.villiantsang.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: V1.villiantsang.com
Address: 192.168.182.11
[root@slave ~]# nslookup v2.villiantsang.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: V2.villiantsang.com
Address: 192.168.182.12
[root@slave ~]# nslookup bbs.villiantsang.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: bbs.villiantsang.com
Address: 192.168.182.14
[root@slave ~]# nslookup -qt=ptr 192.168.182.10
*** Invalid option: qt=ptr
10.182.168.192.in-addr.arpa name = mail.villiantsang.com.
[root@slave ~]# nslookup -qt=ptr 192.168.182.11
*** Invalid option: qt=ptr
11.182.168.192.in-addr.arpa name = v1.villiantsang.com.
[root@slave ~]# nslookup -qt=ptr 192.168.182.12
*** Invalid option: qt=ptr
12.182.168.192.in-addr.arpa name = v2.villiantsang.com.
[root@slave ~]# nslookup -qt=ptr 192.168.182.13
*** Invalid option: qt=ptr
13.182.168.192.in-addr.arpa name = www.villiantsang.com.
[root@slave ~]# nslookup -qt=ptr 192.168.182.14
*** Invalid option: qt=ptr
14.182.168.192.in-addr.arpa name = bbs.villiantsang.com.
[root@master ~]# yum install -y httpd
[root@master ~]# echo "i am villiantsang" > /var/www/html/index.html
[root@master ~]# systemctl start httpd
阿里云域名(万网)配置:https://www.bilibili.com/video/av68500782?p=6
DNS学习视频:https://www.bilibili.com/video/av68500782?p=3