设计域名系统的一个主要目的是让管理分散化。管理域的组织将该域划分成子域,每一个子域可以由其他组织管理意味着那些下级组织负责维护自己子域的所有数据。他们可以改变数据,甚至可以将自己管理的子域再划分成更多的子域并重新分配,而父域中仅包含指向这些子域的指针。
实现域名查询和提供域名信息的程序被称为域名服务器。通常域名服务器拥有部分域名空间 (称之为区 Zone) 的完整信息,一个域名服务器可以拥有对多个区的授权。域既包括了该层主机,又包括了子域的所有信息;而区仅包含了一个域中除了分配出去让其它组织管理的子域以外的域名数据信息。如果一个域没有分配任何子域,则该区包含该域的所有域名数据信息。
DNS 定义了 PM (Primary Master) 和 SM (Secondary Master) 两类域名服务器。PM 从配置文件中读取区域数据,这些数据对整个区域来说都是具有权威性的。SM 域名服务器是从其它具有该区授权的 PM 域名服务器上获得区数据,并定期查询PM域名服务器以保证区数据为最新版本。一般情况下,最好设立一台PM域名服务器和若干台 SM 域名服务器。这样可以分担负载,以确保区中所有主机都有比较靠近的域名服务器方便访问。
对域名系统的访问是按照客户/服务器模式进行的,采用缓存 (Caching) 技术在保证数据可靠真实性的同时,又保证了较高的效率。应用程序一般是利用解析器来实现域名解析的。解析器是一组库函数,任何需要解析域名的应用程序都会调用这组函数来完成域名解析工作。解析器是应用程序实现域名查询的接口。
域名服务器在接收到客户的查询请求时,一般是按照递归的方式来进行的。下面用一个例子来说明什么叫递归方式查询。一个域名服务器 MyDM 接收到查询 www.linuxaid.com.cn 的查询请求。它首先询问本地存储的根域名服务器列表中的任何一个根域名服务器,负责 cn 域的名字服务器有哪些。前面曾经说过,上级域名服务器有指向下级子域名服务器的指针。所以根名字服务器就会返回负责 cn 域数据信息的名字服务器的列表。
MyDM 会缓冲这些数据继续查询其中的一个,询问负责 linuxaid 子域的域名服务器有哪些。得到信息后再递归查询,直到找到 www.linuxaid.com.cn 的 IP 信息。查询中得到的所有域名服务器信息都会被缓存起来,以加速以后的查询。
域名服务器有生存期 (TTL) 的概念,一旦生存期到了,名字服务器必须丢弃缓存数据并从权威的名字服务器中重新获取新的数据。这样可以确保域数据在整个网络上的一致性。
从 TCP/IP 协议栈的角度来看, DNS 属于应用层协议,运行在传输层之上,但是它并不使用 TCP 提供的服务,而是使用 UDP 服务。
配置文件
下面主要对和域名相关的一些配置文件进行说明,以便进行下一步配置。
/etc/hosts 定义了主机名和 IP 地址匹配信息,供本地解析器使用。本地解析器从该文件中得到主机名匹配信息。例如,zhangsan 和 lisi 的机器没有正式域名,为了使用方便管理员可以在文件中添加内容:
192.168.2.200 zhangshan
192.168.2.201 lisi
这样,就可以使用 zhangsan 和 lisi 来实现对其机器的引用了。
/etc/nsswitch.conf 指定了从哪个文件或数据库可得到不同的数据。在它的头部有该文件详细的说明,其中应该包含域名相关的内容行:
hosts: files dns
如果没有这样一行内容,则需要管理员手工加入。该行指示域名解析时首先应该查询文件内容 (/etc/hosts),然后查询 DNS 数据库。
/etc/host.conf 是解析器的配置文件,指示解析器以什么方式来解析主机名。一般可能包含如下内容:
# Lookup names via DNS first then fall back to /etc/hosts.
order bind,hosts
# We have machines with multiple IP addresses.
multi on
# Check for IP address spoofing.
nospoof on
Order 选项指明的是选择服务的顺序。上面“order bind,hosts”说的是解析器库解析文件名的时候先查询域名服务器,然后再查看“/etc/hosts”文件。因为性能和安全上的原因,最好将解析器库的查找顺序设成先查域名服务器 (Bind)。
有多个 IP 网络接口的主机被称为多穴主机 (Multihomed)。例如:网关服务器就有多个 IP 地址,必须把这个选项设成 on。
Nospoof 选项指明不允许 IP 伪装。IP 伪装是把自己伪装成别的计算机去欺骗其它的计算机,获得它的信任。不管对任何类型的服务器,这个选项都要设成 on。
/etc/resolv.conf 是解析器使用的配置文件。它指示了本地默认域名 (在进行域名解析时,如果提交的域名是相对域名如 www,则在解析时解析器会自动添加默认域名然后进行解析如:www.linuxaid.com.cn),并且包含应用程序进行域名解析时需要使用的域名服务器的IP地址信息。例如:
search linuxaid.com.cn
nameserver 208.164.186.1
nameserver 208.164.186.2
以上表明进行域名解析时按照名字服务器出现的顺序进行。
/etc/named.conf 是域名服务器守护进程 named 的配置文件。named 每次启动后,都要从该文件中读取域名配置数据。所以修改该文件及引用的数据,都需要重新启动 named 以刷新配置。新安装的机器该文件默认内容一般为:
options {
directory "/var/named"
}
zone "." {
type hint
file "root.ca"
}
zone "0.0.127.in-addr.arpa" {
type master
file "127.0.0"
}
该文件各部分的具体含义及详细设置在后面加以说明。
编译和安装
Bind 的安装有两种方式。一种是以 RPM 包的方式安装,另一种是使用源程序进行编译。RPM 包安装方式非常简单,只要使用命令:
rpm -Uhv bind-8.2.2-p5-9.i386.rpm
rpm -Uhv bind-devel-8.2.2-p5-9.i386.rpm
rpm -Uhv cache-nameserver-6.2-2.noarch.rpm
就可以安装成功。在此不再详述。下面主要说明使用源程序进行编译这种方式。
1.软件的下载
下面的示例在 Red Hat Linux 7.1 下测试通过,需要安装者具有 root 权限。这里使用的 Bind 的版本号是 8.2.2-patchlevel5。注意在真正的网络应用中 (非测试学习环境) 使用 Bind 时一定要下载最新版本,因为以前的版本中有一些安全漏洞。Bind 主页为 http://www.isc.org/,下载 bind-contrib.tar.gz, bind-doc.tar.gz, bind-src.tar.gz。
最好在编译前和编译后都做一张系统中所有文件的列表,然后用diff命令比较它们找出其中的差别,并知道到底把软件安装在哪里。只要在编译之前运行 find /* >dns1 命令,在编译和安装完软件之后运行 find/*>dns2 命令,最后用 d i ff dns1 dns2 >dns 命令找出变化。显示如下:
[root@Aid /]# mkdir /var/tmp/bind
[root@Aid /]# cp bind-contrib.tar.gz /var/tmp/bind/
[root@Aid /]# cp bind-doc.tar.gz /var/tmp/bind/
[root@Aid /]# cp bind-src.tar.gz /var/tmp/bind/
我们创建了一个名为“bind”的目录,用它来处理tar文档,并转到新的“bind”目录 (cd/ var/ tmp/bind),解压tar文件:
[root@Aid bind]# tar xzpf bind-contrib.tar.gz
[root@Aid bind]# tar xzpf bind-doc.tar.gz
[root@Aid bind]# tar xzpf bind-src.tar.gz
2.编译配置和优化
编辑 Makefile.set 文件 (vi /src/port/linux/Makefile.set),并加入:
'CC=egcs -D_GNU_SOURCE'
'CDEBUG=-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro
-march=pentiumpro -fomitframe-
pointer -fno-exceptions'
'DESTBIN=/usr/bin'
'DESTSBIN=/usr/sbin'
'DESTEXEC=/usr/sbin'
'DESTMAN=/usr/man'
'DESTHELP=/usr/lib'
'DESTETC=/etc'
'DESTRUN=/var/run'
'DESTLIB=/usr/lib/bind/lib'
'DESTINC=/usr/lib/bind/include'
'LEX=flex -8 -I'
'YACC=yacc -d'
'SYSLIBS=-lfl'
'INSTALL=install'
'MANDIR=man'
'MANROFF=cat'
'CATEXT=$$N'
'PS=ps -p'
'AR=ar crus'
'RANLIB=:'
第一行说明使用的 GCC 编译器的名字是 egcs。第二行是优化参数。“DESTLIB =”这一行说明 Bind 所需的库函数目录,“DESTING =”说明 Bind 的 include 目录在哪里。输入下面的命令:
[root@Aid bind]# make -C src
[root@Aid bind]# make clean all -C src SUBDIRS=../doc/man
[root@Aid bind]# make install -C src
[root@Aid bind]# make install
PM的意思要结合具体出现的场合而定:1、Performance management
所谓绩效管理,是指各级管理者和员工为了达到组织目标共同参与的绩效计划制定、绩效辅导沟通、绩效考核评价、绩效结果应用、绩效目标提升的持续循环过程,绩效管理的目的是持续提升个人、部门和组织的绩效。
2、Product Marketing
产品市场是指可供人们消费的最终产品和服务的交换场所及其交换关系的总和。
3、Private Message
论坛里的PM,一般是Private Message的缩写,站内短消息的意思。
4、Project Manager
项目经理( Project Manager ) ,从职业角度,是指企业建立以项目经理责任制为核心,对项目实行质量、安全、进度、成本管理的责任保证体系和全面提高项目管理水平设立的重要管理岗位。项目经理是为项目的成功策划和执行负总责的人。项目经理是项目团队的领导者,项目经理首要职责是在预算范围内按时优质地领导项目小组完成全部项目工作内容,并使客户满意。为此项目经理必须在一系列的项目计划、组织和控制活动中做好领导工作,从而实现项目目标。
5、PM2.5(细颗粒物) particulate matter
2013年2月,全国科学技术名词审定委员会将PM2.5的中文名称命名为细颗粒物。细颗粒物的化学成分主要包括有机碳(OC)、元素碳(EC)、硝酸盐、硫酸盐、铵盐、钠盐(Na+)等。
6、PM=Partition Magic
Partition Magic可以说是目前硬盘分区管理工具中最好的,其最大特点是允许在不损失硬盘中原有数据的前提下对硬盘进行重新设置分区、分区格式化以及复制、移动、格式转换和更改硬盘分区大小、隐藏硬盘分区以及多操作系统启动设置等操作。
7、PM:下午
PM是拉丁语Post Meridiem 的缩写,意思是下午。
......等等。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)