一.DNS介绍
DNS域名解析是一种将域名转换为IP地址的服务,在互联网上访问网站时,输入的通常是网站的域名,而计算机在通信时则使用IP地址。因此,DNS域名解析就是将用户输入的域名解析为对应的IP地址,以便计算机能够找到并访问目标网站。
具体来说,DNS域名解析的过程如下:
- 当用户输入一个域名并尝试访问时,计算机会首先向本地DNS服务器发出查询请求。
- 本地DNS服务器会检查其缓存中是否有该域名的解析记录。如果有,则直接返回对应的IP地址;如果没有,则向根域名服务器发出查询请求。
- 根域名服务器会返回该域名所属顶级域名(如.com、.cn等)的权威DNS服务器的地址。
- 本地DNS服务器再向该权威DNS服务器发出查询请求,获取该域名的IP地址。
- 权威DNS服务器会返回该域名的IP地址给本地DNS服务器。
- 本地DNS服务器将获取到的IP地址缓存起来,并返回给用户计算机。
这样,用户计算机就可以根据获取的IP地址访问目标网站了。同时,由于本地DNS服务器已经缓存了该域名的解析记录,所以下次用户再次访问该网站时,可以直接从缓存中获取IP地址,提高了访问速度。
二.分离解析简介
分离解析的域名服务器实际也是主域名服务器,这里主要是指根据不同的客户端提供不同的域名解析记录。如来自内网和来自外网的客户端(不同网段)请求解析同一域名时,为其提供不同的解析结果。
如何进行相关配置呢?在下面我将在一个地址为192.168.10.101/24的主服务器上演示相关配置。
三.实现分离解析
1.部署环境
- ifconfig命令查看网卡的名称
- 为服务器添加两个网卡
ens33网卡的桥接不变(NAT模式)→内网客户机192.168.10.106(NAT模式)
ens36网卡桥接到仅主机模式→外网客户机172.16.16.106,桥接也为仅主机模式
- 修改两个网卡的IP地址
[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 //修改其IP地址为192.168.10.101
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens36 //修改其IP地址为173.16.16.101
[root@localhost ~]# systemctl restart network
注意修改完成后要使用systemctl restart network 重启网络
- 安装bind软件包
bind软件包提供了完整的DNS功能,包括域名解析、区域管理和反向解析等;是目前世界上使用最为广泛的DNS服务器软件。
[root@localhost ~]# yum -y install bind
[root@localhost ~]# systemctl enable named //设置开机自启
安装完成后就到了要配置DNS服务器的时候了。
- 修改DNS配置文件
[root@localhost ~]# vim /etc/named.conf options { listen-on port 53 { any; }; //将监听地址修改位任何地址 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; }; //允许任何主机查询 }; //将原有的缓存DNS服务器注释掉 /*zone "." IN { type hint; file "named.ca"; }; */ //设置本地的主DNS服务器 view "lan"{ //创建名为“lan”的视图 match-clients{192.168.10.0/24;}; //指定该网段地址可以访问该视图 zone "nei.com" IN{ //创建一个名为“nei.com”,类别为Intenet类的DNS区域 type master; //此DNS服务器是“nei.com”区域的主服务器 file "lan.com.zone"; //指定了包含“nei.com”区域信息的文件的名称和位置 }; }; //设置外网访问的主DNS服务器 viwe "wan"{ match-clients{any;}; zone "nei.com" IN{ type master; file "wan.com.zone"; }; };
- 创建区域文件
- 内部区域文件
[root@ns1 ~]# cd /var/named/ [root@ns1 named]# vim lan.com.zone //文件名要与named.conf设置的一致 $TTL 1D @ IN SOA nei.com. admin.bt.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS ns1.nei.com. ns1 IN A 192.168.10.101 www IN A 192.168.10.102 mail IN A 192.168.10.103 ftp IN A 192.168.10.104
- 外部区域文件
[root@ns1 named]# vim wan.com.zone $TTL 1D @ IN SOA nei.com. admin.bt.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS ns1.nei.com. ns1 IN A 173.16.16.101 www IN A 173.16.16.102 mail IN A 173.16.16.103 ftp IN A 173.16.16.104
然后键这两个文件的属组改为named,启动named服务;即可去测试。
-
测试
外网客户端
[root@localhost ~]# yum -y install bind-utils
[root@localhost ~]# nslookup www.nei.com
Server: 173.16.16.1
Address: 173.16.16.1#53
Name: www.nei.com
Address: 173.16.16.101
内网客户端
[root@localhost ~]# yum -y install bind-utils
[root@localhost ~]# nslookup www.nei.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: www.nei.com
Address: 192.168.1.5