2007年3月27日星期二

Bind 域名服务器的配置

Bind是一款开放源码的DNS服务器软件,Bind是由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain。它是目前世界上使用最为广泛的DNS服务器软件,支持各种Unix平台和Windows平台。FreeBSD6.1-stable版本在安装时会自动将该软件安装。
Bind包含了一个叫named的后台进程和resolver库。Bind服务器在后台运行时,通过众所周知的端口提供服务。UDP(User Datagram Protocol)和TCP(Transmission ControlProtocol)在DNS 中的标准端口通常是53,可在/etc/services中设置。
resolver(DNS client程序)就是一系列驻留在系统库中的程序,用来提供出其它程序来访问DNS 服务的端口。

启动53号端口

[root@root]# cd /etc/defaults
[root@root /etc/defaults]# vi rc.conf


进入FreeBSD系统后,输入如上命令,在打开的文件中找到如下的记录行:

named_enable="NO" # Run named, the DNS server (or NO).
named_program="/usr/sbin/named" # path to named, if you want a different one.
#named_flags="" # Flags for named
named_pidfile="/var/run/named/pid" # Must set this in named.conf as well
named_uid="bind" # User to run named as
named_chrootdir="/var/named" # Chroot directory (or "" not to auto-chroot it)
named_chroot_autoupdate="YES" # Automatically install/update chrooted
# components of named. See /etc/rc.d/named.
named_symlink_enable="YES" # Symlink the chrooted pid file

将之复制到/etc/rc.conf,并修改named_enable=“yes”,若要在系统启动时,域名服务自动启动,将named_flags=””前的“#”去掉。
保存rc.conf文件后,输入如下命令,启动域名服务:

[root@root /etc]# /etc/rc.d/named start

输入如下命令, 可查看53号端口是否启动,若端口为53号的处于listen状态,则成功启动。

[root@root /etc]# netstat –aln |grep 53


添加zone
假设这里配置的域名为example.net
输入如下命令:

[root@root ]# cd /etc/namedb
[root@root /etc/namedb]# vi namedb.conf

在该文件中,我们可以看到如下的记录行:

options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";

说明:
directory:域名服务器的工作目录。
pid_file:把DNS进程文件加入到工作目录中。
在文件中加入如下记录:

zone "example.net" {
type master;
file "master/example.net.db";
};

说明:
type:是域名的类型。
file :则是表示该域的DNS数据库文件名及其存储位置,这要结合前面的directory来设置。“master/example.net.db”则表示该文件在/etc/namedb/master下。

建立域example.net的DNS数据库
一个域的DNS数据库是由该域的主名字服务器的系统管理员维护的一个文本文件集合,这些文本文件成为区文件,就是在“named.conf”中定义的file。它们包括两种类型的项:分析器命令(如$TTL)和资源记录(Resource Records)。资源记录是数据库的真实部分,而分析命令只是提供输入记录的一些简便途径。
资源记录的基本格式:
[name] [ttl] [class] type data
name字段:表示一个主机或者一个域。
ttl字段:以秒为单位,存活时间,与TCP/IP中的TTL差不多含义,但在网络TTL是指跳数。在Bind中,用$TTL指令。一般将存活时间设为一周,这样,可以减少网络流量和DNS的负载。
class字段:一般都使用“IN”,对应的是internet。
type字段:有SOA、A、NS、PTR、MX、CNAME等。
data字段:根据type字段不同而不同。
用如下命令打开域exmple.net的DNS数据库的文本文件example.net.db:

[root@root]# vi /etc/namedb/master/example.net.db

添加如下记录:

$TTL 3h
example.net. IN SOA start.example.net. end.example.net.(
2 ;Serial
3h ;Refresh, 3 hours
1h ;Retry, 1 hour
1w ;Expire, 1 week
2h ;Minimum, 2 hours
)
example.net. IN NS start
ww IN A 127.0.0.1
www IN A 172.16.237.208
start IN A 172.16.237.208
end IN A 172.16.237.208

说明:
SOA记录:每个区仅有一个SOA记录,该区一直延伸到遇见另有个SOA记录为止。SOA记录包括该区的名字,联系方式和各种不同的超时值。
example.net.:因为在上面named.conf中添加的zone语句指定的名字是example.net(后面的“.”不可忘);可以在这个区文件中使用 $ORIGIN分析器指令进行更改,也可以用“@”简写。
IN:class字段。
start.example.net.:该区的主名字服务器(后面的“.”不可忘记)。
end.example.net.:域管理员的邮箱。它之后的圆括号用来让SOA记录跨越几行。
第一个数值2:Serial,代表该区的序列号,更新数据文件必须更新这个区的序列号,否则从服务器将不更新。
第二个数值3h:Refresh,指定多长时间从服务器要与主服务器进行核对。
第三个数值1h:Retry,代表如果从服务器试图检查主服务器的序列号时,主服务器没有响应,则经过1hour重新检查。
第四个数值1w:Expire,决定从服务器在没有主服务器的情况下持续提供域数据服务的时间长短。
第五个数值2h:Minimum,指高速缓存否定回答的存活时间(可能指客户机如果要解析某台服务器的IP,而这台服务器是不代表客户查询的存活时间)。
上面所说明的都属于SOA记录。
NS记录:识别一个区有权威性的服务器(即所有主服务器和从服务器),并把子域委托给其他机构。
A记录:是DNS数据库的核心。一个主机必须为它的每个网络接口得到一条A记录。所以在本设计中都采取更新A记录。
执行named命令,重新启动DNS服务:

[root@root /etc]# /etc/rc.d/named restart


用nslookup查看配置好的域名

[root@root /etc/namedb/master]# nslookup
> server 172.16.237.208
Default server: 172.16.237.208
Address: 172.16.237.208#53
> www.example.net
Server: 172.16.237.208
Address: 172.16.237.208#53
Name: www.example.net
Address: 172.16.237.208
>

至此,一个简单的域名服务器配置好。

DNS 及相关概念

DNS,Domain Name System(域名系统)。域名系统为Internet上的主机分配域名地址和IP地址。由于网络中的计算机都必须有个IP地址来识别,互相之间才能通信,但让我们记住一大串的IP地址来访问网站显然是不可能的,所以用户使用域名地址,而DNS系统的功能就是自动把域名地址翻译为IP地址。域名服务是运行域名系统的Internet工具。执行域名服务的服务器称之为DNS服务器,通过DNS服务器来应答域名服务的查询。

  • DNS就是域名服务器,他的任务就是确定域名的解析,比如A记录MX记录等

  • 任何域名都至少有一个DNS,一般是2个。因为DNS可以轮回处理,这样第一个解析失败可以找第二个。这样只要有一个DNS解析正常,就不会影响域名的正常使用。

  • www.internic.net/whois.html输入查询的域名就可以确定域名的DNS。这个是国际域名管理中心唯一的权威。只要这里能查到某个域名,就表示域名是生效的。
  • 有效的DNS表示当前正在起作用的DNS服务器,比如查询结果是 DNS29.HICHINA.COM、 DNS30.HICHINA.COM就表示当前域名是由DNS29.HICHINA.COM
    、 DNS30.HICHINA.COM负责解析。
  • DNS是可以修改的。修改以后需要24-72小时以后,全世界范围的所有DNS服务器才能刷新过来。internic的信息一般在24小时以后可以看到。另外,修改的过程,并不表示域名会停止解析,只要你在2边都做好了解析。如果生效了就是新的DNS在起作用。如果没生效。就是旧的DNS在起作用。要么生效,要么不生效。不存在2个都不起作用的时间。所以域名解析,不会中断。前提是两边都做了解析。



A记录
A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的子域名。通俗来说A记录就是服务器的IP,域名绑定A记录就是告诉DNS,当你输入域名的时候给你引导向设置在DNS的A记录所对应的服务器

子域名
子域名道理等同二级域名,不过比二级域名更加延伸,比如我们继续扩展该域名的主机名,设置主机名为bbs.at,那么就可以建立一个三级域名:bbs.at.abc.com,当然也可以建立四级域名bbs.at.go.abc.com,五级域名bbs.at.go.home.abc.com……,依次类推,可以建立无限级别的域名,我们统称这些域名为顶级域名abc.com的子域名。

CNAME
NAME (Canonical Name)记录,通常称别名指向。在这里,您可以定义一个主机别名,比如设置ftp.***.com,用来指向一个主机www.***.com,那么以后就可以用FTP.***.com来代替访问www.***.com了。

MX记录
MX记录也叫做邮件路由记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操控所有的邮箱设置。您只需在线填写您服务器的IP地址,即可将您域名下的邮件全部转到您自己设定相应的邮件服务器上。简单的说,通过操作MX记录,您才可以得到以您域名结尾的邮局。

TXT 记录
TXT 记录,一般指为某个主机名或域名设置的说明,如:
admin IN TXT "管理员, 电话: 13901234567"
mail IN TXT "邮件主机, 存放在xxx , 管理人:AAA"
Jim IN TXT "contact: abc@mailserver.com"
也就是您可以设置 TXT ,以便使别人联系到您

SRV 记录
SRV 记录:一般是为Microsoft的活动目录设置时的应用。DNS可以独立于活动目录,但是活动目录必须有DNS的帮助才能工作。为了活动目录能够正常的工作,DNS服务器必须支持服务定位(SRV)资源记录,资源记录把服务名字映射为提供服务的服务器名字。活动目录客户和域控制器使用SRV资源记录决定域控制器的IP地址。


TTL值
TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间。要理解TTL值,请先看下面的一个例子:
假设,有这样一个域名myhost.abc.com(其实,这就是一条DNS记录,通常表示在abc.com域中有一台名为myhost的主机)对应IP地址为1.1.1.1,它的TTL为10分钟。这个域名或称这条记录存储在一台名为dns.abc.com的DNS服务器上。
现在有一个用户在浏览器中键入一下地址(又称URL):http://myhost.abc.com 这时会发生什么呢?
该访问者指定的DNS服务器(或是他的ISP,互联网服务商, 动态分配给他的)8.8.8.8就会试图为他解释myhost.abc.com,当然8.8.8.8这台DNS服务器由于没有包含myhost.abc.com这条信息,因此无法立即解析,但是通过全球DNS的递归查询后,最终定位到dns.abc.com这台DNS服务器,dns.abc.com这台DNS服务器将myhost.abc.com对应的IP地址1.1.1.1告诉8.8.8.8这台DNS服务器,然有再由8.8.8.8告诉用户结果。8.8.8.8为了以后加快对myhost.abc.com这条记录的解析,就将刚才的1.1.1.1结果保留一段时间,这就是TTL时间,在这段时间内如果用户又有对myhost.abc.com这条记录的解析请求,它就直接告诉用户1.1.1.1,当TTL到期则又会重复上面的过程

泛域名与泛解析
泛域名是指在一个域名根下,以 *.Domain.com 的形式表示这个域名根所有未建立的子域名。泛解析是把*.Domain.com 的A 记录解析到某个IP 地址上,然后别人通过任意的前缀.domain.com访问都能访问到你解析的站点上
例:域名根  name.com 只建立了 www.name.com和 name.com 这两个域名记录,那么 ftp.name.com mail.name.com bbs.name.com 等域名记录是不存在的,但为域名根 name.com 建立泛域名记录 *.name.com 后,*.name.com 就涵盖了 ftp.name.com mail.name.com bbs.name.com 等所有不存在的子域名记录。您可以定义 *.name.com 指向一个 IP ,那么当访问者无论是输入 ftp.name.com mail.name.com 或 bbs.name.com 的时候,
访问者都将直接访问您定义 *.name.com 的那个 IP 。

域名绑定
域名绑定是指,域名绑定是指域名和主机(即某个服务器)的空间进行关联绑定,其实就是在虚拟服务器上设置或者WEB服务器上设置,使一个域名被引导向服务器上的某一特定空间(某一个特定站点),访问者访问你的域名的时候就会打开你存放在该空间上的网页,简单来说其实就是把域名解析到服务器IP,然后在服务器上设置该域名有权限访问的过程。一般虚拟主机有控制面板给进行绑定域名,如果没有面板就需要自己在服务器上的IIS里面设置

域名转向
域名转向我们又称为域名(URL)指向或域名转发,当用户地址栏中输入您的域名时,将会自动跳转到您所指定的另一个网络地址(URL)。

Freebsd Make.conf

[bash]MASTER_SITE_BACKUP?= \
ftp://ftp.freebsd.org.cn/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/

MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
[/bash]

VI 设置

用chpass显示用户信息
[bash]
#Changing user information for root.
Login: root
Password: $1$W3Iu11I.$OrkaGSgxkaxJqSowHllDu.
Uid [#]: 0
Gid [# or name]: 0
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /root
Shell: /usr/local/bin/bash
Full Name: Charlie &
Office Location:
Office Phone:
Home Phone:
Other information:
[/bash]

在Home directory:这项中可知道该用户目录,如这里是 /root
[bash]
cd /root
[/bash]
在下面看是否有.exrc文件,如果没有,自己建立一个,.exrc文件是设置vi的环境
如这个.exrc文件中内容:注意:不要像在命令模式中输入那样,不需要前面的冒号
[bash]
set nu
set autoindent
set showmode
[/bash]