阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

企业内部DNS跨国配置案例

147次阅读
没有评论

共计 4728 个字符,预计需要花费 12 分钟才能阅读完成。

企业内部 DNS 跨国配置案例

背景介绍:总公司与北京分公司均由总公司进行统一管理。总公司的主从 DNS 担任解析总公司服务器与北京分公司的服务器解析任务。总公司 DNS 委派其他两个公司管理自己域下的服务器解析任务。要求任何一个节点都能解析到公司全部域名的结果。这里仅仅是搭建 DNS 服务器,以解析的结果为验证。所以暂不考虑网络方面的事情,只要确保 DNS 能相互解析就算配置成功。

一、步骤梳理

  • 设定主从服务器的配置
  • 设定主服务器字节区域解析数据库
  • bj.jd.com 子域分配给自己管理
  • yd.jd.comsh.jd.com 分别委派给各自的服务器
  • 子域服务器设定各自的区域解析数据库
  • 子域服务器设定将 jd.com 域转发至主从服务器中

二、bind 配置文件结构

本地解析文件
   /etc/hosts
主配置文件
   /etc/named.conf
   /etc/named.rfc1912.zones
   /etc/rndc.key
解析库文件
   /var/named
           \----slaves      # 文件夹,当为 slave,则在 master 同步的数据放在此文件
           \----named.ca        # 互联网根的信息
           \----name            # 自定义的数据文件放在此目录下

三、搭建过程

1. 主 DNS 服务器

安装 bind 并配置 DNS 的主配置文件

// 安装 bind
yum install bind
//
// 配置 bind 的主配置文件
vim /etc/named.conf
  listen-on port 53 {10.0.0.57; };    // 设置监听的 IP
  allow-query     {any;};            // 设置允许所有人访问 DNS 服务
  forwarders {114.114.114.114; };     // 设定转发,本机没有的记录全部转发至其他 DNS
  dnssec-enable no;                    // 关闭 DNS 安全认证
  dnssec-validation no;                // 关闭 DNS 安全确认
  include "/etc/named.rfc1912.zones";  // 引入外部区域配置文件

在区域配置文件 /etc/named.rfc1912.zones 创建新的解析区域

// 修改区域配置文件
vim /etc/named.rfc1912.zones
  zone "jd.com" IN {// 创建 jd.com 域
          type master;                 // 在 jd 域为主 DNS
          file "jd.com.zone";          // 区域数据库的配置文件名称,默认路径在 /var/named/.....
  }; 

  zone "bj.jd.com" IN {// 创建子域 bj.jd.com
          type master;                 // 在子域中为主 DNS
          file "bj.jd.com.zone";       // 区域数据库的配置文件名称,默认路径在 /var/named/.....
  };

创建解析数据库文件, 数据库默认全部在 /var/named 目录下,创建的区域数据库文件名一定要与上面配置的区域数据库名称一致。NS 类型的记录为设置管理此域的服务器,因为配置了主从两个服务器所以要将两个服务器都创建 NS 记录。但是仅仅创建 NS 记录是不够的,因为客户端访问的时候不能知道到底谁是 NS 服务器,所以还需要给管理此域的服务器建立一条 A 记录,解析出管理此域的服务器。

vim /var/named/jd.com.zone
  $TTL 1D
  @       IN SOA  dns1 root.jd.com. (16      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
          NS      dns1                  //NS 指定管理此域的服务器
          NS      dns2                  //NS 指定管理此域的服务器
  sh      NS      dns.sh                // 将 sh 子域委派给 sh.jd.com 进行管理
  yd      NS      dns.yd                // 将 yd 子域委派给 sh.yd.com 进行管理
  dns1    A       10.0.0.57             // 为管理此域的服务器与子域服务器创建 A 记录
  dns2    A       10.0.0.56
  dns.sh  A       10.0.0.66
  dns.yd  A       10.0.0.67
  www     A       10.10.0.10            // 为主服务器直接管理的解析记录创建 A 记录
  oa      A       10.10.0.11
  sql     A       10.10.0.12

因在 /etc/named.rfc1912.zones 文件中创建了两个区域,所以一共要对应两个区域解析数据库。上面创建的数据库时给 jd.com 创建的数据文件。现在需要创建的是 bj.jd.com 的数据库文件,也就是 Master 服务器自己管理的子域。因为总公司与北京分公司都在北京,所以主 DNS 直接自己管理自己的子域。

$TTL 1D
@       IN SOA   dns1 root.bj.jd.com. (5       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
        NS      dns2
dns1    A       10.0.0.57
dns2    A       10.0.0.56
ftp     A       10.20.0.12
oa      A       10.20.0.13

2. 从服务器

修改从服务器的主配置文件

vim /etc/named.conf
options {listen-on port 53 {10.0.0.56; };
        allow-query     {any;};
        recursion yes;
        dnssec-enable no; 
        dnssec-validation no; 
};
 include "/etc/named.rfc1912.zones";

创建区域文件,因为从服务器只是同步主服务器的数据,所以不需要解析的数据库文件,只需要设定好谁是主服务器即可。

zone "jd.com" IN {// 设定需要同步的区域,主从是相对于区域而言的所以要设定区域。
        type slave;                      // 设定服务器类型为 slave 从
        masters {10.0.0.57 ;};          // 设定主服务器的 IP 地址
        file "slaves/jd.com.zone";       // 主服务配置文件都会在 /var/named/slaves 目录下,设定同步回来的数据库文件名
};

zone "bj.jd.com" IN {// 含义与上面类似,这里设置同步自己管理的子域
        type slave;
        masters {10.0.0.57 ;}; 
        file "slaves/bj.jd.com.zone";
};

3. 印度

后面印度分公司与上海分公司的配置除了设定一下需要转发的区域,其他的跟之前的主服务器配置都是大同小异。所以下面的仅仅对不通配置进行标注。

options {listen-on port 53 {10.0.0.67; };
//      listen-on-v6 port 53 {::1; };
        allow-query     {any;};
        recursion yes;
        dnssec-enable no;
        dnssec-validation no;
};
 include "/etc/named.rfc1912.zones";

设定转发区域。由于子公司仅仅管理自己的 yd.jd.com 域,那公司内部需要访问总公司的域名,就需要将其转发至上游的总公司。

zone "yd.jd.com" IN {type master;
        file "yd.jd.com.zone";
};

zone "jd.com" IN {// 设定转发,客户端访问 jd.com 域时全部转发至指定的服务器
        type forward;
        forward first;
        forwarders {10.0.0.57;};         // 设定转发至 10.0.0.57 服务器。
};

创建印度分公司的区域解析文件

$TTL 1D
@       IN SOA  dns root.yd.jd.com. (1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns 
dns     A       10.0.0.67
oa      A       10.40.0.13
ftp     A       10.40.0.12

4. 上海

修改主配置文件

options {listen-on port 53 {10.0.0.66; };
        listen-on-v6 port 53 {::1; };
        allow-query     {any;};
        recursion yes;
        dnssec-enable no;
        dnssec-validation no;
};
 include "/etc/named.rfc1912.zones";

创建区域记录,设定转发

zone "sh.jd.com" IN {type master;
        file "sh.jd.com.zone";
};

zone "jd.com" IN {// 设定转发,客户端访问 jd.com 域时全部转发至指定的服务器
        type forward;
        forward first;
        forwarders {10.0.0.57;};         // 设定转发至 10.0.0.57 服务器。
};

创建上海分公司自己管理的区域解析文件。

$TTL 1D
@       IN SOA  dns root.sh.jd.com. (0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns
dns     A       10.0.0.66
ftp     A       10.30.0.12
oa      A       10.30.0.1

四、结果测试

将 windwos 的 DNS 设置为 10.0.0.66,然后尝试解析 10.0.0.67 管理的域。成功得到解析结果。
企业内部 DNS 跨国配置案例

五、测试工具

dig [-t type] name [@SERVER] [query options]
dig只用于测试 dns 系统,不会查询 hosts 文件进行解析
#常用组合
dig www.taobao.com @10.0.0.10                #指定以 10.0.0.10 为 DNS 进行解析
 dig +trace taobao.com                       #跟踪解析的过程

六、注意事项

  • 权限:BIND 安装时会创建一个用户,BIND 运行也是用此用户的身份运行的。所以在解析的时候要确保创建的 namde 用户拥有对数据可的读权限。
  • 端口:在 bind 的主配置文件 named.conf 确保监听的端口已经设置、确保可以对所有人提供 DNS 服务。
  • 主从更新机制:当 Master 的版本号变大时,Slave 才会同步 Master 上的数据。
  • SELinux:SELinux 安全的可能让自己也无法访问服务,索性直接关闭
  • Iptables:当任何配置都没有错误的时候注意防火墙是否配置正确
  • 创建委派 :创建委派一定要将主主配置文件dnssec-enablednssec-validation设置为 no

七、安全相关

在全局配置文件中 /etc/named.conf 可以配置与安全相关的选项

  • allow-query {}:允许查询的主机;白名单
  • allow-transfer {}:允许区域传送的主机;白名单
  • allow-recursion {}: 允许递归的主机, 建议全局使用
  • allow-update {}: 允许更新区域数据库中的内容

七、实验中遇到的坑

  • 启动服务时提示:Failed to start Berkeley Internet Name Domain (DNS).
    解决办法:多半是因为配置文件写错,根据 systemclt status named 查看报警的具体配置
  • rndc reload 同步配置 rndc: neither /etc/rndc.conf nor /etc/rndc.key was found
    解决办法:这个是由于 key 的问题,可以忽略不管付传送门
  • 添加域后重启服务提示 loading from master file sh.jd.com.zone; failed: file not found
    解决办法:检查主配置文件与数据库文件的名字是否相符
  • 创建委派后提示:zone jd.com/IN: sh.jd.com/NS ‘sh.jd.com’ (out of zone) has no addresses records (A or AAAA)配置文件检查无误,返回但是解析无返回结果
    解决办法:在父域中创建委派,然后通过 named-checkzone 命令检查区域配置文件,一直提示 A 记录不存在。检查父域到子域能否 ping 通,检查子域防火墙是否关闭

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-09/147193.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4728字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中