pycod
很多人在说我们讲故事吹NB 但是我们吹过的NB ,正在一一变为现实 !!!!!

https://www.jianshu.com/p/296b2c7ea76f

 

DNS和BIND

0.482018.07.25 10:33:44字数 4,919阅读 4,909

DNS

DNS:Domain Name Service 应用层协议(C/S,53/udp, 53/tcp)

域名

分类:最多可以有127级域名

  • 根域
  • 一级域名:Top Level Domain(tld)顶级域
    • 组织域:.com,。gov,.edu,.mil,.net
    • 国家域:.cn,.jp
    • 反向域:arpa
  • 二级域名
  • 三级域名
 
域名.jpg

解析

查询类型:

  • 递归查询:DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
  • 迭代查询:DNS 服务器接收到客户机请求,会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止

FQDN:Fully Qualified Domain Name,完全合格域名

解析类型:

  • 正向解析:FQDN --> IP
  • 反向解析:IP --> FQDN

类型

  • 主DNS服务器:管理和维护所负责解析的域内解析库的服务器
  • 从DNS服务器:从主服务器或其他的从服务器“复制”(区域传送)解析库副本
  • 缓存DNS服务器
  • 转发服务器

区域传送

利用“通知”机制,来保证主从服务器能及时同步

通知机制:主服务器解析库发生变化时,会主动通知从服务器

同步时一些必要参数:

  • 序列号:解析库版本号,主服务器解析库变化时,其序列递增
  • 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
  • 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
  • 过期时长:从服务器联系不到主服务器时,多久后停止服务

类型

  • 主区域:master
  • 主区域:master
  • 提示区域:hint 定义根域的位置
  • 转发区域:forward 例如:直接告诉.com的位置

资源记录

resource record,简称RR

格式

name [TTL] IN rr_type value

  • TTL可从全局继承

    TTL(Time-To-Live),简单的说它表示一条域名解析记录在DNS服务器上缓存时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。

  • @可用于引用当前区域的名字

  • 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应

  • 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

SOA

Start Of Authority,起始授权记录,表明一个区域内部,主从DNS服务是如何同步数据以及起始授权对象是谁

注意:一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录

name:当前区域的名字,例如“magedu.com.”

value:有多部分组成

  • 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
  • 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如:admin.magedu.com
  • 主从服务区域传输相关定义以及否定的答案的统一的TTL
magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. (
    2015042201      ;序列号,serail number
    2H              ;刷新时间,refresh
    10M             ;重试时间,retry
    1W              ;过期时间,expire
    1D              ;否定答案的TTL值,nigative answer TTL
)

NS

Name Server,专用于标明当前区域的DNS服务器

name:当前区域的名字

value: 当前区域的某DNS服务器的名字,例如ns.magedu.com.

magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.

注意:

  • 相邻的两个资源记录的name相同时,后续的可省略
  • 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录

A

internet Address,FQDN-->IP IPV4

name: 某主机的FQDN,例如www.magedu.com.

value: 主机名对应主机的IP地址

www.magedu.com.         IN A 1.1.1.1
www.magedu.com.         IN A 2.2.2.2
mx1.magedu.com.         IN A 3.3.3.3
mx2.magedu.com.         IN A 4.4.4.4
$GENERATE 1-254 HOST$       A 1.2.3.$       # 主机名和ip地址同名的时候可以这样操作,避免重复操作
*.magedu.com.           IN A 5.5.5.5        # 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
magedu.com.             IN A 6.6.6.6

AAAA

FQDN --> IPv6

name:FQDN

value:IPv6

MX

Mail eXchanger,邮件交换器

name:当前区域的名字

value:当前区域的某邮件服务器(smtp服务器)的主机名

magedu.com. IN MX 10 mx1.magedu.com.
            IN MX 20 mx2.magedu.com.

注意:

  • 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
  • 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
  • MX记录只能定义在正向区域文件中,不能定义到反向区域文件中

CNAME

Canonical Name,别名记录

name:别名的FQDN

value:真正名字的FQDN

www.magedu.com. IN CNAME websrv.magedu.com.

PTR

PoinTeR,IP --> FQDN

name:IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.

value: FQDN

4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.
# 如1.2.3为网络地址,可简写成:
4                   IN PTR www.magedu.com.

注意:网络地址及后缀可省略;主机地址依然需要反着写

子域授权

网络地址及后缀可省略;主机地址依然需要反着写

类似根域授权tld:

.com.    IN NS ns1.com.
.com.    IN NS ns2.com.
ns1.com. IN A 2.2.2.1
ns2.com. IN A 2.2.2.2

magedu.com. 在.com的名称服务器上,解析库中添加资源记录

magedu.com.     IN NS ns1.magedu.com.
magedu.com.     IN NS ns2.magedu.com.
magedu.com.     IN NS ns3.magedu.com.
ns1.magedu.com. IN A 3.3.3.1
ns2.magedu.com. IN A 3.3.3.2
ns3.magedu.com. IN A 3.3.3.3

glue record:粘合记录,父域授权子域的记录

BIND

BIND:Bekerley Internat Name Domain

/etc/named.conf # 主配置文件

/etc/named.rfc1912.zones # 专门的zone配置文件

/etc/rndc.conf # rdnc配置文件
/etc/rndc.key # 用来远程控制DNS服务的密钥文件

/usr/sbin/named # 二进制程序
/usr/sbin/named-checkconf # 检查配置文件语法
/usr/sbin/named-checkzone # 检查zone文件语法
/usr/sbin/named-compilezone
/usr/sbin/named-journalprint # 查看jnl文件

/usr/sbin/rndc

/var/log/named.log # 日志文件
/var/named
/var/named/data
/var/named/dynamic
/var/named/named.ca # 用于存放根服务器的地址信息
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
/var/named/slaves

/etc/named.conf

[root@centos7 ~]# cat /etc/named.conf

options {
    listen-on port 53 { 127.0.0.1; }; # IPv4地址监听端口及监听的主机列表
    listen-on-v6 port 53 { ::1; }; # IPv6地址监听端口及监听的主机列表
    directory   "/var/named"; # 服务器的工作目录
    dump-file   "/var/named/data/cache_dump.db"; # 当执行rndc dumpdb时服务器dump文件的路径
    statistics-file "/var/named/data/named_stats.txt"; # 执行rndc stats将服务器的统计信息写入文件,默认为named.stats
    memstatistics-file "/var/named/data/named_mem_stats.txt"; # 默认为named.memestats,当退出的服务的时候将服务器的统计信息写到文件中
    allow-query     { localhost; }; # 允许查询的主机列表,表示可以对主机列表里的主机提供服务
    allow-transfer { any;}; # 指定哪些主机可以从服务器上接收区域传输,未指定将允许传输到所有的主机,默认是any,极其不安全,通常修改为指定主机或none

    recursion yes; # 是否开启递归查询请求,设置为no的话,不去找根

    dnssec-enable yes; # dns安全策略,建议关闭
    dnssec-validation yes; # dns安全策略,建议关闭

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";

    managed-keys-directory "/var/named/dynamic";

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
    type hint;
    file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

ACL

把一个或多个地址归并为一个集合,并通过一个统一的名称调用

四个内置acl:

  • none:没有一个主机
  • any:任意主机
  • localhost:本机
  • localnet:本机的IP同掩码运算后得到的网络地址,即本机ip所在的网段

注意:只能先定义,后使用;因此一般定义在配置文件中,处于options的前面

访问控制的指令:

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

测试工具

dig

dig [-t type] name [@SERVER][query options]

注意:dig只用于测试dns系统,不会查询hosts文件进行解析

查询选项:

  • 跟踪解析过程:dig +trace magedu.com
  • 进行递归解析:dig +recurse magedu.com
  • 测试反向解析:dig -x IP
  • 模拟区域传送:
[root@xuexi ~]# dig -t a www.longshuai.com
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7_3.1 <<>> -t a www.longshuai.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8670
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.longshuai.com.             IN      A

;; ANSWER SECTION:
www.longshuai.com.      21600   IN      A       172.16.10.16

;; AUTHORITY SECTION:
longshuai.com.          21600   IN      NS      dnsserver.longshuai.com.

;; ADDITIONAL SECTION:
dnsserver.longshuai.com. 21600  IN      A       172.16.10.15

;; Query time: 0 msec
;; SERVER: 172.16.10.15#53(172.16.10.15)
;; WHEN: Sat Aug 12 23:38:17 CST 2017
;; MSG SIZE  rcvd: 102

在结果中:

  • QUESTION SECTION:表示所发起的查询
  • ANSWER SECTION:表示对查询的回复
  • AUTHORITY SECTION:表示该查询是权威服务器给的答案,并给出了权威服务器的ns记录
  • ADDITIONAL SECTION:表示额外的回复,回复的内容是权威服务器的A记录。

host

host [-t type] name [SERVER]

nslookup

nslookup [-option][name | -][server]

也可使用交互式

rndc

remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程

提供辅助性的管理功能;953/tcp

rndc COMMAND:

  • reload:重载主配置文件和区域解析库文件
  • reload zonename:重载区域解析库文件
  • retransfer zonename:手动启动区域传送,而不管序列号是否增加
  • notify zonename:重新对区域传送发通知
  • reconfig:重载主配置文件
  • querylog:开启或关闭查询日志文件/var/log/message,排错时可临时开启,长时间开启无端增加了磁盘IO,因此一般不要开启
  • trace:递增debug一个级别
  • trace LEVEL:指定使用的级别
  • notrace:将调试级别设置为 0
  • flush:清空DNS服务器的所有缓存记录

CDN

Content Delivery Network,内容分发网络

CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求

 
CDN.jpeg

view

用于实现智能DNS

  • 一个bind服务器可定义多个view,每个view中可定义一个或多个zone
  • 每个view用来匹配一组客户端
  • 多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件

注意:

  • 一旦启用了view,所有的zone都只能定义在view中
  • 仅在允许递归请求的客户端所在view中定义根区域
  • 客户端请求到达时,是自上而下检查每个view所服务的客户端列表,因此特别注意顺序

格式:

view VIEW_NAME {
    match-clients { testacl; };
    zone “magedu.com” {
        type master;
        file “magedu.com.zone”; };
        include “/etc/named.rfc1912.zones”;
};

view VIEW_NAME {
    match-clients { testacl; };
    include “/etc/named.rfc1912.zones.VIEW_NAME”;
};

DNS排错

# dig A example.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523
...
SERVFAIL:The nameserver encountered a problem while processing the query.
  • NXDOMAIN:The queried name does not exist in the zone.(可能是CNAME对应的A记录不存在导致)
  • REFUSED:The nameserver refused the client's DNS request due to policy restrictions.(可能是DNS策略导致)
  • NOERROR不代表没有问题,也可以是过时的记录
  • 查看是否为权威记录,flags:aa标记判断
  • 被删除的记录仍能返回结果,可能是因为*记录存在

实现只缓存DNS服务

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
    allow-query     { any; }; # 修修改可以以为任何主机提供服务
    
  2. named-checkconf:主配置文件语法检查

  3. rndc reload

实现正向主DNS服务

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
    allow-query     { any; }; # 修修改可以以为任何主机提供服务
    
  2. vim /etc/named.rfc1912.zones

    zone "magedu.com" IN {
            type master;
            file "magedu.com.zone";
    };
    
  3. named-checkconf

  4. cp -a named.localhost magedu.com.zone:为了保证权限,也可以自己创建,记得修改权限

    vim magedu.com.zone

    $TTL 1D
    @       IN SOA  dns1 admin.magedu.com (
                                            2018072201      ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
                   NS       dns1
    dns1           A       192.168.31.71
    web-nginx01    A       1.1.1.1
    web-nginx02    A       1.1.1.2
    app-tomcat01   A       2.2.2.2
    www           CNAME   web-nginx01
    *              A       192.168.31.71 # 泛域名解析
    @              A       192.168.31.71 # 直接解析本域
    $GENERATE 1-100 web-nginx0$ A 1.1.1.$
    
  5. named-checkzone magedu.com magedu.com.zone:如当前工作目录不是/var/named/,需要使用绝对路径

  6. rndc reload

实现反向主DNS服务

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
    allow-query     { any; }; # 修修改可以以为任何主机提供服务
    
  2. vim /etc/named.rfc1912.zones

    zone "39.168.192.in-addr.arpa" IN {
            type master;
            file "39.168.192.in-addr.arpa.zone";
    };
    
  3. named-checkconf

  4. cp -a named.localhost 39.168.192.in-addr.arpa.zone:为了保证权限,也可以自己创建,记得修改权限

    vim 39.168.192.in-addr.arpa.zone

    $TTL 86400
    @       IN SOA  dns1.magedu.com. admin.magedu.com. (
                                            2018072201      ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
                   NS      dns1.magedu.com.
    71             PTR     dns1.magedu.com.
    100            PTR     www.qq.com. # 正反向解析结果最好一致
    
  5. named-checkzone 39.168.192.in-addr.arpa 39.168.192.in-addr.arpa.zone:如当前工作目录不是/var/named/,需要使用绝对路径

  6. rndc reload

实现远程动态更新DNS服务

  1. vim /etc/named.rfc1912.zones:在指定zone语句块中添加

    Allow-update {any;}; # 为了安全最好仅允许指定主机
    
  2. chmod 770 /var/named:动态更新实质上就是named用户将指定资源记录写到生成的/var/named/{指定zone}.jnl文件中,随后再同步到指定的zone文件中,因此需要再目录下有w权限

  3. nsupdate

    •>server 192.168.39.71
    •>zone magedu.com
    •>update add ftp.magedu.com 86400 IN A 8.8.8.8 # 这里的TTL不能省略
    •>send
    •>update delete www.magedu.com A
    •>send
    

实现主从DNS服务

主DNS:

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
    allow-query     { any; }; # 修修改可以以为任何主机提供服务
    
    allow-transfer { 192.168.39.72; }; # 允许从服务器拉取数据,注意中花括号前后均有空格
    
  2. named-checkconf

  3. vim /var/named/magedu.com.zone:将从服务器信息添加到指定zone文件中

    $TTL 1D
    @    IN SOA  dns1 admin.magedu.com (
                     2018072201  ; serial
                     1D  ; refresh
                     1H  ; retry
                     1W  ; expire
                     3H )    ; minimum
            NS      dns1
                   NS      dns2
    dns1           A       192.168.39.71
    dns2           A       192.168.39.72
    web-nginx01    A       1.1.1.1
    web-nginx02    A       1.1.1.2
    app-tomcat01   A       2.2.2.2
    www           CNAME   web-nginx01
    *              A       192.168.39.71
    @              A       192.168.39.71
    $GENERATE 1-100 web-nginx0$ A 1.1.1.$
    
  4. named-checkzone magedu.com. magedu.com.zone

从DNS:

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
    allow-query     { any; }; # 修修改可以以为任何主机提供服务
    
    allow-transfer { none; }; # 为了安全禁止任何主机拉取
    
  2. vim /etc/named.rfc1912.zones

    zone "magedu.com" IN {
            type slave;
            masters { 192.168.39.71; };
            file "slaves/magedu.com.slave.zone";
    };
    
  3. named-checkconf

  4. ls /var/named/slave/:查看是否拉取成功

实现子域委派

父域DNS:

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
    allow-query     { any; }; # 修修改可以以为任何主机提供服务
    
    dnssec-enable no; # 关闭加密
    dnssec-validation no;
    
  2. vim /var/named/magedu.com.zone

    $TTL 1D
    @       IN SOA  dns1 admin (
                                            2018072209      ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
                   NS      dns1
    shanghai       NS      dns2 # 添加shanghai子域信息
    dns1           A       192.168.39.71
    dns2           A       192.168.39.72
    www.beijing    A       3.3.3.3 # 主机少的情况下,可以直接在父域直接定义子域中的主机
    www            A       1.1.1.1
    
  3. rndc reload

子域DNS:

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本机所有ip绑定53端口
    allow-query     { any; }; # 修修改可以以为任何主机提供服务
    
  2. vim /etc/named.rfc1912.zones

    zone "shanghai.magedu.com" IN {
            type master;
            file "shanghai.magedu.com.zone";
    };
    
  3. scp 192.168.39.71:/var/named/magedu.com.zone shanghai.magedu.com.zone:由于scp默认root身份执行,导致文件权限出错,一定要注意文件权限

    vim /var/named/shanghai.magedu.com.zone

    $TTL 1D
    @       IN SOA  dns1 admin (
                                            2018072201      ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
                   NS      dns1
    dns1           A       192.168.39.72
    www            A       2.2.2.2
    
  4. rndc reload

实现转发DNS服务

forward first/only:表示如果 forwarders list 为非空,默认为first值,服务器首先请求 forwarders list ,如果 forwarders list 中的DNS主机不应答,该主机将自己去找应答,如果设置值为only,服务器将只会请求 forwarders中的DNS主机

forwarders:指定用来 forwarding的ip地址. 默认为空列(即不转发)

全局转发

对非本机所负责解析区域的请求,全转发给指定的服务器

vim /etc/named.conf

Options {
    forward first|only;
    forwarders { ip;};
};

特定区域转发

仅转发对特定的区域的请求,比全局转发优先级高

vim /etc/named.rfc1912.zones

zone "ZONE_NAME" IN {
    type forward;
    forward first|only;
    forwarders { ip;};
};

实现智能DNS服务

  1. vim /etc/named.conf:acl必须在option前添加,而且注意迁移zone,因为一旦启用view,所有的zone都必须定义装载view中

    acl beijingnet {
            192.168.31.0/24;
            10.0.0.0/8;
    };
    acl shanghainet {
            172.18.0.0/16;
    
    };
    acl othernet {
            any;
    };
    options {
     ......
    };
    logging {
     ......  
    };
    
    view  beijingview {
            match-clients {beijingnet;};
            include "/etc/named.rfc1912.zones.bj";
    }; 
    view shanghaiview {
            match-clients {shanghainet;};
            include "/etc/named.rfc1912.zones.sh";
    };
    view otherview {
             match-clients {othernet;};
             include "/etc/named.rfc1912.zones.other";
    };
    
    include "/etc/named.rfc1912.zones"; # 删除此行,所有的zone都将定义在view中
    ......
    
  2. vim /etc/named.rfc1912.zones.bj

    zone "magedu.com" IN {
            type master;
            file "magedu.com.zone.bj";
    };
    

    vim /etc/named.rfc1912.zones.sh

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

    vim /etc/named.rfc1912.zones.other

    zone "magedu.com" IN {
            type master;
            file "magedu.com.zone.other";
    };
    
  3. vim /var/named/magedu.com.zone.bj

    $TTL 1D
    @    IN SOA  dns1 admin (
                     2018072209  ; serial
                     1D  ; refresh
                     1H  ; retry
                     1W  ; expire
                     3H )    ; minimum
            NS      dns1
    dns1           A       192.168.39.71
    www            A       1.1.1.1
    

    vim /var/named/magedu.com.zone.sh

    ......
    www             A       2.2.2.2
    

    vim /var/named/magedu.com.zone.other

    ......
    www             A       3.3.3.3
    

实现互联网架构DNS服务

 
DNS架构.png

注意:

  • 从后往前搭建,好测试
  • 测试时注意rndc flush,因为有缓存时优先使用缓存
  1. 配置www主机:

    • yum install -y httpd

    • vim /var/www/html/index.html

      Welcome to magedu!
      
    • systemctl start httpd

  2. 配置主DNS:

    • vim /etc/named.conf

      listen-on port 53 { localhost; };
      allow-query     { any; };
      allow-transfer   { 192.168.39.75; };
      dnssec-enable no;
      dnssec-validation no;
      
    • vim /etc/named.rfc1912.zones

      zone "magedu.com" IN {
              type master;
              file "magedu.com.zone";
      };
      
    • named-checkconf

    • vim /var/named/magedu.com.zone

      $TTL 1D
      @              IN  SOA  dns1  admin ( 
                              2018072401
                              1D
                              2H
                              3D
                              1D )
              NS   dns1
              NS   dns2
      dns1    A    192.168.39.74
      dns2    A    192.168.31.75
      www     A    192.168.31.76
      
    • chmod 640 magedu.com.zone

    • chown :named magedu.com.zone

    • named-checkzone magedu.com. magedu.com.zone

    • systemctl start named

  3. 配置从DNS:

    • vim /etc/named.conf

      listen-on port 53 { localhost; };
      allow-query     { any; };
      allow-transfer   { 192.168.39.75; };
      dnssec-enable no;
      dnssec-validation no;
      
    • vim /etc/named.rfc1912.zones

      zone "magedu.com" IN {
              type slave;
              masters { 192.168.39.74; };
              file "slaves/magedu.com.slave.zone";
      };
      
    • named-checkconf

    • systemctl start named

  4. 配置comDNS:

    • vim /etc/named.conf

      listen-on port 53 { localhost; };
      allow-query     { any; };
      dnssec-enable no;
      dnssec-validation no;
      
    • vim /etc/named.rfc1912.zones

      zone "com" IN {
              type master;
              file "com.zone";
      };
      
    • named-checkconf

    • vim /var/named/com.zone

      $TTL 1D
      @              IN  SOA  dns1  admin ( 
                              2018072401
                              1D
                              2H
                              3D
                              1D )
              NS   dns1
      magedu  NS   dns2
      magedu  NS   dns3
      dns1    A    192.168.39.73
      dns2    A    192.168.39.74
      dns3    A    192.168.39.75
      
    • chmod 640 com.zone

    • chown :named com.zone

    • named-checkzone com. com.zone

    • systemctl start named

  5. 配置根DNS:

    • vim /etc/named.conf

      listen-on port 53 { localhost; };
      allow-query     { any; };
      dnssec-enable no;
      dnssec-validation no;
      
      zone "." IN {
              type master;
              file "root.zone";
      };
      
    • named-checkconf

    • vim /var/named/root.zone

      $TTL 1D
      @              IN  SOA  dns1  admin ( 
                              2018072401
                              1D
                              2H
                              3D
                              1D )
              NS   dns1
      com     NS   dns2
      dns1    A    192.168.39.72
      dns2    A    192.168.39.73
      
    • chmod 640 root.zone

    • chown :named root.zone

    • named-checkzone . root.zone

    • systemctl start named

  6. 配置局域网DNS:

    • vim /etc/named.conf

      listen-on port 53 { localhost; };
      allow-query     { any; };
      dnssec-enable no;
      dnssec-validation no;
      
    • vim /var/named/named.ca

      .         86400       IN   NS  dns1
      dns1      86400            A   192.168.39.72
      
    • systemctl start named

  7. 配置client:

    • vim /etc/resolv.conf

      nameserver 192.168.39.71
      

编译安装BIND

  1. 下载bind

    • isc.org
  2. 编译安装bind

    • tar xvf bind-9.11.0a3.tar.gz
    • cd bind-9.11.0a3/
    • groupadd -r -g 53 named
    • useradd -r -u 53 -g 53 named
    • ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --without-openssl --disable-ipv6 --disable-chroot --enable-threads
    • make
    • make install
  3. 环境变量

    • vim /etc/profile.d/named.sh

      export PATH=/usr/local/bind9/bin:
      /usr/local/bind9/sbin/:$PATH
      
  4. 库和头文件

    • vim /etc/ld.so.conf.d/named.conf

      /usr/local/bind9/lib
      
    • ldconfig –v

    • ls -sv /usr/local/bind9/include /usr/include/named

  5. man帮助

    • vim /etc/man.config | /etc/man_db.conf

      MANPATH /usr/local/bind9/share/man
      
    • man named.conf

  6. 主配置文件

    • vim /etc/named/named.conf

      options {
         directory "/var/named/"
      };
      zone "." IN {
         type hint;
         file "named.ca";
      };
      zone "localhost" IN {
         type master;
         file “named.localhost";
         allow-update {none;};
      };
      zone “1.0.0.127.in-addr.arpa" IN {
         type master;
         file "named.loopback";
         allow-update {none;};
      };
      
  7. 区域数据库

    • mkdir /var/named

    • named-checkconf

    • dig +norec @a.root-servers.net > /var/named/named.ca

    • vim /var/named/named.localhost

      $TTL 1d
      @ IN SOA localhost. admin.localhost. (
                         2016061801
                         1h
                         5m
                         7d
                         1d)
      IN NS localhost.
      localhost. IN A 127.0.0.1
      
    • vim /var/named/named.loopback

      $TTL 1d
      @ IN SOA localhost. admin.localhost. (
                         2016061801
                         1h
                         5m
                         7d
                         1d)
         NS @
         A 127.0.0.1
         PTR localhost.
      
  8. 设置权限

    • chmod 640 /var/named/*
    • chmod 640 /etc/named/named.conf
    • chgrp -R named /var/named/
    • chgrp named /etc/named/named.conf
  9. 启动服务和测试

    • man named
    • named -u named -f -g -d 3 前端级别3方式运行
    • named -u named 后台运行
    • killall named
    • ss -tuln
    • tail /var/log/message
    • named -u named
posted on 2020-10-14 18:00  pycod  阅读(239)  评论(0编辑  收藏  举报