Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2474067
  • 博文数量: 867
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 9800
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 14:44
文章分类

全部博文(867)

文章存档

2007年(6)

2006年(861)

我的朋友

分类: LINUX

2006-08-10 16:37:40

5.2.mail日志

适用于Postfix, Sendmail, QMail
复制配置文件awstats.model.conf到/usr/local/etc/awstats目录下,并把文件名改成awstats.mail.conf,修改这个新的配置文件

# mkdir -p /usr/local/share/awstats/mail
# cp /usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf /usr/local/etc/awstats/awstats.mail.conf
# vi /usr/local/etc/awstats/awstats.mail.conf
For standard Postfix, Sendmail, MDaemon and standard QMail logfiles, set
LogFile="perl /usr/local/awstats/tools/maillogconvert.pl standard < /var/log/maillog |"
If the logfiles are compressed, they can be processed this way
LogFile="gzip -cd /var/log/maillog.0.gz | /usr/local/awstats/tools/maillogconvert.pl standard |"
And for VAdmin QMail logfiles (multi-host/virtualhost mail servers running vadmin software), set
LogFile="perl /usr/local/awstats/tools/maillogconvert.pl vadmin < /var/log/maillog |"
Then, whatever is you mail server, you must also change:
LogType=M
LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
SiteDomain="mail.test.com"
HostAliases="mail.test.com 192.168.0.3"
DirData="/usr/local/share/awstats/mail"
LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForWormsDetection=0
LevelForSearchEnginesDetection=0
LevelForFileTypesDetection=0
ShowMenu=1
ShowSummary=HB
ShowMonthStats=HB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowHoursStats=HB
ShowDomainsStats=0
ShowHostsStats=HBL
ShowAuthenticatedUsers=0
ShowRobotsStats=0
ShowEMailSenders=HBML
ShowEMailReceivers=HBML
ShowSessionsStats=0
ShowPagesStats=0
ShowFileTypesStats=0
ShowFileSizesStats=0
ShowBrowsersStats=0
ShowOSStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=1

统计主机日志
# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mail.test.com -update -lang=cn
你可以生成一个静态页面来浏览信息
# perl awstats.pl -config=ftp.test.com -output -staticlinks -lang=cn> awstats.mail.test.com.html

定时统计主机日志
#update awstats
30 7 * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mail.test.com -update -lang=cn

测试

 

bind9 view实现自动解析转向

想用bind9的view功能实现多线路的自动导向,因在新网,申请的域名不支持这样的功能,所以,只好指向到自己的服务器实现该功能。

实现的步骤:

有两个域名,假设为:a.net和b.cn两个域名,在a.net中添加dns服务器ns.a.net和ns1.a.net分别指向到我自己的服务器IP上,并且在新网的mydns功能中做两条A记录也分别对应解析到这两个IP上,b.cn的dns服务器也修改到ns.a.net和ns1.a.net上

两个服务器分别搭建bind9环境,named.conf如下:

key "rndc-key" {
 ??algorithm hmac-md5;
 ??secret "eVlLdn/KBaRN3qZFzgwcFA==";
};

controls {
 ??inet 127.0.0.1 port 953
 ??????allow { 127.0.0.1; } keys { "rndc-key"; };
};

options {
 ???directory "/var/named";
 ???version "I am bind";
 ???listen-on {218.58.15.155;127.0.0.1;};
};

acl CNCGROUP{58.16.0.0/16;
58.17.0.0/17;
58.17.128.0/17;
58.18.0.0/16;
58.19.0.0/16;
58.20.0.0/16;
58.22.0.0/15;};


view "internal" {
match-clients {10.0.0.8/8;};
 ?? recursion yes;
 ?? zone "." {
 ???????type hint;
 ???????file "/var/named/named.ca";
 ?? };
 ?? zone "localhost" IN {
 ???????type master;
 ???????file "/var/named/localhost.zone";
 ???????allow-update { none; };
 ?? };

 ?? zone "0.0.127.in-addr.arpa" {
 ???????type master;
 ???????file "/var/named/named.local";
 ???????allow-update { none; };
 ?? };
};


view "cnc" {
 ?? match-clients {CNCGROUP;};
 ?? recursion no;

 ?? zone "b.cn" {
 ?????? type master;
 ?????? file "/var/named/b.cn.cnc";
 ?? };
};

view "other" {
 ?? match-clients {any;};
 ?? recursion no;

 ?? zone "b.cn" {
 ?????? type master;
 ?????? file "/var/named/b.cn.bind";
 ?? };
};



named.ca即从网上下载的最新的named.root

named.local为:
$TTL??86400
@??? IN???SOA?? localhost.???root.localhost. (
 ???????????????????42???????; serial (d. adams)
 ???????????????????1H???????; refresh
 ???????????????????15M?????? ; retry
 ???????????????????1000H????? ; expiry
 ???????????????????1H )??????; minimum

 ???????????IN NS? localhost.

1??? IN?PTR localhost.

localhost.zone为:
$TTL??86400
$ORIGIN localhost.
@??? 1D IN SOA??? @ root (
 ???????42???????; serial (d. adams)
 ???????3H???????; refresh
 ???????15M?????? ; retry
 ???????1W???????; expiry
 ???????1D )??????; minimum

 ???1D IN NS????@
 ???1D IN A???? 127.0.0.1


b.cn.bind为:

$TTL??86400
$ORIGIN b.cn.
@??? IN???SOA?ns.a.net.? root.b.cn.?(
 ??????????????????1 ; Serial
 ??????????????????3600???; Refresh
 ??????????????????900???; Retry
 ??????????????????720000??; Expire
 ??????????????????3600 )??; Minimum
 ??????;IN???NS???localhost.
 ??????IN???NS???ns.a.net.
 ??????IN???NS???ns1.a.net.
@??? IN???A??? 222.14.180.98
www?? IN???A??? 222.14.180.98
pic?? IN???A??? 222.14.180.99
*??? IN???A??? 222.14.180.99

b.cn.cnc为:
$TTL??86400
$ORIGIN b.cn.
@??? IN???SOA?ns.a.net.? root.b.cn.?(
 ??????????????????1 ; Serial
 ??????????????????3600???; Refresh
 ??????????????????900???; Retry
 ??????????????????720000??; Expire
 ??????????????????3600 )??; Minimum
 ????? ; IN???NS???localhost.
 ??????IN???NS???ns.a.net.
 ??????IN???NS???ns1.a.net.
@??? IN???A??? 218.58.15.154
www?? IN???A??? 218.58.15.154
pic?? IN???A??? 218.58.15.155
url?? IN???A??? 218.58.15.156
*??? IN???A??? 218.58.15.155

Apache2的httpd.conf中文版

#
# 基于 NCSA 服务的配置文件。
#
#这是Apache服务器主要配置文件。
#它包含服务器的影响服务器运行的配置指令。
#参见<>以取得关于这些指令的详细信息
#
#不要只是简单的阅读这些指令信息而不去理解它。
#这里只是做了简单的说明,如果你没有参考在线文件,你就会被警告。
#
#这些配置指令被分为下面三个部分:
#1. 控制整个Apache服务器行为的部分(即全局环境变量)
#2. 定义主要或者默认服务参数的指令,也为所有虚拟主机提供默认的设置参数
#3. 虚拟主机的设置参数
#
#配置和日志文件名:如果你指定的文件名以“/”开始(win32下以“dirver:/”),
#服务器将使用绝对路径,如果文件名不是以“/”开始的,那么它将把ServerRoot
#的值附加在文件名的前面,例如,对“logs/foo.log",如果ServerRoot的值
#为“/usr/local/apache2”,则该文件应为“/usr/local/apache2/logs/foo.log”
#
##第一区:全局环境参数
#
#这里设置的参数将影响整个Apache服务器的行为;
#例如Apache能够处理的并发请求的数量等。
#
#ServerRoot:指出服务器保存其配置、出错和日志文件等的根目录。
#
#注意!如果你想要将它指定为NFS或其它网络上的位置,
#请一定要去阅读与LockFile有关的文档(可能在
#<>)。
#这将会使你自己也能解决很多问题。
#
#路径的结尾不要添加斜线。
#
ServerRoot "/usr/loacl/apache2"

#
#串行访问的锁文件必须保存在本地磁盘上
#


#LockFile logs/accept.lock

#ScoreBoardFile:用来保存内部服务进程信息的文件。
#如果未指明(默认),记分板(scoreboard)将被保存在一个匿名的共享内存段中,
#并且它不能被第三方软件所使用。
#如果指定了,要确保不能使用两个Apache使用同一个记分板文件,
#这个记分板文件必须保存在本地磁盘上。
#


#ScoreBoardFile logs/apache_runtime_status

#
#PidFile:记录服务器启动进程号的文件。
#

PidFile logs/httpd.pid

#
#Timeout:接收和发送前超时秒数
#
Timeout 300

#
#KeepAlive:是否允许稳固的连接(每个连接有多个请求),
#设为"Off"则停用。
#
KeepAlive On

#
#MaxKeepAliveRequests:在稳固连接期间允许的最大请求数,
#设为0表示无限制接入。
#我们推荐你将其设为一个较大的值,以便提高性能
MaxKeepAliveRequests 100

#
#KeepAliveTimeout:在同一个连接上从同一台客户上接收请求的秒数
#
KeepAliveTimeout 15

##
##Server-Pool大小设定(针对MPM的)
##

# prefork MPM
# StartServers:启动时服务器启动的进程数
# MinSpareServers:保有的备用进程的最小数目
# MaxSpareServers:保有的备用进程的最大数目
# MaxClients:服务器允许启动的最大进程数
# MaxRequestsPerChild:一个服务进程允许的最大请求数

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestPerChild 0

# worker MPM
# StartServers:服务器启动时的服务进程数目
# MaxClients:允许同时连接的最大用户数目
# MinSpareThreads:保有的最小工作线程数目
# MaxSpareThreads:允许保有的最大工作线程数目
# ThreadsPerChild:每个服务进程中的工作线程常数
# MaxRequestsPerChild:服务进程中允许的最大请求数目

StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0

# perchild MPM
# NumServers:服务进程数量
# StartThreads:每个服务进程中的起始线程数量
# MinSpareThreads:保有的最小线程数量
# MaxSpareThreads:保有的最大线程数量
# MaxThreadsPerChild:每个服务进程允许的最大线程数
# MaxRequestsPerChild:每个服务进程允许连接的最大数量

NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0

# WinNT MPM
# ThreadsPerChild:服务进程中工作线程常数
# MaxRequestsPerChild:服务进程允许的最大请求数

ThreadsPerChild 250
MaxRequestsPerChild 0

# BeOS MPM
# StartThreads:服务器启动时启动的线程数
# MaxClients:可以启动的最大线程数(一个线程等于一个用户)
# MaxRequestsPerThread:每个线程允许的最大请求数

StartThreads 10
MaxClients 50
MaxRequestsPerThread 10000

# NetWare MPM
# ThreadStachSize:为每个工作线程分配的堆栈尺寸
# StartThreads:服务器启动时启动的线程数
# MinSpareThreads:用于处理实发请求的空闲线程数
# MaxSpareThreads:空闲线程的最大数量
# MaxThreads:在同一时间活动的最大线程数
# MaxRequestPerChild:一个线程服务请求的最大数量,
# 推荐将其设置为0,以实现无限制的接入

ThreadStackSize 65536
StartThreads 250
MinSpareThreads 25
MaxSpareThreads 250
MaxThreads 1000
MaxRequestPerChild 0

# OS/2 MPM
# StartServers:启动的服务进程数量
# MinSpareThreads:每个进程允许的最小空闲线程
# MaxSpareThreads:每个进程允许的最大空闲线程
# MaxRequestsPerChild:每个服务进程允许的最大连接数

StartServers 2
MinSpareThreads 5
MaxSpareThreads 10
MaxRequestsPerChild 0

#
# Listen:允许你绑定Apache服务到指定的IP地址和端口上,以取代默认值
# 参见指令
# 使用如下命令使Apache只在指定的IP地址上监听,
# 以防止它在IP地址0.0.0.0上监听
#
# Listen 12.34.56.78:80

Listen 80

#
# 动态共享支持(DSO)
#
# 为了能够使用那些以DSO模式编译的模块中的函数,你必须有相应的“LoadModule”行,
# 因此,在这里包含了这些指令,以便能在使用它之前激活。
# 那些静态编译的模块不需要在这里列出 (即以“httpd -l”列出的模块)
#
# 示例:
# LoadModule foo_module modules/mod_foo.so
#

#
# ExtendedStatus:当调用“server-status”时,控制Apache是产生“全”状态
# 信息(ExtendedStatus On),还是产生基本信息(ExtendedStatus Off)。
# 默认为off
#
# ExtendedStatus On

### 第二区:“主”服务配置
#
# 这一区建立被 “主” 服务器用的指令值,以回应那些不被
# 定义处理的任何请求。
# 这些数值也提供默认值给后面定义的容器。
# 如果中有定义,那么这里定义的指令值将被
# 中的定义所覆盖。
#



#
# 如果你想使httpd以另外的用户或组来运行,你必须在开始时以root方式启动
# 然后再将它切换为你想要使用的用户或组。
#
# User/Group:运行httpd的用户和组
# 在SCO (ODT3)上使用“User nouser”和“Group nogroup”
# 在HPUX上,你可能不能以nobody身份使用共享内存,建议创建一个www用户。
# 注意一些核心(kernel)在组ID大于60000时拒绝setgid(Group)或semctl(IPC_SET),
#节在这些系统上不要使用“Group #-1”。
#
User nobody
Group #-1

#
# ServerAdmin:你的邮件地址,当发生问题时Apache将向你发出邮件。
# 作为一个出错文档,这个地址显示在server-generated页上,
# 例如:
#
ServerAdmin

#
# ServerName指定Apache用于识别自身的名字和端口号。
# 通常这个值是自动指定的,但是我们推荐你显式的指定它以防止启动时出错
#
# 如果你为你的主机指定了一个无效的DNS名,server-generated重定向将不能工作。
# 参见UseCanonicalName指令
#
# 如果你的主机没有注册DNS名,在这里键入它的IP地址
# 无论如何,你必须使用它的IP地址来提供服务,
# 这里使用一种容易理解的方式重定向服务
ServerName

#
# UseCanonicalName:决定Apache如何构造URLS和 SERVER_NAME 和 SERVER_PORT 的指令。
# 当设置为 “Off”时,Apache会使用用户端提供的主机名和端口号。
# 当设置为“On”,Apache会使用ServerName指令的值。
#
UseCanonicalName Off

#
# DocumentRoot:你的文档的根目录。默认情况下,所有的请求从这个目录进行应答。
# 但是可以使用符号链接和别名来指向到其他的位置。
#
DocumentRoot "/home/redhat/public_html"

#
# Apache可以存取的每个目录都可以配置存取权限(包括它的子目录)。
#
# 首先,我们配置一个高限制的特征。

# 这将禁止访问文件系统所在的目录,并添加你希望允许访问的目录块。
# 如下所示

Order Deny,Allow
Deny from all

#
# 注意从这里开始你一定要明确地允许哪些特别的特征能够被使用。
# - 所以,如果Apache没有象你所期待的那样工作的话,
# 请检查你是否在下面明确的指定它可用。
#

#
# 这将改变到你设置的DocumentRoot
#

#
# Options:这个指令的值可以是“None”,“All”,或者下列选项的任意组合:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# 注意,“MultiViews”必须被显式的指定,“Options All”不能为你提供这个特性。
#
# 这个指令既复杂又重要,请参见
#“”以取得更多的信息。
#
Options FollowSymLinks

#
# AllowOverride控制那些被放置在.htaccess文件中的指令。
# 它可以是“All”,“None”,或者下列指令的组合:
# Options FileInfo AuthConfig Limit
#
AllowOverride None

#
# 控制谁可以获得服务。
#
Order allow,deny
Allow from all

#
# UserDir:指定在得到一个~user请求时将会添加到用户home目录后的目录名。
#

UserDir public_html

# 为防止在UserDir指令上的漏洞,对root用户设置
# 象“./”这样的UserDir是非常有用的。
# 如果你使用Apache 1.3或以上版本,我们强烈建议你
# 在你的服务器配置文件中包含下面的行

UserDir disabled root

#
# 下面是一个使用UserDir指令使一个站点的目录具有只读属性的示例:
#
#
# AllowOverride FileInfo AuthConfig Limit Indexes
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludeNoExec
#
# Order allow,deny
# Allow from all
#

#
# Order deny,allow
# Deny from all
#

#

#
# DirectoryIndex:定义请求是一个目录时,Apache向用户提供服务的文件名
#
# index.html.var文件(一个类型映象文件)用于提供一个文档处理列表,
# 出于同样的目的,也可以使用MultiViews选项,但是它会非常慢。
#
DirectoryIndex index.php index.html index.html.var

#
# AccessFileName:在每个目录中查询为目录提供附加配置指令的文件的文件名。
# 参见AllowOverride指令。
#
AccessFileName .htaccess

#
# 下面的行防止.htaccess和.htpasswd文件被Web客户查看。
#

Order allow,deny
Deny from all

#
# Typeconfig:定义在哪里查询mime.types文件。
#
TypeConfig conf/mime.types

#
# DefaultType:定义当不能确定MIME类型时服务器提供的默认MIME类型。
# 如果你的服务主要包含text或HTML文档,“text/plain”是一个好的选择;
# 如果大多是二进制文档,诸如软件或图像,你应使用
# “application/octer-stream”来防止浏览器象显示文本那样显示二进制文件。
#
DefaultType text/plain

#
# mod_mime_magic允许服务器从自己定义自己类型的文件中使用不同的线索(hints),
# 这个MIMEMagicFile指令定义hints定义所在的文件。
#

MIMEMagicFile conf/magic

#
# HostnameLookups:指定记录用户端的名字还是IP地址,例如,本指令为on时
# 记录主机名,如;为off时记录IP地址,204.62.129.132。
# 默认值为off,这要比设为on好得多,因为如果设为on则每个用户端请求都将会
# 至少造成对 nameserver 进行一次查询。
#
HostnameLookups Off

#
# EnableMMAP:控制是否进行内存转储(如果操作系统支持的话)。
# 默认为on,如果你的服务器安装在网络文件系统上(NFS),请关闭它。
# 在一些系统上,关闭它会提升系统性能(与文件系统类型无关);
# 具体情况请参阅
#
# EnableMMAP off

#
# EnableSendfile:控制是否使用sendfile kernel支持发送文件
# (如果操作系统支持的话)。默认为on,如果你的服务器安装在网络文件系统
# (NFS)上,请你关闭它。
# 参见
#
# EnableSendfile off

#
# ErrorLog:错误日志文件定位。
# 如果你没有在内定义ErrorLog指令,这个虚拟主机的错误信息
# 将记录在这里。如果你在那儿定义了ErrorLog,这些错误信息将记录在你所
# 定义的文件里,而不是这儿定义的文件。
#
ErrorLog logs/error_log

#
# LogLevel:控制记录在错误日志文件中的日志信息数量。
# 可能的值包括:debug,info,notice,warn,error,crit,alert,emerg。
#
LogLevel warn

#
# 下面的指令为CustomLog指令定义格式别名。
#
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# 你需要安装了mod_logio.c模块才能使用%I和%O。
# LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio

#
# 指定接入日志文件的定位和格式(一般日志格式)。
# 如果你没有在内定义这个指令,传输信息将记录在这里,
# 如果你定义了这个指令,则记录在你指定的位置,而不是这儿定义的位置。
#
CustomLog logs/access_log common

#
# 如果你想要记录agent和referer信息,可以使用下面的指令
#
# CustomLog logs/referer_log referer
# CustomLog logs/agent_log agent

#
# 如果你想要使用一个文件记录access,agent和referer信息,
# 你可以如下定义这个指令:
#
# CustomLog logs/access_log combined

#
# ServerTokens
# 这个指令定义包含在HTTP回应头中的信息类型。默认为“Full”,
# 这表示在回应头中将包含模块中的操作系统类型和编译信息。
# 可以设为列各值中的一个:
# Full | OS | Minor | Minimal | Major | Prod
# Full传达的信息最多,而Prod最少。
#
ServerTokens Full

#
# 随意的添加包含服务器版本和虚拟主机名字一行信息到server-generated输出页中
# (内部错误文档,FTP目录列表,mod_status和mod_info输出等等,除了CGI错误
# 或自定义的错误文档以外)。
# 设为“EMail”将包含一个指向ServerAdmin的mailto:连接。
# 可以为如下值:On | Off | EMail
#
ServerSignature On

#
# Aliases:在这时添加你需要的别名,格式如下:
# Alias 别名 真实名
#
# 注意,如果你在别名的未尾包含了“/”,那么在URL中也需要包含“/”。
# 因此,“/icons”不是这个示例中的别名。
# 如果别名中以“/”结尾,那么真实名也必须以“/”结尾,
# 如果别名中省略了结尾的“/”,那么真实名也必须省略。
#
# 我们使用别名“/icons/”来表示FancyIndexed目录列表,如果你不使用、
# FancyIndexing,你可以注释掉它。
#
# Alias /icons/ "/usr/local/apache2/icons/"

#
# Options Indexes MultiViews
# AllowOverride None
# Order allow,deny
## Allow from all
#

#
# 这将改变ServerRoot/manual。这个别名提供了手册页所在的位置,
# 即使你改变了你的DocumentRoot。如果你对有无手册页并不在意的话,
# 你可以注释掉它。
#
Alias /manual "/usr/loacl/apache2/manual"


Options Indexes FollowSymLinks MultiViews IncludesNoExec
AddOutputFilter Includes html
Order allow,deny
Allow from all

#
# ScriptAlias:指定包含服务脚本的目录。
# ScriptAliases 本质上与Aliases一样,除了这里的文档在请求时做为程序处理处理以外。
# 尾部的“/”规则与Alias一样
#
ScriptAlias /cgi-bin/ "/usr/loacl/apache2/cgi-bin/"

# 这里是添加php 4支持的指令
AddType application/x-httpd-php .php
LoadModule php4_module modules/libphp4.so


#
# 添加mod_cgid.c设置,mod_cgid提供使用cgid进行通讯的UNIX套接字的
# 脚本接口路径。
#
# Scriptsock logs/cgisock

#
# 将"/usr/local/apache2/cgi-bin"改为你的ScriptAliased指定的CGI目录,
# 如果你配置了的话。
#

AllowOverride None
Options None
Order allow,deny
Allow from all

#
# Redirect允许你告诉客户端使用存在于服务器名字空间中的文档,
# 而不是现在的,这帮助客户定位那些改变了位置的文档。
# 例如:
# Redirect permanent /foo

#
# 控制server-generated目录列表显示的指令
#

#
# IndexOptions:控制server-generated目录列表显示特征。
#
IndexOptions FancyIndexing VersionSort

#
# AddIcon* 指令告诉服务器不同扩展名的图象文件如何显示,
# 只适用于FancyIndexed指令
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

#
# DefaultIcon 为那些没有显式定义图标的文件提供处理
#
DefaultIcon /icons/unknown.gif

#
# AddDescription允许你在server-generated索引后放置一个简短的说明。
# 只对FancyIndexed指令有效。
# 格式:AddDescription "说明" 文件名
#
# AddDescription "GZIP compressed document" .gz
# AddDescription "tar archive" .tar
# AddDescription "GZIP compressed tar archive" .tgz

#
# ReadmeName指定服务器默认查找的README文件的名字,并添加到目录列表中
#
# HeaderName指定目录列表前缀文件的文件名
ReadmeName README.html
HeaderName HEADER.html

#
# IndexIgnore指定目录索引忽略并且不包含在列表中的文件名集合,
# 支持shell类型的通配符。
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

#
# AddEncoding允许你在信息传送中使用(Mosaic/X 2.1+)解压缩信息,
# 注意:不是所有的浏览器都支持这个选项。
# 尽管名字相似,但是下列的指令与上面的FancyIndexing定制指令不同。
#
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz

#
# DefaultLanguage和AddLanguage允许你指定文档的语言。
# 这使你可以让用户用容易理解的语言浏览文档。
#
# 指定默认的语言,这意味着所有没有指定语言的包都将使用该语言。
# 多数情况下,你也许并不想设置它,除非你确信这样做是正确的。
# 通常,不使用确定的语言比使用错误的语言要好。
#
# DefaultLanguage nl
#
# 注意1:作为语言关键字的词缀毫无疑问是不能一样的--采用波兰
# 文的文档(网络标准语言代码是pl)将希望使用“AddLanguage pl .po”
# 来避免与perl脚本的一般词缀产生二义性。
#
# 注意2: 下面的例子举例说明在一些范例中语言的二字符缩写与它的国家
# 的二字符缩写不相同,例如 “Danmark/dk” 和 “Danmark/da” 的比较.
#
# 注意3: 在 “ltz” 的情况下我们使用三字符词缀,违犯了 RFC的规定,
# 运行中将修复它并使用RFC1766标准取得参考数据。
#
# Danish (da) - Dutch (nl) - English (en) - Estonian (et)
# French (fr) - German (de) - Greek-Modern (el)
# Italian (it) - Norwegian (no) - Norwegian Nynorsk (nn) - Korean (ko)
# Portugese (pt) - Luxembourgeois* (ltz)
# Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz)
# Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
# Russian (ru) - Croatian (hr)
#
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
AddLanguage fr .fr
AddLanguage de .de
AddLanguage he .he
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddLanguage pl .po
AddLanguage ko .ko
AddLanguage pt .pt
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pt-br .pt-br
AddLanguage ltz .ltz
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .sv
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage zh-tw .tw
AddLanguage hr .hr

# LanguagePriority允许你在会话过程中优先使用一些语言。
#
# 以优先次序递减的方式列出它们。我们或多或少地采用按字母排列顺序的方式
# 排列它们。也许你想要改变这个顺序。
LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw

#
# ForceLanguagePriority 允许你为MULTIPLE CHOICES(Prefer)[在通讯的情况下]
# 或NOT ACCEPTABLE(Fallback)[没有可接受的语言匹配的情况]提供一个结果页。
#
ForceLanguagePriority Prefer Fallback

#
# 为发送出的所有页指定默认的字符集,这总是一个好主意,并且为你的
# web站点的国际化打开了大门,这不正是你曾经想要的吗。同样地,指定
# 默认字符集有一些小的损害,如一个使用iso-8859-1(latin1)标准命令
# 的页面,除非以别的方式指定例如你仅仅以显式方式声明它。
# 也有一些与那些总是鼓励你使用默认字符集的javascropt和URL语法有关
# 的浏览器安全原因。
#
#AddDefaultCharset ISO-8859-1
AddDefaultCharse GB2312

#
# 一般以文件扩展名的方式使用字符集。也许你想要避免与语言扩展发生
# 碰撞,除非你在每次改变后都做了很好的测试。
# 参见以取得字符集
# 的名字列表和它们各自的RFCs。
#
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
# 对于俄语,使用了多个字符集(如何使用主要依靠客户端):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8


# 下面的字符集没有映射到一个特定的标准(iso)上,但是它们在浏览器
# 中被广泛的支持。注意那些大写字母。
# (它不应该,但是它是为兼容一些浏览器而做)
#
# 参见以取得
# 它们的列表。但是浏览器支持较少。
#
AddCharset GB2312 .gb2312 .gb
AddCharset utf-7 .utf7
AddCharset utf-8 .utf8
AddCharset big5 .big5 .b5
AddCharset EUC-TW .euc-tw
AddCharset EUC-JP .euc-jp
AddCharset EUC-KR .euc-kr
AddCharset shift_jis .sjis

#
# AddType允许你为指定的文件类型添加或覆盖mime.types文件中配置的MIME
#
AddType application/x-tar .tgz
AddType image/x-icon .ico

#
# AddHandler允许你映射确定的文件扩展名到“handlers”:
# 与文件类型无关的行为。这既能编译到服务器中也可以添加到Action指令
# 中(看下面)。
# 为了在ScriptAliased指令指定的以外使用CGI脚本:
#(要使它可用,你还需要在Options中添加“ExecCGI”。
#
# AddHandler cgi-script .cgi

#
# 对于那些包含他们自己的HTTP头的文件
#
# AddHandler send-as-is asis

#
# 对于server-parsed imagemap文件:
#
# AddHandler imap-file map

#
# agemap 文件:
#
#AddHandler imap- 文件映像

#
# 对于类型映像转移资源)
#(这是默认的设定以允许Apache的“It Worked”页能多种语言分发)。
#
AddHandler type-map var

#
# 过滤器允许你在将它发送到客户端前进行处理。
#
# 为了在服务器端分析包含(SSI)的.shtml文档:
# (要执行这个指令,你还需要在Options指令中添加“Includes”。)
#
# AddType text/html .shtml
# AddOutputFilter INCLUDES .shtml

#
# Action让你定义当调用匹配的媒体文件时将要执行的脚本。这将减少
# 那些经常使用的CGI脚本的URL路径名的重复输入。
# 格式:Action media/type /cgi-script/location
# 格式:Action handler-name /cgi-script/location
#

#
# 可配置的错误应答有三种风格:
# 1)plain text 2)local redirects 3) external redirects
#
# 一些示例:
# ErrorDocument 500 "The server made a boo boo."
# ErrorDocument 404 /missing.html
# ErrorDocument 404 "/cgi-bin/missing_handler.pl"
# ErrorDocument 402
#

#
# 综合应用这些指令,我们可以创建一个国际化的出错应答。
#
# 我们使用Alias来重定向任意/error/HTTP_.html.var应答到
# 我们的多语言错误消息集合。使用正确的文本替代它。
#
# 通过加入下面的行,你就能够改变这些消息的显示,而不必改变
# HTTP_.html.var文件。
#
# Alias /error/include/ "/your/include/path/"
#
# 以将/usr/local/apache2/error/include/下的文件拷贝到/your/inclue/path/下
# 开始,你可以创建你自己的文件集合,甚至是其于每个虚拟主机的。
# 不管你的ServerSignature如何设置,默认的包含文件将显示你的
# Aapche版本号和你的ServerAdmin邮件地址
#
# 国际化的错误文档需要mod_alias,mod_include和mod_negotiation三个
# 模块。要激活它们,取消下面30行的注释符号

# Alias /error/ "/usr/local/apache2/error/"
#
#
# AllowOverride None
# Options IncludesNoExec
# AddOutputFilter Includes html
# AddHandler type-map var
# Order allow,deny
# Allow from all
# LanguagePriority en de es fr it nl sv
# ForceLanguagePriority Prefer Fallback
#

#
# ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
ErrorDocument 403 /error.php
# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
# ErrorDocument 410 /error/HTTP_GONE.html.var
# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
# ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

#
# 下面的命令更改标准的HTTP应答行为以处理己知的浏览器问题。
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4.0" force-response-1.0
BrowserMatch "Java/1.0" force-response-1.0
BrowserMatch "JDK/1.0" force-response-1.0

#
# 下面命令关闭对那些没有尾部“/”的目录的非GET请求的重定向,
# 这些命令修复了微软的采用DAV方法不能正确处理重定向的WEB文件夹的问题。
# Apple下的DAV文件系统和Gnome下的VFS对DAV的支持也是采用这样的方法
# 进行处理的。
#
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully

#
# 允许你使用URL:来通过mod_status生
# 成并报告服务器状态信息。改变.example.com为你自己的域名。
#
#
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .example.com
#

#
# 允许使用来远程报告服务器配置信息
# (需要mod_info.c支持)。改变“.example.com”为你自己的域名。
#
#
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .example.com
#

#
# 代理服务器命令,去掉下面的行使代理服务可用。
#
#
# ProxyRequests On
#
# Order deny,allow
# Deny from all
# Allow from .example.com
#

#
# 安装或关闭HTTP/1.1“通道”头处理。
# (“Full”添加服务器版本信息,“Block”移掉所有输出“通道”头信息。
# 可以设为下面各选项之一:Off | On | Full | Block
#
# ProxyVia On

# 最好为代理服务安装高速缓冲,去掉下面几行的注释符号:
# (没有CacheRoot则不缓冲)
#
# CacheRoot "/usr/local/apache2/proxy"
# CacheSize 5
# CacheGcInterval 4
# CacheMaxExpire 24
# CacheLastModifiedFactor 01
# CacheDefaultExpire 1
# NoCache a-domain.com another-domain.edu joes.garage-sale.com

#
# 代理命令结束。

#
# 附加的特定模块配置。
#

Include conf/ssl.conf

## 第三区:虚拟主机
#
# VirtualHost:你可以通过设置虚拟主机容器以实现在你的主机上保有多个
# 域名/主机名。大多数配置信息只使用基于名字的虚拟主机,因此服务器
# 不必担心IP地址的问题,下面的命令以*号代替虚拟主机名。
#
# 在你试着配置你的虚拟主机以前,请参见
# >以取得更多的信息。
#
# 你可以使用命令行选项“-S”来检验你的虚拟主机配置。

#
# 使用基于名字的虚拟主机。
#
# NameVirtualHost *

#
# 虚拟主机示例:
# 几乎所有的Apache命令都可以在虚拟主机容器中使用。
# 第一个虚拟主机区是用于向服务名未知的请求进行应答的配置。
#
#
# ServerAdmin
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log commom
#


使用带有 Kerberos 的 OpenSSH

使用带有 Kerberos 的 OpenSSH

以下步骤提供了关于为使用带有 Kerberos 的 OpenSSH 所需的初始设置的信息:

  1. 在您的 OpenSSH 客户机和服务器上,/etc/krb5.conf 文件必须存在。该文件告诉 Kerberos 使用哪个 KDC、给每个凭单的生命期多长,等等。以下是一个 krb5.conf 示例文件:
    [libdefaults]
    ticket_lifetime = 600
    default_realm = OPENSSH.AUSTIN.XYZ.COM
    default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
    default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc
     
    [realms]
    OPENSSH.AUSTIN.xyz.COM = {
        kdc = kerberos.austin.xyz.com:88
        kdc = kerberos-1.austin.xyz.com:88
        kdc = kerberos-2.austin.xyz.com:88
        admin_server = kerberos.austin.xyz.com:749
        default_domain = austin.xyz.com
    }
     
    [domain_realm]
        .austin.xyz.com = OPENSSH.AUSTIN.XYZ.COM
        kdc.austin.xyz.com = OPENSSH.AUSTIN.XYZ.COM
    
  2. 同时,您必须把以下 Kerberos 服务添加到每个客户机的 /etc/services 文件中:
    kerberos      88/udp    kdc    # Kerberos V5 KDC
    kerberos      88/tcp    kdc    # Kerberos V5 KDC
    kerberos-adm  749/tcp          # Kerberos 5 admin/changepw
    kerberos-adm  749/udp          # Kerberos 5 admin/changepw
    krb5_prop     754/tcp          # Kerberos slave 
                                   #  propagation
    
  3. 如果您的 KDC 正在使用 LDAP 作为注册表以存储用户信息,则建议阅读LDAP 认证装入模块 和 Kerberos 出版物。另外,请确保执行了以下操作:
    • KDC 正在运行 LDAP 客户机。您可以用 secldapclntd 命令启动 LDAP 客户机守护程序。
    • LDAP 服务器正在运行 slapd LDAP 服务器守护程序。
  4. 在 OpenSSH 服务器上,编辑 /etc/ssh/sshd_config 文件以包含以下行:
    KerberosAuthentication yes
    KerberosTicketCleanup yes
    GssapiAuthentication yes
    GssapiKeyExchange yes
    GssapiCleanupCreds yes
    
  5. 在 SSH 服务器上,运行 startsrc -g ssh 命令以启动 ssh 服务器守护程序。
  6. 在 SSH 客户机上,运行 kinit 命令以获得初始凭证(TGT)。可以通过运行 klist 命令来验证是否接收到了 TGT。这将显示属于您的所有凭证。
  7. 通过运行 ssh username@servername 命令来连接到服务器。
  8. 如果正确配置了 Kerberos 以认证用户,则将不会显示要求密码的提示,且用户将自动登录到 SSH 服务器。

简单配置dns过程

rpm -ivh bind-9.2.4-2.i386.rpm

[root@ns01 named]# rpm -q bind
bind-9.2.4-2

这样就安装好bind包了。

参考http://www.5ilinux.com/blog/archives/000063.html 文章

首先修改

vi /etc/named.conf

添加下面内容

#############################
zone "." {
type hint;
file "named.ca";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "0.0.127.in-addr.arpa.zone";
};

zone "localhost" {
type master;
file "localhost.zone";
};

zone "5ilinux.com" {
type master;
file "5ilinux.com.zone";
};

去下载 named.ca 文件,但安装那篇文章里的下载地址无法下载。

dig @a.root-servers.net > named.ca
可以产生named.ca , 把 cp named.ca /var/named/named.ca
通过rpm安装的bind,是没有localhost.zone,可以通过vi来产生一个新的文件
vi /var/named/localhost.zone
##################
$TTL 86400
@ IN SOA @ root.localhost (
1 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttl
)

IN NS localhost.

@ IN A 127.0.0.1
####################
vi /var/named/0.0.127.in-addr.arpa.zone 
####################
N SOA localhost. root.localhost (
2 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttl
)
@ IN NS localhost.

1 IN PTR localhost.
1 IN PTR ns1.
###################

vi /var/named/5ilinux.com.zone

####

$TTL 86400
@ IN SOA ns01.5ilinux.com. root.localhost (
3 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttl
)

@       IN NS ns01.5ilinux.com.

ns01 IN A 192.168.0.10
##################

/etc/rc.d/iinit.d/named restart

应该就可以使用了。你可以看一下/etc/resolv.conf

开始的时候照着那篇文章做,但不行,

  IN NS ns01.5ilinux.com.

后来改成

@       IN NS ns01.5ilinux.com.

就可以使用了

这就是一个简单的dns配置的过程,够简单。

架設 DNS--bind9

2
4
2
0
0
5
1
2
3
4
5
6
7
8
9
10
11
12
.
.
.
.
.
.
.
.
.

 

前面所介紹的伺服器服務大多是用在內部網路環境中的﹐不過﹐以現代的情況和未來的趨勢來看﹐每個網路或多或少都需要 Internet 連線以及向 Internet 提供服務。從這一章開始﹐我們將為大家陸續介紹一些在 Internet 環境中常用到的伺服器之架設技巧。就算您目前還沒真的需要架設 Internet 相關的伺服器﹐但許多企業的 Intranet 環境中﹐也需要相類似的伺服器來為企業內部網路提供服務。

前提條件

在眾多 Internet 伺服器當中﹐有一種服務是所有服務的基礎﹐就是 DNS 服務。DNS 可以說是一個不容易弄清楚的概念﹐尤其是其運作原理。如果您看過“學習網路”中的“ DNS 協定”(我強烈建議您看看這篇文章﹗)﹐相信應該有一定概念了﹐否則﹐您在如下的閱讀中可能難以理解﹐也浪費您的時間。

無論如何﹐在您進一步閱讀下面文章之前﹐請您先確定能正確回答如下的問題﹕


什麼是 DNS 的授權模式﹖是怎樣進行的﹖
請解釋 zone 和 domain 的差別。
什麼是 DNS 正解和反解﹖
什麼是 DNS 的查詢模式﹖查詢過程是怎樣進行的﹖
請解釋 DNS cache 的作用和它對查詢流程的影響。

如果您未能從上面的聯結網頁找到答案﹐那我再推薦您多看一篇文章﹕


忠告﹕請不必急著知道怎樣設定 DNS﹐花點時間將 DNS 的原理弄明白非常重要﹐尤其是授權模式和查詢模式的正確理解。在日後的 DNS 架設和管理中﹐是否能正確理解這些 DNS 原理﹐往往是成敗的關鍵所在﹗

如果您在 NT 或 Win2K 下面設定過 DNS 伺服器﹐相信您會覺得在 Linux 下面難多了。除了概念上要比較清楚外﹐另外對檔案的關聯也要有清晰的追蹤能力﹐這對於進行 debug 尤為重要。因為在 Windows 系統上面﹐您的所有設定都透過圖形界面進行﹐方便是方便﹐但也因為這個圖形界面﹐限制了您的設定靈活性﹐同時也阻隔了您對 DNS 系統的深入了解。當您完成了這章的學習﹐而且成功在 Linux 架設出複雜的 DNS 環境之後﹐歡迎您再回到 Win2K 上嘗試做同樣的事情。或許﹐您就會認同我這裡的觀點了...

好了﹐閒話休提﹑言歸正傳﹐聽百遍不如做一遍﹐那就讓我們開始動手吧﹗

 

探索 NAMED

在 Linux 上面﹐提供 DNS 服務的套件是叫 bind﹐ 但執行服務程式名稱則是 named 。請您確定系統上裝有 bind﹑bind-utils﹑以及 caching-nameserver 這幾個套件﹐同時用 ntsysv 確定 named 被選擇為開機服務。

首先﹐讓我們設定一個最重要的 dns 設定檔﹐它就是 /etc/named.conf 。我將我自己的設定檔案列出來﹐然後逐部份進行解釋﹕

// generated by named-bootconf.pl

options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};


先讓我們了解這個檔案上面用來做註解的符號是“ // ”﹐而不是一般 shell script 的“#”﹔另外﹐“ /* ”與“ */ ”之間則註解一整段文字。同時﹐每一個完整的設定都以“ ﹔”結尾﹐請不要少了它﹗(初學者經常會犯這個錯誤)

上面的部份是在這個檔案開頭的 options 設定﹐首先用 directory 指定了 named 的資源記錄( RR - Resource Record )檔案目錄所在位置為﹕“/var/named”﹔也就是說﹐它會到這個目錄下面尋找 DNS 記錄檔案。所以﹐我們在這個檔案後面部份所指定的檔案﹐就無需使用絕對路徑了﹐但它們一定要放在這個目錄下面。

接下來﹐有一段文字﹐如果您仔細閱讀一下﹐它大致是說﹕如果您要設定的 DNS 伺服器和 client 之間是隔著火牆的話﹐要將“// query-source address * port 53;”前面的註解符號“ // ”拿掉(當然﹐您也必須要設定好您的火牆啦)。不過﹐這只對早期的版本有影響﹐而在 bind 8.1 之後則無需擔心這個設定。

接下來再讓我們看下一段句子﹕

//
// a caching only nameserver config
//
zone "." IN {
type hint;
file "named.ca";
};


透過這幾行﹐我們為 named 定義了 DNS 系統中的根區域“ . ”(root zone) 的設定﹐同時它是一個 internet ( IN ) 的區域類別( class )。這裡還指定了root zone 的伺服器種類( type ) 為“hint”(也只有這個 zone 會使用這樣的種類)。最後﹐用 file 指定這個區域記錄檔為﹕“named.ca”﹐也就是“/var/named/named.ca”檔案。雖然 named.ca 這個檔案中的‘ca’是 cache 的意思﹔但如果您了解 DNS 的運作﹐就應該知道這個暫存檔的作用﹐同時﹐為什麼我們會把 root zone 放在這裡。(嗯﹖想想看﹖尤其是查詢非本機區域的時候﹖)

在 root zone 後面﹐您應該還會看到如下這兩段﹕

zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };


這裡是定義出關於本機名稱的 DNS 解釋﹕第一個 zone 是 localhost 的正解 zone﹐其伺服器種類是 master﹐記錄檔名稱是 localhost.zone (在 /var/named 目錄下面)﹐但這個 zone 不允許客戶主機(或伺服器)自行更新 DNS 的記錄(當然﹐client 主機必須能支援 DNS submit 功能才行)。

而第二個 zone 則是本機區域的反解 zone ﹐不過﹐這部份的解釋我想留到後面的真實例子中再作說明﹐請您留意就是了。

上面的句子﹐當您安裝好 caching-nameserver 套件之後就被建立起來的﹐相信您不用勞什麼心力。在檔案最後﹐您或許還看到下面這段設定﹕

key "key" {
algorithm hmac-md5;
secret "coqJswFdBMdNAItnLOpkmGgmJtccFsoNZZciWqxlGZBMUTOUxb0geYMFRyTT";
};


這是 bind 9.x 版本的新功能﹐用來進行區域轉移或 DNS 更新所用的加密處理。這個我們暫時不必理會﹐除非您有興趣進行這個研究。

現在﹐我們暫時不要修改 named.conf 設定檔﹐請退出它﹐然後轉到 /var/named 目錄﹐看看裡面有些什麼東東﹖最起碼﹐您會看到如下三個檔案﹕


named.ca
localhost.zone
named.local

不知道您是否有靈感了﹖沒錯﹕剛纔在 named.conf 裡面﹐每一個 zone 所指定的 file 都出現在這裡﹗先讓我們看看 root zone 的檔案內容吧﹕

; This file holds the inFORMation on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . "
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC registration services
; under anonymous FTP as
; file /domain/named.root
; on server FTP.RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update: Aug 22, 1997
; related version of root zone: 1997082200
;
;
; FORMerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
;
; FORMerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
;
; FORMerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; FORMerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; FORMerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; FORMerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
;
; FORMerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; FORMerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
;
; FORMerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
;
; temporarily housed at ISI (IANA)
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File


在 /var/named 中的 RR 記錄檔裡面的註解符號﹐和 /etc/named.conf 的註解符號不一樣哦﹕在 named.conf 中是用雙斜線“ // ”﹔而在這裡則使用 “ ﹔”符號。無論如何﹐您都不能用 “ # ”來做註解符號就是了。(好混亂哦~~~ 這就是電腦﹗^_^ )

在上面這個 named.ca 檔案裡面﹐您如果將所有的註解行拿掉﹐您會發現一共有 13 行是以‘ . ’開頭的﹐那就是所謂的 root zone 了﹗然後﹐第二欄都是‘ 3600000 ’﹐這是 TTL (Time To Live) 設定﹐也就是在 cache 中保留的時間﹐以秒為單位(所以這裡是 100 小時)。其後的‘ NS ’是“Name Server”的意思﹐是 DNS 記錄名稱之一﹐也就是負責這個記錄的 name server 是哪一台主機(這裡一共由 13 台主機共同負責 root zone 的 NS 服務)。

雖然我們這裡用 NS 指定了 name server 的主機名稱﹐但對電腦系統來說﹐這些名稱必須能解釋為 IP 位址才有用(呵~~ 這個正是 DNS 系統的功能)﹐所以﹐這裡分別用 13 個‘ A ’記錄﹐也就是 Address 的意思﹐解釋 [A-M].ROOT-SERVER.NET. 這些主機各自的 IP 位址所在。

如果您了解 DNS 的查詢模式﹐您會知道 DNS 伺服器在查詢非自己管轄的 zone 的時候﹐首先會向 root 查詢下一級的 zone 在哪裡﹐然後逐級查詢下去。但問題是﹕當 named 剛啟動的時候﹐在 cache 裡面一片空白﹐它怎麼知道 root zone 的 servers 在哪裡呢﹖這不是一個矛盾嗎﹖所以﹐就必須靠這個檔案告訴 named 關於 root zone 的 servers 有哪些﹖以及在哪裡﹖ --- 明白了嗎﹖

因為這個檔是以靜態的方式維護的﹐很難保證這個檔的內容永遠都正確﹐如果 root zone 的記錄發生改變了怎麼辦(雖然這機會不大)﹖或許﹐您已經在檔案的開頭註解那裡得知﹐您可以在任何時候透過 ftp 或 gopher 取得這個檔案的最新版本。如果您還沒讀過那些註解﹐那就請帶著字典讀一下吧。如果您真的有需要更新這個 named.ca 檔﹐那可以按如下步驟進行﹕

ftp FTP.RS.INTERNIC.NET
anonymous
your_account@your.mail.server
cd domain
get named.root
bye
cp /var/named/named.ca /var/named/named.ca.bak
cat named.root > /var/named/named.ca


除了剛才的 named.ca 之外﹐第二個 zone 的記錄檔是 localhost.zone ﹐從 named.conf 中您應該知道它是 zone "localhost" 的記錄檔﹐它的內容如下﹕

$TTL 86400
$ORIGIN localhost.
@1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

1D IN NS @
1D IN A 127.0.0.1


內容很簡單﹐但您是否真的了解每一行的設定意思呢﹖如果不清楚或不確定﹐那就讓我們一起探討探討吧。

首先﹐第一行是一個 TTL 設定﹐目前是定義出這個記錄檔裡面的各項記錄的預設 TTL 值為 86400 秒(剛好是一天)。您的記錄檔或許沒有這行﹐事實上沒什麼關係﹐您可以自己補上﹐否則﹐在啟動 named 的時候會碰到一些警告﹐無傷大雅的﹔但如果您的確在意那些警告﹐那就加上這行。您要知道﹐在記錄檔中宣告的所有資源記錄(RR - Resource Record)﹐都一定有一個 TTL 設定﹐如果沒有﹐則使用這裡預設的值。

第二行是一個 ORIGIN 設定﹐說明下面的記錄源出何處(這裡是源出 localhost. 的記錄)。請您加倍留意最後的一個小數點“ .”﹐少了它或多了它﹐記錄名稱完全不一樣﹗在 DNS 記錄中﹐我們稱這樣以小數點結尾的名稱為“ 全域名稱 ”即 FQDN ( Fully Qualified Domain Name ) 。如果缺少了這個點會怎樣呢﹖就會將所屬的 ORIGIN ( @ ) 附加在記錄名稱後面﹔而這 ORIGIN 就是上一個 $ORIGIN 宣告之後的名稱﹐如果在前面找不到 $ORIGIN 宣告﹐那就以 /etc/named.conf 中定義的 zone 名稱為基準。以目前的例子來說﹐如果沒有這個小數點的話﹐“localhost”會變成“localhost.localhost”﹔但如果有小數點的話“localhost.”就只能是“localhost.”。所以﹐這個小點“.”非常重要﹐在以後設定中一定

阅读(1398) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~