DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。主机名到IP地址的映射有两种方式:
1.静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2.动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。[1]
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
根域: " . "
国家域:cn、uk
顶级域:com、edu、net
二级域:个性化名称
主机名(用途):www(网页)、mail(邮件)
以www.baidu.com为例
一般客户机将解析的请求发送给它的DNS服务器,DNS服务器首先是从根DNS服务器(.)开始发送域名解析请求,根将COM域的IP反馈给客户机的本地DNS服务器,本地DNS服务器访问COM域服务器,COM域服务器反馈baidu IP给本地DNS服务器,本地DNS服务器访问baidu域服务器询问www域服务器的ip,baidu域服务器给dns服务器反馈www域的ip,这时本地DNS服务器得到www. baidu. com的精确ip后,直接将这个映射记录反馈给客户机,客户机真接访问www. baidu. com服务器,服务器反馈相应的数据。
将域名解析成IP地址
既属于UDP又属于TCP,53端口
实验环境
两台初始化完成的虚拟机,之前文章有详细过程
准备三台虚拟机,一台主用DNS服务器,一台备用,一台作客户机验证
主服务器 192.168.1.10
备服务器 192.168.1.20
客户机 192.168.1.30
都设置为VMnet1,仅主机模式
设置主用服务器为192.168.1.10,备用为192.168.1.20,客户机为192.168.1.30,并设置DNS服务器地址,主用为192.168.1.10,备用为192.168.1.20。
主DNS服务器
备用DNS服务器
systemctl stop firewalld
setenforce 0
[root@server1 ~]# yum -y install bind*
[root@server1 ~]# vi /etc/named.conf
options {
listen-on port 53 {
192.168.1.10; };
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 {
any; };
zone "tom.com" IN {
type master;
file "tom.com.zone";
allow-transfer {
192.168.1.20; };
also-notify {
192.168.1.20; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "tom.com.local";
allow-transfer {
192.168.1.20; };
};
[root@server1 ~]# cd /var/named/
总用量 24K
drwxr-x---. 7 root named 61 9月 22 23:45 chroot
drwxrwx---. 2 named named 23 9月 23 09:32 data
drwxrwx---. 2 named named 60 9月 29 19:04 dynamic
drwxrwx---. 2 root named 6 8月 10 2017 dyndb-ldap
-rw-r-----. 1 root named 2.3K 5月 22 2017 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 6 8月 4 2017 slaves
-rw-r-----. 1 root named 217 9月 23 09:32 tom.com.local #反向区域文件
-rw-r-----. 1 root named 223 9月 23 09:00 tom.com.zone #正向区域文件
$TTL 1D
@ IN SOA tom.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS tom.com.
A 192.168.1.10
19 IN PTR www.tom.com.
20 IN PTR ftp.tom.com.
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.1.10
www IN A 192.168.1.10
ftp IN A 192.168.1.20
mail IN CNAME www
[root@server1 named]# systemctl restart named
[root@server1 named]# netstat -anptu | grep named
tcp 0 0 192.168.1.10:53 0.0.0.0:* LISTEN 17371/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 17371/named
tcp6 0 0 ::1:53 :::* LISTEN 17371/named
tcp6 0 0 ::1:953 :::* LISTEN 17371/named
udp 0 0 192.168.1.10:53 0.0.0.0:* 17371/named
udp6 0 0 ::1:53 :::* 17371/named
[root@server1 named]# nslookup www.tom.com
Server: 192.168.1.20
Address: 192.168.1.20#53
Name: www.tom.com
Address: 192.168.1.10
[root@server1 named]# nslookup ftp.tom.com
Server: 192.168.1.20
Address: 192.168.1.20#53
Name: ftp.tom.com
Address: 192.168.1.20
[root@server1 named]# nslookup mail.tom.com
Server: 192.168.1.20
Address: 192.168.1.20#53
mail.tom.com canonical name = www.tom.com.
Name: www.tom.com
Address: 192.168.1.10
[root@server2 ~]# yum -y install bind*
[root@server2 ~]# vi /etc/named.conf
options {
listen-on port 53 {
192.168.1.20; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query {
any; };
[root@server2 ~]# vi /etc/named.rfc1912.zones
##末行加入
zone "tom.com" IN {
type slave;
masters {
192.168.1.10; };
allow-notify {
192.168.1.10; };
file "slaves/tom.com.zone";
};
zone "1.168.192.in-addr.arpa" IN {
type slave;
masters {
192.168.1.10; };
allow-notify {
192.168.1.10; };
file "slaves/tom.com.local";
};
[root@server2 ~]# systemctl start named
[root@server2 ~]# cd /var/named/
[root@server2 named]# ll
总用量 16
drwxr-x---. 7 root named 61 9月 23 10:00 chroot
drwxr-x---. 7 root named 61 9月 23 10:00 chroot_sdb
drwxrwx---. 2 named named 23 9月 23 11:32 data
drwxrwx---. 2 named named 60 9月 23 11:33 dynamic
drwxrwx---. 2 root named 6 4月 1 10:16 dyndb-ldap
-rw-r-----. 1 root named 2253 4月 5 2018 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 47 9月 23 11:32 slaves
[root@server2 named]# cd slaves
[root@server2 slaves]# ls -lh
总用量 8.0K
-rw-r--r--. 1 named named 343 9月 23 11:32 tom.com.local
-rw-r--r--. 1 named named 301 9月 23 11:32 tom.com.zone
[root@server3 ~]# nslookup www.tom.com
Server: 192.168.1.10
Address: 192.168.1.10#53
Name: www.tom.com
Address: 192.168.1.10
[root@server3 ~]# nslookup ftp.tom.com
Server: 192.168.1.10
Address: 192.168.1.10#53
Name: ftp.tom.com
Address: 192.168.1.20
[root@server3 ~]# nslookup mail.tom.com
Server: 192.168.1.10
Address: 192.168.1.10#53
mail.tom.com canonical name = www.tom.com.
Name: www.tom.com
Address: 192.168.1.10
[root@server3 ~]# nslookup www.tom.com
Server: 192.168.1.20
Address: 192.168.1.20#53
Name: www.tom.com
Address: 192.168.1.10
[root@server3 ~]# nslookup ftp.tom.com
Server: 192.168.1.20
Address: 192.168.1.20#53
Name: ftp.tom.com
Address: 192.168.1.20
[root@server3 ~]# nslookup mail.tom.com
Server: 192.168.1.20
Address: 192.168.1.20#53
mail.tom.com canonical name = www.tom.com.
Name: www.tom.com
Address: 192.168.1.10
如此实验正常
如果觉得有用的话,欢迎三联哟!求求啦