• 网站导航

万网域名解析ip(域名解析ip地址怎么设置)

更新时间:2021-09-18 13:13:01 来源:  网络
近期可能很多人都在关注万网域名解析ip相关的内容,今日小编也是在网上找了很多关于 万网域名解析ip 相关信息并整理如下,希望对大家有所帮助:

作者: Escape链接:http://33h.co/wq015

目录


万网域名解析ip(域名解析ip地址怎么设置)

一、DNS1.1 DNS 服务介绍

DNS(Domain Name System,域名系统),因特网上作为域名和 IP 地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

DNS 协议运行在UDP和TCP之上,使用53号端口其中在DNS解析查询时用到UDP协议,而在主从传递区域数据库文件时,用到TCP协议1.2 互联网域名结构一般结构主机名.二级域名.顶级域名.根www.wsescape.com.管理方式Internet 的顶级域名由 Internet 网络协会域名注册查询负责网络地址分配的委员会进行登记和管理它还为 Internet 的每一台主机分配唯一的 IP 地址


万网域名解析ip(域名解析ip地址怎么设置)

1.3 DNS 的功能

每个 IP 地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台 IP 设备的 IP 地址,只要记住相对直观有意义的主机名就行了。

主机名到 IP 地址映射的两种方式静态映射

/etc/hosts文件

在每台设备上都有主机到IP的映射关系,只供此设备使用

动态映射

/etc/resolv.conf文件

指通过DNS服务器配置主机到IP的映射关系

# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6# cat /etc/resolv.confnameserver 172.16.242.2解析方式 - FQDN(Full Qualified Domain Name)正向 ==> FQDN --> IP反向 ==> IP --> FQDN权威非权威解析顺序在解析域名时,首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法


万网域名解析ip(域名解析ip地址怎么设置)

一次完整的查询请求经过的流程


万网域名解析ip(域名解析ip地址怎么设置)

1.4 技术实现

DNS通过允许一个名称服务器把他的一部分名称服务,众所周知的zone,委托给子服务器而实现了一种层次结构的名称空间,成为子域授权机制。

DNS还提供了一些额外的信息,例如系统别名、联系信息以及哪一个主机正在充当系统组或域的邮件枢纽任何一个使用IP的计算机网络可以使用DNS来实现他自己的私有名称系统。实现 DNS 的软件BINDDJBDNSMaraDNSName Server DaemonPowerDNSDnsmasqDNS 查询类型迭代查询递归查询


万网域名解析ip(域名解析ip地址怎么设置)


万网域名解析ip(域名解析ip地址怎么设置)

1.5 DNS 的类型(1)Primary DNS Server(Master)

一个域的主服务器保存着该域的zone配置文件,该域所有的配置、更改都是在该服务器上进行,本篇随笔要讲解的也是如何配置一个域的主DNS服务器。

(2)Secondary DNS Server(Slave)

域从服务器一般都是作为冗余负载使用,一个域的从服务器是从该域的主服务器上抓取zone配置文件,从服务器不会进行任何信息的更改,zone配置文件的修改只能在主DNS服务器上进行,所有的修改都有主服务器同步。

(3)Caching only Server(Cache)

DNS缓存服务器不存在任何的zone配置文件,仅仅依靠缓存来为客户端提供服务,通常用于负载均衡及加速访问操作。

(4)转发服务器

只负责转发功能

注解说明:

主 DNS 服务器维护所负责解析的区域内解析库服务器解析库由管理维护,可以是手工也可以是自动的通知机制一旦主 DNS 服务器解析库发生改变会立即通知从服务器从 DNS 服务器从主DNS服务器或其他的从DNS服务器那里复制(区域传送)一份解析库序列号来表示解析库的版本号前提是,主服务器解析库内容发生改变,其序列递增刷新时间从服务器从主服务器请求同步解析库的时间间隔重试时间从服务器从服务器请求同步解析库失败的时候,再次尝试的时间间隔过期时长从服务器始终联系不到主服务器时,多久后放弃从服务器角度,停止提供服务区域传送全量传送传送整个解析库增量传送传送解析库变化的那部分内容1.6 资源记录类型DNS 系统中,常见的资源记录类型:主机记录(A记录)FQDN --> IPA记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上指针记录(PTR记录)IP --> FQDN引导至一个规范名称(Canonical Name),最常用来运行反向DNS查找权威记录的起始(SOA记录)一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录名称服务器记录(NS记录)

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

别名记录(CNAME记录)

CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录

MX 记录(MX记录)

引导域名到该域名的邮件传输代理(Message Transfer Agents)列表

IPv6 主机记录(AAAA记录)FQDN --> IP与 A 记录对应,用于将特定的主机名映射到一个主机的IPv6地址。服务位置记录(SRV记录)

用于定义提供特定服务的服务器的位置,如主机hostname,端口port

NAPTR 记录

它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。


万网域名解析ip(域名解析ip地址怎么设置)

1.7 资源记录格式语法

name [TTL] IN rr_type value(1) TTL如果从全局继承可以省略,为缓存时长(2)IN表示Internet(3)rr_type表示资源记录类型(4) @可用于引用当前区域的名字(5) 同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮询方式响应(6) 同一个值也可能有多个不同的定义名字,通过多个不同的名字指向同一个值进行定义,此仅表示通过多个不同的名字可以找到同一个主机而已SOAname: 当前区域的名字,例如wsescape.com.value: 有多部分组成:(1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字(2) 当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用.替换,例如linuxmail.wsescape.com(3) 主从服务协调属性的定义以及否定的答案的统一的TTL

# 86400为TTL值,单位为秒钟# 主DNS服务器地址为ns.wsescape.com.# 邮箱地址为nsadmin.wsescape.com.# 第一版为2016052201,标识版本号wsescape.com.86400INSOAns.nsadmin.wsescape.com.(2016052201 ;序列号2H ;刷新时间,2小时10M;重试时间,10分钟1W;过期时间,一周1D;否定答案的TTL值,一天)NSname: 当前区域的名字value: 当前区域的某DNS服务器的名字,例如ns.wsescape.com.注意:(1) 相邻的两个资源记录的name相同时,后续的可省略(2) 对NS记录而言,任何一个NS记录后面的服务器名字,都应该在后续有一个A记录

# 一个区域可以有多个NS记录# ns1.wsescape.com.和ns2.wsescape.com.都应该在后续有一个A记录wsescape.com.INNS ns1.wsescape.com.wsescape.com.INNS ns2.wsescape.com.MXname: 当前区域的名字value: 当前区域的某邮件服务器(smtp服务器)的主机名(1)一个区域内,MX记录可以有多个(2)但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级(3)数字越小优先级越高注意(1) 相邻的两个资源记录的name相同时,后续的可省略(2) 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

# mx1.wsescape.com.和mx2.wsescape.com.都应该在后续有一个A记录wsescape.com.IN MX 10 mx1.wsescape.com.INMX 20 mx2.wsescape.com.Aname: 某主机的FQDN,例如www.wsescape.com.value: 主机名对应主机的 IP 地址;注意避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址

# 轮询www.wsescape.com.IN A1.1.1.1www.wsescape.com.IN A 1.1.1.2# 一个主机有多个名称而已mx1.wsescape.com.IN A 1.1.1.3mx2.wsescape.com. IN A 1.1.1.3

# 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址*.wsescape.com.IN A 1.1.1.4wsescape.com.IN A 1.1.1.4AAAA

与 `A` 记录类似,这是只是表示IPv6地址而已

# 轮询www.wsescape.com.IN AAAA1.1.1.1www.wsescape.com.IN AAAA 1.1.1.2# 一个主机有多个名称而已mx1.wsescape.com.IN AAAA 1.1.1.3mx2.wsescape.com. IN AAAA 1.1.1.3# 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址*.wsescape.com.IN AAAA 1.1.1.4wsescape.com.IN AAAA 1.1.1.4PTRname: 这里的name表示的是IP地址IP地址有特定格式,把IP地址反过来写,如果是1.2.3.4需要写作4.3.2.1还有特定后缀in-addr.arpa.,完整写法为4.3.2.1.in-addra.arpa.value: 这里的value值为FQDN注意网络地址及后缀可省略,主机地址依然需要反着写

# 实例4.3.2.1.in-addr.arpa.INPTRwww.wsescape.com.# 如果3.2.1是网络地址简写成为4 IN PTRwww.wsescape.com.# 如果2.1是网络地址简写成为4.3 IN PTRwww.wsescape.com.CNAMEname: 别名的FQDNvalue: 正工名字的FQDN

web.escapelife.com.IN CNAME www.escapelife.com.1.8 个人使用

子域授权就是每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权

类似根域授权tld

.com.INNS ns1.com..com. IN NSns2.com.ns1.com.INA 2.2.2.1ns2.com. INA2.2.2.2

这里以wsescape.com为例

# wsescape.com. 在.com的名称服务器上,解析库中添加资源记录wsescape.com.INNSns1.wsescape.com.wsescape.com.INNSns2.wsescape.com.wsescape.com.INNSns3.wsescape.com.ns1.wsescape.com.INA 3.3.3.1ns2.wsescape.com.INA 3.3.3.2ns3.wsescape.com.INA 3.3.3.3域名注册代理商万网新网godaddy绑定服务器注册完成以后,想自己用专用服务来解析?管理后台,把 NS 记录指向的服务器名称和 A 记录指向的服务器地址二、常用命令2.1 dig命令

dig用于测试dns系统,因此不会查询hosts文件进行解析

用于询问 DNS 域名服务器的灵活的工具除非被告知请求特定域名服务器,dig将尝试 /etc/resolv.conf中列举的任何服务器当未指定任何命令行参数或选项时,dig将对.(根)执行NS查询格式

dig [-t type] name [@SERVER] [query options]语法类型查询

dig -t NS wsescape.com @172.16.242.178dig -t MX wsescape.com @172.16.242.178dig -t A www.baidu.com查询选项

+[no]trace:跟踪解析过程+[no]recurse:进行递归解析测试反向解析:dig -x IP @SERVERdig -x 172.16.100.11 @172.16.242.178模拟区域传送:

dig -t axfr ZONE_NAME @SERVERdig -t axfr wsescape.com @172.16.242.1782.2 host命令

host命令用于查询DNS的工具

它通过常转换指定主机名称的主机名称为 IP 地址当不指定参数时,它显示host命令的帮助信息格式

host [-t type] name [SERVER]语法-a

等同于-v -t

-C

在需要认证的域名服务器上查找 SOA 记录

-l

列出一个域内所有的主机

-i

反向查找

-r

不使用递归处理

-v

运行时显示详细的处理信息

-4

用于 IPv4 的查询

-6

用于 IPv6 的查询

-t <类型>

指定类型,包括a、all、mx、ns等

实例展示

[root@localhost ~]# host -t A www.wsescape.com 172.16.242.178Using domain server:Name: 172.16.242.178Address: 172.16.242.178#53Aliases:www.wsescape.com has address 172.16.100.11www.wsescape.com has address 172.16.100.12[root@localhost ~]# host -t A www.wsescape.com 172.16.242.178Using domain server:Name: 172.16.242.178Address: 172.16.242.178#53Aliases:www.wsescape.com has address 172.16.100.12www.wsescape.com has address 172.16.100.11

[root@localhost ~]# host --helphost: illegal option -- -Usage: host [-aCdlriTwv] [-c class] [-N ndots] [-t type] [-W time] [-R number] [-m flag] hostname [server] -a is equivalent to -v -t ANY -c specifies query class for non-IN data -C compares SOA records on authoritative nameservers -d is equivalent to -v -l lists all hosts in a domain, using AXFR -i IP6.INT reverse lookups -N changes the number of dots allowed before root lookup is done -r disables recursive processing -R specifies number of retries for UDP packets -s a SERVFAIL response should stop query -t specifies the query type -T enables TCP/IP mode -v enables verbose output -w specifies to wait forever for a reply -W specifies how long to wait for a reply -4 use IPv4 query transport only -6 use IPv6 query transport only -m set memory debugging flag (trace|record|usage)2.3 nslookup命令

nslookup 命令用于查找域名服务器的程序,有两种模式为互交和非互交

格式

nslookup [-option] [name | -] [server]语法非交互模式直接查询即可交互式模式

nslookup>server IP: 指明使用哪个DNS server进行查询;set q=RR_TYPE: 指明查询的资源记录类型;NAME: 要查询的名称;实例展示

[root@localhost ~]# nslookup> server 172.16.242.178Default server: 172.16.242.178Address: 172.16.242.178#53> set q=A> www.wsescape.comServer:172.16.242.178Address:172.16.242.178#53Name:www.wsescape.comAddress: 172.16.100.11Name:www.wsescape.comAddress: 172.16.100.12> set q=NS> wsescape.comServer:172.16.242.178Address:172.16.242.178#53wsescape.comnameserver = ns2.wsescape.com.wsescape.comnameserver = ns1.wsescape.com.

# 非交互模式查询[root@rudder ~]# nslookup baidu.comServer: 8.8.8.8Address: 8.8.8.8#53Non-authoritative answer:Name: baidu.comAddress: 123.125.114.144Name: baidu.comAddress: 220.181.111.85Name: baidu.comAddress: 220.181.111.86

# 非交互模式查询[root@rudder ~]# nslookup> www.baidu.comServer:172.17.0.254Address:172.17.0.254#53Non-authoritative answer: #非权威答案,表明是在缓存中读取的www.baidu.comcanonical name = www.a.shifen.com.Name:www.a.shifen.comAddress: 61.135.169.105 #返回第一个IP地址Name:www.a.shifen.comAddress: 61.135.169.125 #返回第二个IP地址> server 8.8.8.8 #设置域名服务器为 8.8.8.8Default server: 8.8.8.8Address: 8.8.8.8#53> www.baidu.com #再次请求百度的IP地址Server:8.8.8.8Address:8.8.8.8#53Non-authoritative answer:www.baidu.comcanonical name = www.a.shifen.com.Name:www.a.shifen.comAddress: 220.181.111.147 #不同的DNS获取的IP地址是不同的。2.4 rndc命令

rndc客户端是通过建立套接字连接服务端,监听在TCP的953端口,来对服务端的named进行修改操作,但由于安全考虑,所以rndc的客户端和服务端安装在同一台主机之上。

语法 1-b

source-address 使用 source-address 作为连接服务器的源地址允许多个实例设置 IPv4 和 IPv6 源地址

-c config-file

使用config-file 作为缺省的配置文件/etc/rndc.conf 的替代

-k key-file

使用 key-file 作为缺省的密钥文件/etc/rndc.key 的替代 如果config-file 不存在,/etc/rndc.key 中的密钥将用于认证发向服务器的命令

-s server server

是与rndc的配置文件中server语句匹配的服务器的名字或地址 如果命令行没有提供服务器,会使用rndc配置文件中options语句中的default-server子句所命名的主机

-p port

发送命令到TCP端口port,以取代BIND 9的缺省控制通道端口 953

-V

打开冗余日志

-y key_id

使用配置文件中的密钥key_id

语法 2reload

重载主配置文件和区域解析库文件

reload zone

重载区域解析库文件

refresh zone

安排区域的立即维护

retransfer zone

手动启动区域传送过程,而不管序列号是否增加

notify zone

重新对区域传送发通知

reconfig

重载主配置文件

status

将服务器统计信息写入统计文件中

querylog

开启或关闭查询日志

建议调试的时候开启,否则日志消耗太多性能

dumpdb

将高速缓存转储到转储文件 (named_dump.db)

stop

将暂挂更新保存到主文件并停止服务器

halt

停止服务器,但不保存暂挂更新

trace

将调试级别增加一级

建议调试的时候开启,否则日志消耗太多性能

trace level

更改调试级别

notrace

将调试级别设置为0

flush

刷新服务器的所有高速缓存

status

显示服务器的状态

restart

重新启动服务器

实例展示

# rndc工具能够帮助我们输出系统信息[root@localhost ~]# rndc statusversion: 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6CPUs found: 1worker threads: 1number of zones: 20debug level: 0xfers running: 0xfers deferred: 0soa queries in progress: 0query logging is OFFrecursive clients: 0/0/1000tcp clients: 0/100server is up and running# rndc不重启加载区域文件[root@localhost ~]# rndc reload三、BIND的安装配置

DNS服务,程序包名bind,程序名named。

3.1 程序包

只需要安装bind、bind-libs和bind-utils即可

bind

主包

bind-libs

依赖的库文件,包括 32 位和 64 位

bind-utils

提供客户端工具,例如dig、host、nslookup和nsupdate

bind-chroot

建立不要安装,很容易被入侵

bind-chroot 包的作用是提高安全性,将 DNS 服务的配置文件/etc/named.conf 等,创建一个硬链接转到/var/named/chroot/etc/ 文件夹下面,而且使用服务帐号登录,不使用root用户登录

注意,修改配置文件要修改/etc/下面的,这样会自动同步到chroot下面的链接文件中

bind-sdb

bind-dyndb-ldap

以上这两种方式,是将解析库文件放在不同的数据库中进行存储

3.2 BIND配置文件配置文件服务启动脚本

在CentOS6下

/etc/rc.d/init.d/named

主配置文件

/etc/named.conf

/etc/rndc.key

为rndc的秘钥共享文件,提供认证用的

rndc是什么?

远程名称控制器

默认与bind安装在同一主机,且只能通过本地回环地址127.0.0.1来连接named进程

提供辅助性的管理功能,如查看解析状态等

默认工作在 953/tcp 端口上

/etc/named.rfc1912.zones

请求注解文档

解析库文件

/var/named/ZONE_NAME.ZONE

在/var/named/目录下存在多个解析库文件

/var/named/named.ca

指向根DNS该文件不需要管理员更改,而是系统自带

/var/named/named.local

本地子域解析,将localhost反向解析为127.0.0.1

注意

(1) 一台物理服务器可同时为多个区域提供解析

(2) 必须要有根区域文件,在named.ca中包含13根节点地址,由dig命令生成而来的

(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库

# 在CentOS6下[root@localhost ~]# rpm -ql bind | less/etc/NetworkManager/dispatcher.d/13-named/etc/logrotate.d/named/etc/named/etc/named.conf/etc/named.iscdlv.key/etc/named.rfc1912.zones/etc/named.root.key/etc/portreserve/named/etc/rc.d/init.d/named/etc/rndc.conf/etc/rndc.key/etc/sysconfig/named/usr/lib64/bind/usr/sbin/arpaname......

# @表示当前区域的区域名称,在主配置文件/etc/named.conf中定义的# TTL的值没写,因为定义了宏$TTL 1D,直接继承# rname.invalid.表示管理员的邮箱地址# 后面的如NS、A等缺省,因为继承前者的[root@localhost named]# cat /var/named/named.localhost$TTL 1D@IN SOA@ rname.invalid. (0; serial1D; refresh1H; retry1W; expire3H ); minimumNS@A127.0.0.1AAAA::1[root@localhost named]# cat /var/named/named.loopback$TTL 1D@IN SOA@ rname.invalid. (0; serial1D; refresh1H; retry1W; expire3H ); minimumNS@A127.0.0.1AAAA::1PTRlocalhost.


主配置文件全局配置

options {}

日志子系统配置

logging {}

区域定义

本机能够为哪些zone进行解析,就要定义哪些zone

如zone "ZONE_NAME" IN {}

注意

任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上

[root@localhost ~]# cat /etc/named.confoptions {listen-on port 53 { 127.0.0.1; };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";allow-query { localhost; };recursion yes;dnssec-enable yes;dnssec-validation yes;dnssec-lookaside auto;/* Path to ISC DLV key */bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";};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";

# localhost.localdomain就是区域名称,也就是@[root@localhost ~]# cat /etc/named.rfc1912.zoneszone "localhost.localdomain" IN {type master;file "named.localhost";allow-update { none; };};zone "localhost" IN {type master;file "named.localhost";allow-update { none; };};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {type master;file "named.loopback";allow-update { none; };};zone "1.0.0.127.in-addr.arpa" IN {type master;file "named.loopback";allow-update { none; };};zone "0.in-addr.arpa" IN {type master;file "named.empty";allow-update { none; };};3.3 缓存名称服务器配置

安装上bind之后,其实就算的上是一个缓存名称服务器,只需要进行少许的配置即可完成

修改listen-on port 53修改allow-query修改recursion

(1)安装

[root@localhost ~]#yum install bind

(2)启动

[root@localhost ~]# service named startGenerating /etc/rndc.key: [ OK ]Starting named: [ OK ]

(3)查看

# 为了安全,安装上bind之后,默认只会监听本地,不对外提供服务# 任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的`IP`地址上# 编辑主配置文件即可[root@localhost ~]# ss -tunlp | grep :53udp UNCONN 0 0 127.0.0.1:53 *:* users:(("named",39822,512))udp UNCONN 0 0 ::1:53 :::* users:(("named",39822,513))tcp LISTEN 0 3 ::1:53 :::* users:(("named",39822,21))tcp LISTEN 0 3 127.0.0.1:53 *:* users:(("named",39822,20))

(4)修改

# 修改之前先备份一下# 逗号之前没有内容,默认为前一个的名称,后面为复制的内容[root@localhost ~]# cp /etc/named.conf{,.bak}[root@localhost ~]# ll /etc/named*-rw-r-----. 1 root named 984 11月 20 2015 /etc/named.conf-rw-r-----. 1 root root 984 6月 20 21:53 /etc/named.conf.bak

# //表示单行注释,注释ipv6# /**/表示多行注释# 修改的时候必须以;结尾且{}的两端必须有空格,否则为语法错误# directory用来定义区域解析库文件存放位置# 建议关闭dnssec功能# 将dnssec-enable和dnssec-validation改为no,并注释key文件即可# 把能够以外网进行通信的地址写在listen-on port 53之后,如果有多个可以多个添加,不能省略# 如果将listen-on port 53进行注释或者删除,默认是监听在所有# 将allow-query注释或改为allow-query { any; };# 是否允许递归recursion,必须为yes[root@localhost ~]# vim /etc/named.confoptions { listen-on port 53 { 172.16.242.178; 127.0.0.1; }; 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";// allow-query { localhost; }; recursion yes; dnssec-enable no; dnssec-validation no; /* Path to ISC DLV key */// bindkeys-file "/etc/named.iscdlv.key";// managed-keys-directory "/var/named/dynamic";};

(5)重启生效

# 重启之后才能生效配置[root@localhost ~]# service named restartStopping named: . [ OK ]Starting named: [ OK ][root@localhost ~]# ss -tunlp | grep :53udp UNCONN 0 0 172.16.242.178:53 *:* users:(("named",40086,513))udp UNCONN 0 0 127.0.0.1:53 *:* users:(("named",40086,512))udp UNCONN 0 0 ::1:53 :::* users:(("named",40086,514))tcp LISTEN 0 3 ::1:53 :::* users:(("named",40086,22))tcp LISTEN 0 3 172.16.242.178:53 *:* users:(("named",40086,21))tcp LISTEN 0 3 127.0.0.1:53 *:* users:(("named",40086,20))3.4 主 DNS 名称服务器配置

主 DNS 名称服务器配置就是在缓存DNS服务器的基础之上增加zone配置文件就可以了

在/etc/named.rfc1912.zones添加zone记录在/var/named/增加zone文件(1) 在主配置文件中定义区域格式

# master表示主DNS# slave表示从DNS# hint表示根# forward做转发# file使用的是主配置文件directory定义的路径zone "ZONE_NAME" IN {type {master|slave|hint|forward};file "ZONE_NAME.zone";};修改配置

# 在/etc/named.rfc1912.zones文件内定义域名# named-checkconf用来检查语法错误[root@localhost ~]# vim /etc/named.rfc1912.zoneszone "wsescape.com" IN { type master; file "wsescape.com.zone";};[root@localhost ~]# named-checkconf(2) 定义区域解析库文件格式

出现的内容:宏定义;资源记录;修改配置

# 这里$TTL用于定义TTL的值,86400为秒,可以使用1D来代替# $ORIGIN用于指定域名词尾,如ns以及mx都为缺省了# named-checkzone# 两个www,在访问的时候会进行轮询操作的# 泛域名解析这里的*,表示无论用户输入什么都不报错# 或者写成* IN A 172.16.100.11,因为CNAME不能输入ip地址[root@localhost ~]# cd /var/named/[root@localhost named]# vim wsescape.com.zone$TTL 86400$ORIGIN wsescape.com.@ IN SOA ns1.wsescape.com. admin.wsescape.com (20160422011H5M7D1D ) IN NS ns1 IN NS ns2 IN MX 10 mx1 IN MX 20 mx2ns1 IN A172.16.100.11ns2 IN A172.16.100.12mx1 IN A172.16.100.13mx2 IN A172.16.100.14www IN A172.16.100.11www IN A172.16.100.12ftp INCNAMEwww* IN CNAME www[root@localhost named]# named-checkzone "wsescape.com" /var/named/wsescape.com.zonezone wsescape.com/IN: loaded serial 2016042201OK更改权限

# 可以查出进程是以named运行的# 其中/etc/named.conf文件的属主为root,属组为named# 为了安全起见,对自己创建的文件进行权限修改[root@localhost named]# ps -aux | grep namednamed 40086 0.0 1.1 160072 11736 ? Ssl 22:07 0:00 /usr/sbin/named -u namedroot 40785 0.0 0.0 103324 864 pts/0 S+ 23:19 0:00 grep named[root@localhost named]# ll /etc/named.conf-rw-r-----. 1 root named 1004 6月 20 22:23 /etc/named.conf[root@localhost named]# id nameduid=25(named) gid=25(named) 组=25(named)[root@localhost named]# ll总用量 32drwxrwx---. 2 named named 4096 6月 20 21:45 datadrwxrwx---. 2 named named 4096 6月 20 21:45 dynamic-rw-r-----. 1 root named 3171 1月 11 22:12 named.ca-rw-r-----. 1 root named 152 12月 15 2009 named.empty-rw-r-----. 1 root named 152 6月 21 2007 named.localhost-rw-r-----. 1 root named 168 12月 15 2009 named.loopbackdrwxrwx---. 2 named named 4096 5月 11 07:07 slaves-rw-r--r--. 1 root root 408 6月 20 22:53 wsescape.com.zone[root@localhost named]# chmod 640 wsescape.com.zone[root@localhost named]# chown :named wsescape.com.zone[root@localhost named]# ll总用量 32drwxrwx---. 2 named named 4096 6月 20 21:45 datadrwxrwx---. 2 named named 4096 6月 20 21:45 dynamic-rw-r-----. 1 root named 3171 1月 11 22:12 named.ca-rw-r-----. 1 root named 152 12月 15 2009 named.empty-rw-r-----. 1 root named 152 6月 21 2007 named.localhost-rw-r-----. 1 root named 168 12月 15 2009 named.loopbackdrwxrwx---. 2 named named 4096 5月 11 07:07 slaves-rw-r-----. 1 root named 408 6月 20 22:53 wsescape.com.zone重启生效

[root@localhost ~]# service named restartStopping named: . [ OK ]Starting named: [ OK ]# 使用dig命令来帮助我们验证信息# 因为之前的配置,这里会进行轮询操作[root@localhost ~]# dig -t A wsescape.com @172.16.242.1783.5 反向区域

反向解析和正向解析各为独立的系统,所以可以部署在不同的或者是相同的机器之上,都是可以

一个区域只能有一个主服务器,无论是正向还是反向一个主服务器可以有多个从服务器

根据配置文件中定义的主机地址,来确定网络地址

如果都为172.16.100内的主机,那么网络地址就是172.16.100.存在多种地址,如172.16.100.12、172.16.200.121等,那么网络地址就是172.16.以此类推什么是反向区域

不变的部分用来当做区域名称,变化的部分用来当做实现解析时候的name

格式区域名称:网络地址反写.in-addr.arpa.如172.16.100. ==> 100.16.172.in-addr.arpa.如何定义反向区域

(1) 定义区域

# file同样是一个相对路径,/var/named/# 如果有多个正向域对应同一个网络的话,多个区域就重名了,所以这里的网络地址其实自己可以随意定义,如"网络地址1.zone"、"网络地址2.zone"等# 如果只有一个反向区域的话,就只需要书写一个反向解析库,就可以"网络地址.zone"这样命名了zone "ZONE_NAME" IN {type {master|slave|forward};file "网络地址.zone";};

# 因为172.16.242.178和我们的其他服务器(172.16.100.12/172.16.100.11),所以只能写成"16.172.in-addr.arpa"和"172.16.zone"# 最后添加如下内容[root@localhost ~]# vim /etc/named.rfc1912.zoneszone "16.172.in-addr.arpa" IN {type master;file "172.16.zone";};

(2) 区域解析库文件

以PTR记录为主不需要MX和A以及AAAA记录

# $TTL表示宏定义的TTL值# $ORIGIN这里表示反向区域的名称# 反向的主机名称不能省略# 这里的11和12会自动补充上16.172.in-addr.arpa.# 别名记录不用反解,所以ftp没有书写反向解析# 这里可以使用vim -o wsescape.com.zone 16.172.zone来同时编辑两个文件的[root@localhost ~]# cd /var/named/[root@localhost named]# vim 100.16.zone$TTL 86400$ORIGIN 16.172.in-addr.arpa.@IN SOAns1.wsescape.com. admin.wsescape.com. ( 2016042201 1H 5M 7D 1D )IN NSns1.wsescape.com.IN NSns2.wsescape.com.11.100IN PTRns1.wsescape.com.11.100IN PTRwww.wsescape.com.12.100IN PTRmx1.wsescape.com.12.100IN PTRwww.wsescape.com.13.100IN PTRmx2.wsescape.com.

# 反向解析如果没有$ORIGIN的情况下,也可以这样写[root@localhost named]# vim 100.16.zone$TTL 86400@IN SOAns1.wsescape.com. admin.wsescape.com. ( 2016042201 1H 5M 7D 1D )16.172.in-addr.arpa.IN NSns1.wsescape.com.IN NSns2.wsescape.com.11.100IN PTRns1.wsescape.com.11.100IN PTRwww.wsescape.com.12.100IN PTRmx1.wsescape.com.12.100IN PTRwww.wsescape.com.13.100IN PTRmx2.wsescape.com.

(3) 修改权限并重启

[root@localhost named]# chmod 640 16.172.zone[root@localhost named]# chmod :named 16.172.zone# 语法[root@localhost named]# named-checkconf[root@localhost named]# named-checkzone "16.172.inaddr-addr" 16.172.zoneok[root@localhost named]# service named reload# 检测[root@localhost named]# host -t PRT 172.16.100.12 172.16.242.178[root@localhost named]# dig -x 172.16.100.12 @172.16.242.1783.6 从 DNS 名称服务器配置

定义从 DNS 服务器就是在缓存服务器的基础上,进行修改配置

在/etc/named.rfc1912.zones添加zone记录主从复制

(1)应该为一台独立的名称服务器

(2)主服务器的区域解析库文件中必须有一条 NS 记录是指向从服务器

(3)从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中

(4)主服务器得允许从服务器作区域传送

(5)主从服务器时间应该同步,可通过ntp进行

(6)bind程序的版本应该保持一致;否则,应该从高逐低

定义从区域的方法正向从服务器格式

# 从服务器同步主服务器的解析文件会放在/var/named/slaves/中zone "ZONE_NAME" IN {type slave;masters { MASTER_IP; };file "slaves/ZONE_NAME.zone";};反向从服务器格式

# 从服务器同步主服务器的解析文件会放在/var/named/slaves/中zone "Reverse_Net_Addr.in-addr.arpa" IN {type master;file "SOMEFILE.zone";};(1)正向从服务器的实例

# 注意这里的从DNS服务器,需要在主DNS服务器中定义上NS记录# 这样才能在主DNS的解析库发生改变的时候通知从DNS服务器进行同步,否则不会同步的[root@localhost ~]# vim /etc/named.rfc1912.zoneszone "wsescape.com" IN {type slave;masters { 172.16.242.178; };file "slaves/wsescape.com.zone";};# 重起服务即可成效[root@localhost ~]# rndc reload# 可以通过log进行查看[root@localhost ~]# tail /var/log/messages(2)反向从服务器的实例

# 注意这里的从DNS服务器,需要在主DNS服务器中定义上NS记录# 这样才能在主DNS的解析库发生改变的时候通知从DNS服务器进行同步,否则不会同步的[root@localhost ~]# vim /etc/named.rfc1912.zoneszone "16.172.in-addr.arpa" IN {type slave;masters { 172.16.242.178; };file "slaves/172.16.zone";};# 重起服务即可成效[root@localhost ~]# rndc reload# 可以通过log进行查看[root@localhost ~]# tail /var/log/messages四、高级功能之子域授权4.1 子域授权的特点

子域授权其实就是在你有域名的情况下,进行细分的状况。比如说,你注册了wsescap.com这个域名,由于业务关系等,你需要分开为ops部门和fin部门,分别使用自己的DNS服务器,这个时候你就需要进行子域授权了。

特点分布式数据库正向解析区域的子域授权比较常见,而反向的相对来说比较难做4.2 子域授权的方法正向解析区域子域方法

# 定义一个子区域# 在/var/named/下的指定文件中进行配置,如这里的/var/named/wsescape.com.zone# 在我们授权了wsescape.com的前提下,定义两个子域,分别为ops和fin两个ops.wsescape.com.INNSns1.ops.wsescape.com.ops.wsescape.com.INNSns2.ops.wsescape.com.ns1.ops.wsescape.com.INA1.1.1.1ns2.ops.wsescape.com.INA1.1.1.2fin.wsescape.com.INNSns1.fin.wsescape.com.fin.wsescape.com.INNSns2.fin.wsescape.com.ns1.fin.wsescape.com.INA3.1.1.1ns2.fin.wsescape.com.INA3.1.1.24.3 解析方式

前提:如果在wsescape.com下,定义了一个子域为ops,并在ops下创建了一个www的服务。

外部解析

(1)当www.test.org中的一台主机需要访问ops下的www主机时,就需要进过以下几个阶段:

先找根(.),根说你去找com再找com,com说你去找wsescape再找wsescape,wsescape说你去找ops最后ops返回需要的信息内部解析

(1)当wsescape.com下的一台主机需要访问ops下的www主机时,虽然wsescape.com的DNS主机不给于解析,但是它知道子域的位置,所以会立即指向ops的DNS服务器。

(2)当ops下的一台主机需要访问wsescape.com下的www主机时,就需要进过以下几个阶段:

先找ops,ops说你找根再找根(.),根说你去找com再找com,com说你去找wsescape最后wsescape返回需要的信息

我们会发现这个饶了一大圈,为了避免这样的问题,就需要定义转发服务器。

4.4 定义转发服务器注意

(1)关闭dnssec功能

dnssec-enable nodnssec-validation no

(2)被转发的服务器需要能够为请求者做递归,否则转发请求不予进行

(3)即定义了全局转发又定义了区域转发,优先级为能够精确匹配到的先通过区域转发,不能再通过全局转发

转发模式(1) 全局转发

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

# forward定义转发模式# first表示先转发给指定解析服务器,如无响应的话再找根服务器,即先递归在迭代# only表示转发给指定解析服务器,仅仅递归# fowwarders定义转发给谁Options {forward { first|only };forwarders;}(2) 区域转发

仅转发对特定的区域的请求至某服务器

需要自己定义区域和区域类型等信息

# forward定义转发模式# first表示先转发给指定解析服务器,如无响应的话再找根服务器,即先递归在迭代# only表示转发给指定解析服务器,仅仅递归# fowwarders定义转发给谁zone "ZONE_NAME" IN {type forward;forward { first|only };forwarders;}4.5 子域父域配置前提:父域IP地址 ==> 172.16.100.11子域IP地址 ==> 172.16.100.12能访问互联网的IP地址 ==> 172.16.0.1(1)父域服务器配置

# 一台独立的主机,这里配置父域就是在主服务器配置的基础上,添加子域而已# 注释的话,默认监听所有# 如果发现测试无法成功,查看/etc/named.conf中的dnssec改为no而非注释掉,否则导致本地客户端不接受

[root@localhost ~]# yum installl -y bind[root@localhost ~]# vim /etc/named.confoptions {// listen-on port 53 { 172.16.242.178; 127.0.0.1; };// 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";// allow-query { localhost; }; recursion yes; dnssec-enable no; dnssec-validation no; /* Path to ISC DLV key */// bindkeys-file "/etc/named.iscdlv.key";// managed-keys-directory "/var/named/dynamic";};

[root@localhost ~]# service named start[root@localhost ~]# ss -tunl | grep :53udp UNCONN 0 0 127.0.0.1:53 *:*udp UNCONN 0 0 ::1:53 :::*tcp LISTEN 0 3 ::1:53 :::*tcp LISTEN 0 3 127.0.0.1:53 *:*

[root@localhost ~]# vim /etc/named.rfc1912.zoneszone "wsescape.com" IN {type master;file "wsescape.com.zone";};

# ops、ns2.ops和ns1.ops都会自动补全wsescape.com.# 这里没有定义ns2.ops的A记录,是因为ns2.ops我们没有配置主机# 如果父域需要查找子域的时候,可能会跑到我们这个没有配置的机器上,导致服务解析,所以这就是没有定义的原因[root@localhost ~]# vim /var/named/wsescape.com.zone$TTL 1D$ORIGIN wsescape.com.@ IN SOA ns1.wsescape.com. admin.wsescape.com ( 2016042201 1H 5M 7D 1D ) IN NS ns1 IN NS ns2ns1 IN A 172.16.100.11ns2 IN A 172.16.100.18www IN A 172.16.100.11* IN A 172.16.100.11ops IN NS ns1.opsops IN NS ns2.opsns1.ops IN A 172.16.100.12

[root@localhost ~]# cd /var/named/[root@localhost named]# chown :named wsescape.com.zone[root@localhost named]# chmod 640 wsescape.com.zone[root@localhost ~]# rndc reloadserver reload successful[root@localhost ~]# tail /var/log/messages(2)子域服务器配置

# 配置子域服务器,即一台独立的主机,和父域配置没什么大的差别# 注释的话,默认监听所有# 如果发现测试无法成功,查看/etc/named.conf中的dnssec改为no而非注释掉,否则导致本地客户端不接受

[root@localhost ~]# yum installl -y bind[root@localhost ~]# vim /etc/named.confoptions {// listen-on port 53 { 172.16.242.178; 127.0.0.1; };// 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";// allow-query { localhost; }; recursion yes; dnssec-enable no; dnssec-validation no; /* Path to ISC DLV key */// bindkeys-file "/etc/named.iscdlv.key";// managed-keys-directory "/var/named/dynamic";};

[root@localhost ~]# service named start[root@localhost ~]# ss -tunl | grep :53udp UNCONN 0 0 127.0.0.1:53 *:*udp UNCONN 0 0 ::1:53 :::*tcp LISTEN 0 3 ::1:53 :::*tcp LISTEN 0 3 127.0.0.1:53 *:*

[root@localhost ~]# vim /etc/named.rfc1912.zoneszone "ops.wsescape.com" IN {type master;file "ops.wsescape.com.zone";};

# ns1和ns2都会自动补全ops.wsescape.com.# 这里也省略了ns2的定义,因为没有这里机器,如果父域需要查找子域的时候# 可能会跑到我们这个没有配置的机器上,导致服务解析,所以这就是没有定义的原因[root@localhost ~]# vim /var/named/ops.wsescape.com.zone$TTL 1D$ORIGIN ops.wsescape.com.@ IN SOA ns1.ops.wsescape.com. admin.ops.wsescape.com ( 2016042201 1H 5M 7D 1D ) IN NS ns1 IN NS ns2ns1 IN A 172.16.100.12www IN A 172.16.100.20* IN A 172.16.100.20

[root@localhost ~]# cd /var/named/[root@localhost named]# chown :named wsescape.com.zone[root@localhost named]# chmod 640 wsescape.com.zone[root@localhost ~]# rndc reloadserver reload successful[root@localhost ~]# tail /var/log/messages(3)测试配置

# 当这里,我们会发现如下问题# 在子域服务器中,执行命令后可以查看ops的信息# 172.16.100.12为子域服务器[root@localhost ~]# dig -t A www.ops.wsescape.com @172.16.100.12# 在子域服务器中,执行命令后在无网络的情况下不能查看父域的信息,在有网的情况下会根据根返回的信息来定位父域信息[root@localhost ~]# dig -t A www.wsescape.com @172.16.100.12# 在父域服务器中,执行命令后可以查看子域ops的信息# 这里dig命令默认执行一个递归操作,所以这里需要加上+norecurse非递归即可# 172.16.100.11为父域服务器[root@localhost ~]# dig -t A ops.wsescape.com @172.16.100.11 +norecurse[root@localhost ~]# dig -t A www.ops.wsescape.com @172.16.100.11 +norecurse4.6 定义转发域注意如果发现测试无法成功,查看/etc/named.conf中的dnssec改为no而非注释掉,否则导致本地客户端不接受如果测试应该为不能解析但是还是解析了,可能需要清空缓存rndc flush服务配置(1)全局转发

# 在父域中配置# 全局转发,就是通通转发给172.16.0.1来查询# 在父域服务器上编辑/etc/named.conf,在options添加如下信息# 由于上述的机器没有连接互联网,所以可以通过172.16.0.1进行解析[root@localhost ~]# vim /etc/named.confOptions {forward first;forwarders { 172.16.0.1; };}[root@localhost ~]# rndc reloadserver reload successful[root@localhost ~]# tail /val/log/messages# 父域中测试可以[ro