分离解析技术

aiofo2022-08-15  183

可以购买多台服务器并分别部署在全球各地,然后再使用DNS服务的分离解析功能,即可让位于不同地理范围内的读者通过访问相同的网址,而从不同的服务器获取到相同的数据。例如,我们可以按照表13-5所示,分别为处于北京的DNS服务器和处于美国的DNS服务器分配不同的IP地址,然后让国内读者在访问时自动匹配到北京的服务器,而让海外读者自动匹配到美国的服务器,如图13-9所示。

表13-5 不同主机的操作系统与IP地址情况

主机名称 操作系统 IP地址 DNS服务器 RHEL 7 北京网络:122.71.115.10 美国网络:106.185.25.10 北京用户 Windows 7 122.71.115.1 海外用户 Windows 7 106.185.25.1

图13-9 DNS分离解析技术

为了解决海外读者访问https://www.linuxprobe.com时的速度问题,刘遄老师已经在美国机房购买并架设好了相应的网站服务器,接下来需要手动部署DNS服务器并实现分离解析功能,以便让不同地理区域的读者在访问相同的域名时,能解析出不同的IP地址。

建议大家将虚拟机还原到初始状态,并重新安装bind服务程序,以免多个实验之间相互产生冲突。

第1步:修改bind服务程序的主配置文件,把第11行的监听端口与第17行的允许查询主机修改为any。由于配置的DNS分离解析功能与DNS根服务器配置参数有冲突,所以需要把第51~54行的根域信息删除。

[root@linuxprobe ~]# vim /etc/named.conf ………………省略部分输出信息………………

44 logging {

45 channel default_debug {

46 file "data/named.run";

47 severity dynamic;

48 };

49 };

50

51 zone "." IN {

52 type hint;

53 file "named.ca";

54 };

55

56 include "/etc/named.rfc1912.zones";

57 include "/etc/named.root.key";

58 ………………省略部分输出信息………………

第2步:编辑区域配置文件。把区域配置文件中原有的数据清空,然后按照以下格式写入参数。首先使用acl参数分别定义两个变量名称(china与american),当下面需要匹配IP地址时只需写入变量名称即可,这样不仅容易阅读识别,而且也利于修改维护。这里的难点是理解view参数的作用。它的作用是通过判断用户的IP地址是中国的还是美国的,然后去分别加载不同的数据配置文件(linuxprobe.com.china或linuxprobe.com.american)。这样,当把相应的IP地址分别写入到数据配置文件后,即可实现DNS的分离解析功能。这样一来,当中国的用户访问linuxprobe.com域名时,便会按照linuxprobe.com.china数据配置文件内的IP地址找到对应的服务器。

[root@linuxprobe ~]# vim /etc/named.rfc1912.zones 1 acl "china" { 122.71.115.0/24; };

2 acl "american" { 106.185.25.0/24;};

3 view "china"{

4 match-clients { "china"; };

5 zone "linuxprobe.com" {

6 type master;

7 file "linuxprobe.com.china";

8 };

9 };

10 view "american" {

11 match-clients { "american"; };

12 zone "linuxprobe.com" {

13 type master;

14 file "linuxprobe.com.american";

15 };

16 };

第3步:建立数据配置文件。分别通过模板文件创建出两份不同名称的区域数据文件,其名称应与上面区域配置文件中的参数相对应。

[root@linuxprobe ~]# cd /var/named

[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.china

[root@linuxprobe named]# cp -a named.localhost linuxprobe.com.american

[root@linuxprobe named]# vim linuxprobe.com.china

编辑 $TTL 1D #生存周期为1天
@ IN SOA linuxprobe.com. root.linuxprobe.com. (

授权信息开始: #DNS区域的地址 #域名管理员的邮箱(不要用@符号)

  1. 0;serial #更新序列号
  2. 1D;refresh #更新时间
  3. 1H;retry #重试延时
  4. 1W;expire #失效时间
  5. 3H;)minimum #无效解析记录的缓存时间
  6. NS ns.linuxprobe.com. #域名服务器记录
  7. ns IN A 122.71.115.10 #地址记录(ns.linuxprobe.com.)
  8. www IN A 122.71.115.15 #地址记录(www.linuxprobe.com.)
  9. [root@linuxprobe named]# vim linuxprobe.com.american
  10. 编辑
  11. $TTL 1D #生存周期为1天
  12. @ IN SOA linuxprobe.com. root.linuxprobe.com. (
  13. #授权信息开始: #DNS区域的地址 #域名管理员的邮箱(不要用@符号)
  14. 0;serial #更新序列号
  15. 1D;refresh #更新时间
  16. 1H;retry #重试延时
  17. 1W;expire #失效时间
  18. 3H;)minimum #无效解析记录的缓存时间
  19. NS ns.linuxprobe.com. #域名服务器记录
  20. ns IN A 106.185.25.10 #地址记录(ns.linuxprobe.com.)
  21. www IN A 106.185.25.15 #地址记录(www.linuxprobe.com.)

第4步:重新启动named服务程序,验证结果。将客户端主机(Windows系统或Linux系统均可)的IP地址分别设置为122.71.115.1与106.185.25.1,将DNS地址分别设置为服务器主机的两个IP地址。这样,当尝试使用nslookup命令解析域名时就能清晰地看到解析结果,分别如图13-10与图13-11所示。

图13-10 模拟中国用户的域名解析操作

图13-11 模拟美国用户的域名解析

转载请注明原文地址:https://www.aiofo.com/read-1429.html