DNS and BIND

    1. DNS: Domain Name Service,协议(C/S, 53/udp, 53/tcp);应用层协议;
    2. BINDBekerley Internat Name Domain, ISC www.isc.org
    3. TCP: 面向连接的协议;
    4. UDP: User Datagram Protocol,无连接协议
    5. 本地名称解析配置文件:hosts
    6. /etc/hosts
    7. %WINDOWS%/system32/drivers/etc/hosts
    8. 1.1.1.1 www.magedu.com
    9. 1.2.2.2 www.apple.com
    10. Top Level Domain: tld
    11. com, edu, mil, gov, net, org, int
    12. 三类:组织域、国家域(.cn, .iq, .hk, .tw)、反向域
    13. DNS查询类型:
    14. 递归查询
    15. 迭代查询
    16. 名称服务器:域内负责解析本域内的名称的主机;
    17. 根服务器:13组服务器
    18. 解析类型:
    19. Name --> IP
    20. IP --> Name
    21. 注意:正反向解析是两个不同的名称空间,是两棵不同的解析树;
    22. DNS服务器的类型:
    23. DNS服务器
    24. 辅助DNS服务器
    25. 缓存DNS服务器
    26. 转发器
    27. DNS服务器:维护所负责解析的域内解析库服务器;解析库由管理维护;
    28. DNS服务器:从主DNS服务器或其它的从DNS服务器那里“复制”(区域传递)一份解析库;
    29. 序列号:解析库的版本号;前提:主服务器解析库内容发生变化,其序列递增;
    30. 刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔;
    31. 重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔;
    32. 过期时长:从服务器始终联系不到主服务器时,多久多后放弃从服务器角度,停止提供服务;
    33. "通知"机制:
    34. 区域传送:
    35. 全量传送:传送整个解析库
    36. 增量传送:传递解析库变化的那部分内容
    37. DNS:
    38. Domain:
    39. 正向:FQDN --> IP
    40. 反向: IP --> FQDN
    41. 各需要一个解析库来分别负责本地域名的正向和反向解析
    42. 正向区域
    43. 反向区域
    44. FQDN: Full Qualified Domain Name
    45. www.magedu.com.
    46. 一次完整的查询请求经过的流程:
    47. Client --> hosts文件 --> DNS Service
    48. Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) -->
    49. 解析答案:
    50. 肯定答案:
    51. 否定答案:请求的条目不存在等原因导致无法返回结果;
    52. 权威答案:
    53. 非权威答案:
    54. 区域解析库:由众多RR组成:
    55. 资源记录:Resource Record, RR
    56. 记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
    57. SOAStart Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录;
    58. Ainternet Address,作用,FQDN --> IP
    59. AAAA: FQDN --> IPv6
    60. PTR: PoinTeRIP --> FQDN
    61. NS: Name Server,专用于标明当前区域的DNS服务器
    62. CNAMECanonical Name,别名记录
    63. MX: Mail eXchanger,邮件交换器
    64. 资源记录定义的格式:
    65. 语法:name [TTL] IN rr_type value
    66. 注意:
    67. (1) TTL可从全局继承;
    68. (2) @可用于引用当前区域的名字;
    69. (3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应;
    70. (4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机而已;
    71. SOA:
    72. name: 当前区域的名字,例如“magedu.com.”;
    73. value: 有多部分组成
    74. (1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
    75. (2) 录前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com
    76. (3) (主从服务协调属性的定义以及否定的答案的统一的TTL)
    77. 例如:
    78. magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. (
    79. 2015042201 ;序列号
    80. 2H ;刷新时间
    81. 10M ;重试时间
    82. 1W ;过期时间
    83. 1D ;否定答案的TTL
    84. )
    85. NS:
    86. name: 当前区域的名字
    87. value: 当前区域的某DNS服务器的名字,例如ns.magedu.com.;
    88. 注意:一个区域可以有多个NS记录;
    89. 例如:
    90. magedu.com. IN NS ns1.magedu.com.
    91. magedu.com. IN NS ns2.magedu.com.
    92. 注意:
    93. (1) 相邻的两个资源记录的name相同时,后续的可省略;
    94. (2) NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录;
    95. MX:
    96. name: 当前区域的名字
    97. value: 当前区域的某邮件服务器(smtp服务器)的主机名;
    98. 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高;
    99. 例如:
    100. magedu.com. IN MX 10 mx1.magedu.com.
    101. IN MX 20 mx2.magedu.com.
    102. 注意:
    103. (1) MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录;
    104. A:
    105. name: 某主机的FQDN,例如www.magedu.com.
    106. value: 主机名对应主机的IP地址;
    107. 例如:
    108. www.magedu.com. IN A 1.1.1.1
    109. www.magedu.com. IN A 1.1.1.2
    110. mx1.magedu.com. IN A 1.1.1.3
    111. mx2.magedu.com. IN A 1.1.1.3
    112. 注意:
    113. *.magedu.com. IN A 1.1.1.4
    114. magedu.com. IN A 1.1.1.4
    115. 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址;
    116. AAAA:
    117. name: FQDN
    118. value: IPv6
    119. PTR:
    120. name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addra.arpa.
    121. value: FQDN
    122. 例如:
    123. 4.3.2.1.in-addr.arpa. IN PTR www.magedu.com
    124. 简写成:
    125. 4 IN PTR www.magedu.com.
    126. 注意:网络地址及后缀可省略;主机地址依然需要反着写;
    127. CNAME
    128. name: 别名的FQDN
    129. value: 正工名字的FQDN
    130. 例如:
    131. web.magedu.com. IN CNAME www.magedu.com.

    回顾:dns服务系统的基础知识、DNS资源记录定义的方法

    1. dns: udp, tcp 名称解析服务,53/udp, 53/tcp
    2. 查询:
    3. 递归查询、迭代查询;
    4. 解析:正向、反向;
    5. 权威、非权威;
    6. 主、从DNS服务器:区域传送
    7. 全量传送
    8. 增量传送
    9. SOA
    10. 序列号、刷新时间、重试时间、过期时间、否定的应答TTL
    11. H, D, M, W
    12. BIND:
    13. RR类型:A, PTR, NS, MX, CNAME, SOA, AAAA
    14. 语法:
    15. name [TTL] IN rr_type value

    DNS and BIND(2)

    1. 子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权;
    2. 类似根域授权tld:
    3. .com. IN NS ns1.com.
    4. .com. IN NS ns2.com.
    5. ns1.com. IN A 2.2.2.1
    6. ns2.com. IN A 2.2.2.2
    7. magedu.com. 在.com的名称服务器上,解析库中添加资源记录:
    8. magedu.com. IN NS ns1.magedu.com.
    9. magedu.com. IN NS ns2.magedu.com.
    10. magedu.com. IN NS ns3.magedu.com.
    11. ns1.magedu.com. IN A 3.3.3.1
    12. ns2.magedu.com. IN A 3.3.3.2
    13. ns3.magedu.com. IN A 3.3.3.3
    14. glue record:粘合记录
    15. 域名注册:
    16. 代理商:万网, 新网;godaddy
    17. 注册完成以后,想自己用专用服务来解析?
    18. (1) 管理后台:把NS记录指向的服务器名称,和A记录指向的服务器地址;
    19. BIND的安装配置:
    20. dns服务,程序包名bind,程序名named
    21. 程序包:
    22. bind
    23. bind-libs
    24. bind-utils
    25. bind-chroot: /var/named/chroot/
    26. bind
    27. 服务脚本:/etc/rc.d/init.d/named
    28. 主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
    29. 解析库文件:/var/named/ZONE_NAME.ZONE
    30. 注意:
    31. (1) 一台物理服务器可同时为多个区域提供解析;
    32. (2) 必须要有根区域文件;named.ca
    33. (3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库;
    34. rndc: remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1来连接named进程;提供辅助性的管理功能;
    35. 953/tcp
    36. 主配置文件:
    37. 全局配置:options {}
    38. 日志子系统配置:logging {}
    39. 区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
    40. zone "ZONE_NAME" IN {}
    41. 注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上;
    42. 缓存名称服务器的配置:
    43. 监听外部地址即可;
    44. dnssec:
    45. 建议测试时关闭dnssec
    46. DNS名称服务器:
    47. (1) 在主配置文件中定义区域
    48. zone "ZONE_NAME" IN {
    49. type {master|slave|hint|forward};
    50. file "ZONE_NAME.zone";
    51. };
    52. (2) 定义区域解析库文件
    53. 出现的内容:
    54. 宏定义;
    55. 资源记录;
    56. 示例:
    57. $TTL 86400
    58. $ORIGIN magedu.com.
    59. @ IN SOA ns1.magedu.com. admin.magedu.com (
    60. 2015042201
    61. 1H
    62. 5M
    63. 7D
    64. 1D )
    65. IN NS ns1
    66. IN NS ns2
    67. IN MX 10 mx1
    68. IN MX 20 mx2
    69. ns1 IN A 172.16.100.11
    70. ns2 IN A 172.16.100.12
    71. mx1 IN A 172.16.100.13
    72. mx2 IN A 172.16.100.14
    73. www IN A 172.16.100.11
    74. www IN A 172.16.100.12
    75. ftp IN CNAME www
    76. 测试命令:dig的使用
    77. dig [-t type] name [@SERVER] [query options]
    78. dig用于测试dns系统,因此,不会查询hosts文件进行解析;
    79. 查询选项:
    80. +[no]trace:跟踪解析过程
    81. +[no]recurse:进行递归解析
    82. 测试反向解析:
    83. dig -x IP @SERVER
    84. 模拟区域传送:
    85. dig -t axfr ZONE_NAME @SERVER
    86. 例如:dig -t axfr magedu.com @172.16.100.11
    87. host命令:
    88. host [-t type] name [SERVER]
    89. nslookup命令:
    90. nslookup [-option] [name | -] [server]
    91. 交互式模式:
    92. nslookup>
    93. server IP: 指明使用哪个DNS server进行查询;
    94. set q=RR_TYPE: 指明查询的资源记录类型;
    95. NAME: 要查询的名称;
    96. 反向区域:
    97. 区域名称:网络地址反写.in-addr.arpa.
    98. 172.16.100. --> 100.16.172.in-addr.arpa.
    99. (1) 定义区域
    100. zone "ZONE_NAME" IN {
    101. type {master|slave|forward};
    102. file "网络地址.zone"
    103. };
    104. (2) 区域解析库文件
    105. 注意:不需要MXA,以及AAAA记录;以PTR记录为主;
    106. 示例:
    107. $TTL 86400
    108. $ORIGIN 100.16.172.in-addr.arpa.
    109. @ IN SOA ns1.magedu.com. admin.magedu.com. (
    110. 2015042201
    111. 1H
    112. 5M
    113. 7D
    114. 1D )
    115. IN NS ns1.magedu.com.
    116. IN NS ns2.magedu.com.
    117. 11 IN PTR ns1.magedu.com.
    118. 11 IN PTR www.magedu.com.
    119. 12 IN PTR mx1.magedu.com.
    120. 12 IN PTR www.magedu.com.
    121. 13 IN PTR mx2.magedu.com.
    122. 主从复制:
    123. 1、应该为一台独立的名称服务器;
    124. 2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;
    125. 3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中;
    126. 4、主服务器得允许从服务器作区域传送;
    127. 5、主从服务器时间应该同步,可通过ntp进行;
    128. 6bind程序的版本应该保持一致;否则,应该从高,主低;
    129. 定义从区域的方法:
    130. zone "ZONE_NAME" IN {
    131. type slave;
    132. masters { MASTER_IP; };
    133. file "slaves/ZONE_NAME.zone";
    134. };
    135. rndc
    136. rndc --> rndc (953/tcp)
    137. rndc COMMAND
    138. COMMAND:
    139. reload: 重载主配置文件和区域解析库文件
    140. reload zone: 重载区域解析库文件
    141. retransfer zone: 手动启动区域传送过程,而不管序列号是否增加;
    142. notify zone: 重新对区域传送发通知;
    143. reconfig: 重载主配置文件
    144. querylog: 开启或关闭查询日志;
    145. trace: 递增debug级别;
    146. trace LEVEL: 指定使用的级别;
    147. 博客作业:dns基本工作原理,及正反向解析和主从同步;

    回顾:bind的安装配置、测试工具、正向解析区域、反向解析区域、主从同步

    1. bind安装:bind, bind-libs, bind-utils
    2. 正向解析区域:
    3. (1) zone "ZONE_NAME" IN {
    4. type master;
    5. file "ZONE_NAME.zone";
    6. };
    7. (2) 区域解析库
    8. SOA, NS, MX, A, CNAME
    9. 反向解析区域:
    10. (1) zone "Reverse_Net_Addr.in-addr.arpa" IN {
    11. type master;
    12. file "SOMEFILE.zone";
    13. }
    14. (2) 区域解析库
    15. SOA, NS, PTR
    16. 测试工具:dig, host, nslookup
    17. 主从同步:
    18. 主服务器:授权允许同步;
    19. (1) NS记录;
    20. (2) 授权允许区域传送;
    21. 从服务器:
    22. (1) 只需定义区域;

    DNS and BIND(3)

    1. 子域授权:分布式数据库
    2. 正向解析区域子域方法:
    3. 定义一个子区域:
    4. ops.magedu.com. IN NS ns1.ops.magedu.com.
    5. ops.magedu.com. IN NS ns2.ops.magedu.com.
    6. ns1.ops.magedu.com. IN A 1.1.1.1
    7. ns2.ops.magedu.com. IN A 1.1.1.2
    8. fin.magedu.com. IN NS ns1.fin.magedu.com.
    9. fin.magedu.com. IN NS ns2.fin.magedu.com.
    10. ns1.fin.magedu.com. IN A 3.1.1.1
    11. ns2.fin.magedu.com. IN A 3.1.1.2
    12. 定义转发服务器:
    13. 注意:被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行;
    14. (1) 全部转发: 凡是对非本机所有负责解析的区域的请求,统统转发给指定的服务器;
    15. Options {
    16. forward {first|only}
    17. fowwarders
    18. }
    19. (2) 区域转发:仅转发对特定的区域的请求至某服务器;
    20. zone "ZONE_NAME" IN {
    21. type forward;
    22. forward {first|only}
    23. forwarders
    24. }
    25. 注意:关闭dnssec功能:
    26. dnssec-enable no;
    27. dnssec-validation no;
    28. bind中基础的安全相关的配置:
    29. acl: 把一个或多个地址归并为一个集合,并通过一个统一的名称调用;
    30. acl acl_name {
    31. ip;
    32. ip;
    33. net/prelen;
    34. };
    35. 示例:
    36. acl mynet {
    37. 172.16.0.0/16;
    38. }
    39. bind有四个内置的acl:
    40. none: 没有一个主机;
    41. any: 任意主机;
    42. local: 本机;
    43. localnet: 本机的IP同掩码运算后得到的网络地址;
    44. 注意:只能先定义,后使用;因此,其一般定义在配置文件中options的前面;
    45. 访问控制的指令:
    46. allow-query {}: 允许查询的主机;白名单;
    47. allow-transfer {}:允许区域传送的主机;白名单;
    48. allow-recursion {}: 允许递归的主机;
    49. allow-update {}: 允许更新区域数据库中的内容;
    50. bind view:
    51. 视图:
    52. 一个bind服务器可定义多个view,每个view中可定义一个或多个zone
    53. 每个view用一来匹配一组客户端;
    54. 多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件;
    55. view VIEW_NAME {
    56. match-clients { };
    57. }
    58. 注意:
    59. (1) 一旦启用了view,所有的zone都只能定义在view中;
    60. (2) 仅有必要在匹配到允许递归请求的客户所在view中定义根区域;
    61. (3) 客户端请求到达时,是自上而下检查每个view所服务的客户端列表;
    62. CDN: Content Delivery Network
    63. 智能DNS:
    64. dnspod
    65. dns.la
    66. 编译安装bind:
    67. isc.org:
    68. bind-9.8
    69. bind-9.9
    70. bind-10
    71. bind-9.10
    72. # tar
    73. # cd
    74. # groupadd -r -g 53 named
    75. # useradd -r -u 53 -g 53 named
    76. # ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
    77. # make
    78. # make install
    79. 前次博客作业附加:子域授权和view

    回顾:子域授权、名称解析请求转发、view;

    1. CAP理论:A, P
    2. C: 最终一致性;
    3. glue record
    4. 正向区域:
    5. 父域:
    6. ops.magedu.com. IN NS ns.ops.magedu.com.
    7. ns.ops.magedu.com. IN A 5.5.5.1
    8. zone "ops.magedu.com." IN {
    9. }
    10. www.ops.magedu.com.
    11. view: 将名称解析的割裂解析;
    12. 将请求者根据其来源进行分类,分类后实现使用不同的区域解析库来解析对某区域主机的请求;
    13. CDN
    14. view VIEW_NAME {
    15. zone {}
    16. zone {}
    17. }
    18. 访问控制机制:
    19. acl,
    20. allow-update {}; allow-transfer {}; allow-recursion {}; allow-query {};
    21. DNS and Bind》:
    22. O'Reiley, Wrox, McGraw Hill