阅读(2395) (0)

13.6 分离解析技术

2019-05-12 12:27:36 更新

现在,喜欢看我们这本《Linux就该这么学》的海外读者越来越多,如果继续把本书配套的网站服务器(https://www.linuxprobe.com)架设在北京市的机房内,则海外读者的访问速度势必会很慢。可如果把服务器架设在美国那边的机房,也将增大国内读者的访问难度

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

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

主机名称 操作系统 IP地址
DNS服务器 RHEL 8 北京网络:122.71.115.10
美国网络:106.185.25.10
北京用户 Windows 10 122.71.115.1
海外用户 Windows 10 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区域的地址   #域名管理员的邮箱(不要用@符号)   
    0;serial    #更新序列号
    1D;refresh  #更新时间
    1H;retry    #重试延时
    1W;expire   #失效时间
    3H;)minimum #无效解析记录的缓存时间
    NS  ns.linuxprobe.com.  #域名服务器记录
    ns  IN A    122.71.115.10   #地址记录(ns.linuxprobe.com.)
    www IN A    122.71.115.15   #地址记录(www.linuxprobe.com.)
    [root@linuxprobe named]# vim linuxprobe.com.american
    编辑
    $TTL 1D #生存周期为1天                
    @   IN SOA  linuxprobe.com. root.linuxprobe.com.    (   
    #授权信息开始:    #DNS区域的地址   #域名管理员的邮箱(不要用@符号)   
    0;serial    #更新序列号
    1D;refresh  #更新时间
    1H;retry    #重试延时
    1W;expire   #失效时间
    3H;)minimum #无效解析记录的缓存时间
    NS  ns.linuxprobe.com.  #域名服务器记录
    ns  IN A    106.185.25.10   #地址记录(ns.linuxprobe.com.)
    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 模拟美国用户的域名解析

出现问题?大胆提问!

因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

Linux技术交流请加A群:560843(满),B群:340829(推荐),C群:463590(推荐),点此查看全国群。

*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。