**1. DNS域名** ``` 根域 主机:存储下级域dns服务器的地址 一级域名 组织域 com,edu,mil,.net,.org,.gov,. 国家域 .cn, .tw, .jp 二级域名 三级域名 最多127级域名 ``` **2. DNS解析** ``` DNS查询类型 递归查询 迭代查询 名称服务器 域内负责解析本域名内的名称的主机 根服务器: 13组服务器 解析类型 FQDP -> IP IP -> FQDN 注意:正反向解析是两个不同的名称空间,是两棵不同的解析树 ``` **3. DNS服务器类型** ``` (1) 主DNS服务器 管理和维护所负责解析的域内解析库的服务器 (2) 从DNS服务器 从主服务器或从服务器“复制”(区域传输)解析库副本 序列号(serial) 解析库版本号,主服务器解析库变化时,其序列递增 刷新时间间隔(refresh) 从服务器从主服务器请求同步解析的时间间隔 重试时间间隔(retry) 从主服务器请求同步失败时,再次尝试时间间隔 过期时长(expired) 从服务器联系不到主服务器时,多久后停止服务 (3) 缓存DNS服务器(转发器) 通知机制 主服务器解析库发生过变化时,会主动通知从服务器 ``` **4. 资源记录** **(1) 区域解析库** ``` 由众多RR组成 资源记录 Resource Record RR ``` **(2) 定义格式** ``` name [TTL] IN rr_type value 注意 (1) TTL可以从全局继承,可省略 TTL:生命期,缓存时长,默认以秒为单位 $TTL 1D (2) @可用于引用当前区域的名字,表示当前域名本身 (3) 同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮询的方式响应 (4) 同一个值也可能有多个不同的定义名字,通过多个不同的名字的执行同一个值进行定义,仅表示通过多个不同的名字可以找到同一个主机 ``` **(3) 记录类型** - SOA (start of authority) ``` 作用 起始授权记录,一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录 name 当前区域的名字,如‘magedu.com.’ value 由多部分组成 (1)当前区域的主DNS1服务器的FQDN,也可以使用当前区域的名字 (2) 当前区域管理员的邮箱地址,但地址中不能使用@符号,一般使用.替换 test.162.com. (3) 主从服务器传输区域相关定义以及豆丁的答案的统一的TTL 示例: --------------------------------------------------------- $TTL 1D @ IN SOA master.xxx.com. aaaa.163.com. ( 0 ; serial #序列号 1D ; refresh # 刷新时间 1H ; retry # 重试时间 1W ; expire # 过期时间 3H ) ; minimum # 否定答案的TTL值 --------------------------------------------------------- ``` - A (internet address) ``` 作用 FQDN --> IP name 某主机的FQDN,如www.xxx.com. value 主机名对应主机的IP地址 eg www.xxx.com. IN A 1.1.1.1 www.xxx.com. IN A 2.2.2.2 mx1.xxx.com. IN A 3.3.3.3 mx2.xxx.com. IN A 4.4.4.4 *.xxx.com. IN A 5.5.5.5 xxx.com. IN A 6.6.6.6 避免用户写错名称而给错误答案,可以通过泛域名解析进行解析至某特定地址 ``` - AAAA ``` 作用 FQDN --> IPv6 name FQDN value IPv6 ``` - PTR(Point TeR) ``` 作用 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 eg 4.3.2.1.in-addr.arpa. IN PTR www.xxx.com 如果1.2.3为网络地址,可简写成 4 IN PTR www.xxx.com 注意 网络地址可以省略,主机地址仍需要反着写 ``` - NS ``` ``` - CNAME (Canonical Name) ``` 作用 别名记录 name 别名的FQDN value 真正名字的FQDN eg www.xxx.com IN CNAME yyy.xxx.com ``` - MX (Mail exchange) ``` 作用 邮件交换器 name 当前区域的名字 value 当前区域某邮件服务器(smpt)的主机名 一个区域内,MX记录可以有多个,但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级,数字越小优先级越高 示例 xxx.com. IN MX 10 mx1.xxx.com MX 10 mx2.xxx.com 注意 对MX记录而言,任何一个MX记录后面的服务器的名字,都应该子后续有一个A记录 ``` **5. 子域** ``` 子域授权 每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权 类似根域授权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 xxx.com.在.com的名称服务器上,解析库中添加资源记录 xxx.com. IN NS ns1.xxx.com. xxx.com. IN NS ns2.xxx.com. xxx.com. IN NS ns3.xxx.com. ns1.xxx.com. IN A 3.3.3.1 ns2.xxx.com. IN A 3.3.3.2 ns3.xxx.com. IN A 3.3.3.3 glue record 粘合记录,父域授权子域的记录 ``` **6. bind** - **程序** ``` dns服务器程序包:bind, unbound 程序名:named, unbound 程序包 yum list all bind* bind:服务器 bind-libs:相关库 bind-utils:客户端 bind-chroot:/var/named/chroot/ ``` - **bind服务器** ``` 服务脚本和名称 /usr/sbin/named 主配置文件 /etc/named.conf /etc/named.rfc1912.zones /etc/rndc.key 解析库文件 注意 一台物理服务器可同时为多个区域提供解析 必须要有根区域文件,named.ca 应该有两个实现localhost和本地回环地址的解析库(IPv6应该更多) rndc 默认与bind安装在统一主机,且只能通过127.0.0.1链接named进程 提供辅助性的管理功能 953/tcp ``` - **配置文件** ``` 主配置文件 : /etc/named.conf 全局配置 : options {}; 日志子系统配置 : logging {}; 区域定义 : 本机能够为哪些zone进行解析 zone "ZONE_NAME" IN {}; 注意 任何服务程序如果期望其能够通过网络被其他主机访问,至少应该监听一个能与外部主机通信的IP地址 缓存名称服务器的配置:监听外部地址即可 dnssec:建议关闭,设为no ``` **7. 配置主DNS服务器** - **常用命令** ``` 主配置文件语法检查 named-checkconf 解析库配置文件语法检查 named-checkzone "xxx.com" /var/named/named.xxx.com.zone 重新加载配置文件 systemctl reload named rndc reload|status ``` - 安装配置 (1) 安装 ``` [root@7d ~]# yum -y install bind # 安装 [root@7d ~]# rpm -ql bind /etc/named.conf 主配置文件 /var/named 数据库 /usr/sbin/named 主程序 ``` (2) 备份 ``` [root@7d ~]# cp /etc/named.conf{,.bak} -a -a 表示保留所有属性,该文件默认属于named组 ``` (3) 配置 /etc/named.conf ``` [root@7d ~]# vim /etc/named.conf options { // 表示将所有网络的53端口打开 listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; // 表示 允许所有人询问 allow-query { any; }; // forwarders { 192.168.0.50; }; recursion yes; // DNS 转发配置 forward first; forwarders {8.8.8.8;}; dnssec-enable yes; dnssec-validation yes; /* 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; }; }; ``` (4) 修改配置文件 /etc/named.rfc1912.zones ``` [root@7d ~]# vim /etc/named.rfc1912.zones zone "coreta.com" IN { type master; file "coreta.com.zone"; allow-update { none; }; }; # file: 数据文件路径,默认在 "/var/named"中 ``` (5)建立区域数据库文件 ``` [root@7d ~]# cp -p named.localhost coreta.com.zone [root@7d ~]# vim coreta.com.zone --------------------------------------------- $TTL 1D @ IN SOA master.coreta.com. aaa.163.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master.coreta.com. master A 192.168.1.50 www A 192.168.1.50 --------------------------------------------- 注: TTL @ IN会继承 邮箱的@符号使用.代替 NS master..coreta.com. ``` (6) 启动和开机启动 ``` 启动 systemctl start named 开机启动 systemctl enable named ``` (7) 查看端口 ``` [root@7d ~]# ss -tnlu 53端口,有两个, tcp和udp ``` (8)重新加载服务 ``` [root@7d ~]# systemctl reload named [root@7d ~]# rndc reload 重新加载配置文件 ``` (9) 测试DNS的工具 ``` dig dig @127.0.0.1 www.coreta.com # @ 表示指定dns host host www.coreta.com 192.168.0.50 nslookup # 或者本机的DNS测试 ``` 最后修改:2019 年 09 月 18 日 11 : 51 AM © 著作权归作者所有