Chinaunix首页 | 论坛 | 博客
  • 博客访问: 894740
  • 博文数量: 322
  • 博客积分: 6688
  • 博客等级: 准将
  • 技术积分: 3626
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-19 11:26
文章分类

全部博文(322)

文章存档

2013年(5)

2012年(66)

2011年(87)

2010年(164)

分类: LINUX

2010-11-18 10:55:47

一、 假定 
本文假定你已对域名服务器 DNS 有基本的了解,如果不是,请参看相关的文裆。 

许多DNS的文章都是从DNS原理开始介绍,本人则从使用的角度出发,为Linux的管理员提供一些简单实用的应用实例。 

下面假定我们需要建立一台企业网的DNS主服务器,应用条件如下: 

(1) 一个C类网段地址 (本例中假定是192.22.33) 

(2)企业域名为 my.com,并已注册 (主域名服务器地址 192.22.33.20,主机名为 linux.my.com) 

(3)企业网通过路由器与Internet连接 

假如你的应用环境与上述条件不同,也请往下看,本文会在上述例子的基础上针对以下情况作修正: 

(1) 多个网段 

(2) 封闭的内部网 

(3) 只能访问局部公共网的情况(如169网、上海热线等) 
二、named、/etc/named.boot 和 ndc 
DNS 服务器的主体是域名服务器进程 named ,named 启动后向DNS客户机提供域名解析服务,把域名转换成IP地址。 

named 启动时需要读取一个初始化文件,缺省情况下是 /etc/named.boot,所以/etc/named.boot 是 named 的基本配置文件。 

虽然启动 named 可直接执行 named,在Linux上我们可以使用一个控制 named 的工具 ndc。ndc 可以用于启动、中止、重启动、刷新DNS数据、输出DNS数据等多种调试功能,我在这里推荐大家用这个工具来帮助 DNS 服务器的调试。 

有关 ndc 的详细用法,请参看 Linux 有关文档。 
三、建立 named 配置文件 /etc/named.boot 
/etc/named.boot 是基本的配置文件,但不包含任何 DNS 数据,针对我们前面的假定,我们先建立以下 /etc/named.boot,其内容如下: 


; boot file for name server 

directory /var/named 

primary my.com db.my 
primary 0.0.127.IN-ADDR.ARPA db.127.0.0 
primary 33.22.192.IN-ADDR.ARPA db.192.22.33 
cache . db.cache 

其中以“;”开头的行是注释行,其他各行含义是 

(1)diretory /var/named 

指定 named 从 /var/named 目录下读取 DNS 数据文件。这个目录用户可自行指定并创建,指定后所有的DNS 数据文件都存放在此目录下。 

(2)primary my.com db.my 

指定 named 作为 my.com 域的主域名服务器,db.my 文件中包含所有 *.my.com 形式的域名转换数据。 

(3)primary 0.0.127.IN-ADDR.ARPA db.127.0.0 

指定 named 作为127.0.0网段地址转换主服务器,db.127.0.0 文件中包含了 127.0.0.* 形式的地址到域名的转换数据。(127.0.0网段地址是局域网接口的内部 loopback 地址) 

(4)primary 33.22.192.IN-ADDR.ARPA db.192.22.33 

指定 named 作为 192.22.33 网段地址转换主服务器,db.192.22.33 文件中包含了所有 192.22.33.* 形式的地址到域名的转换数据。 

(5) cache . db.cache 

指定 named 从 db.cache 文件中获得 Internet 的顶层“根”服务器地址 

要注意(3)(4)两行中的网段地址是倒写的,另外,各个文件名也是可以自行决定的。 
四、建立各个 DNS 数据文件 
下一步,要按 /etc/named.boot 中的定义,建立各个 DNS 数据文件。 

(1)建立正向域名转换数据文件 db.my 

根据 /etc/named.boot 的定义,我们在 /var/named 目录下建立 db.my,其中应该包括所有在 my.com 域内的主机节点。但在机器数量较多时,为了调试方便,建议一开始只把几台节点的数据放入文件,待 named 正常工作后再把其他节点的数据补充进去。下面是 db.my的例子: 

@ IN SOA linux.my.com. root.linux.my.com. ( 
199511301 ; serial, todays date + todays serial # 
28800 ; refresh, seconds 
7200 ; retry, seconds 
3600000 ; expire, seconds 
86400 ) ; minimum, seconds 
NS linux.my.com. 
MX 10 support.my.com. 

localhost A 127.0.0.1 
linux A 192.22.33.20 
support2 A 192.22.33.102 
hp712 A 192.22.33.160 
support A 192.22.33.100 
mail MX 10 support.my.com. 
MX 20 support2.my.com. 
www CNAME hp712.my.com. 
ftp CNAME hp712.my.com. 
ns CNAME linux.my.com. 

其中第一行是 SOA 记录,定义了域名数据的基本信息,依次是 DNS 服务器名、DNS 管理员邮件地址,括号内的第一个数字是文件版本号,每次本文件内容修改后,必须更改此号。其余数字与DNS服务器直接的数据交换有关,在这里我们不需要改动。 

括号后面有一条 NS 记录和一条 MX 记录,定义了域名服务器本身的域名和  形式邮件地址所对应的邮件服务器名字。 

在此以下是各种域名/地址转换数据,其中 A 记录是 DNS 域名到 IP 地址的记录,是必须有的,以 hp712.my.com 为例,在 A 记录中域 my.com 被省略,只写成 hp712,named 在处理时会根据 named.boot 中的定义自动加上 my.com,而其对应 IP 地址为 192.22.33.160。 

另一种记录是 MX 记录。MX 是邮件地址转换记录,本例中定义了将  的邮件地址转换成  或,即实际上真正的邮件服务器是 support.my.com 和 support2.my.com,其中 support.my.com 的优先数为 10,support2.my.com 的优先数为 20,所以通常邮件首先被发往优先数小的主机 support.my.com。 

还有一些是为方便提供的 CNAME 记录。CNAME 定义了一些主机的别名,比如我们将 hp712.my.com 作为公司的 www 和 ftp 服务器,所以我们提供了 和 ftp.my.com 作为 hp712.my.com 的别名,用户只需要根据习惯就可以访问公司的 www、ftp 服务器了,如果将来我们换用别的主机作 www 和 ftp 服务器,只需要修改 CNAME 记录就可,对用户没有影响。 

注意:MX 和 CNAME 记录最后的带域名的主机名后必须带一个“.” 

(2)建立反向 DNS 数据文件 db.127.0.0 和 db.192.22.33 

反向 DNS 数据文件用来提供根据 IP 地址查询相应 DNS 主机名,每个网段分别有一个数据文件。 

对于内部网段 127.0.0 通常只有一个地址,即 127.0.0.1 loopback 地址,db.127.0.0 内容如下: 

@ IN SOA linux.my.com root.linux.my.com. ( 
1997022700 ; Serial 
28800 ; Refresh 
14400 ; Retry 
3600000 ; Expire 
86400 ) ; Minimum 
IN NS linux.my.com. 

1 IN PTR localhost. 

而外部网段的数据文件 db.192.22.33 中包含所有主机 IP 地址到 DNS 主机名的转换数据。db.192.22.33 内容如下: 

@ IN SOA linux.my.com. root.pc590.my.com. ( 
199609206 ; Serial 
28800 ; Refresh 
7200 ; Retry 
604800 ; Expire 
86400) ; Minimum TTL 
NS linux.my.com. 

; All hosts 

20 PTR linux.my.com. 
102 PTR support2.my.com. 
100 PTR support.my.com. 
160 PTR hp712.my.com. 

反向 DNS 数据文件中的主要部分是 PTR 记录,PTR 记录中的 IP 地址都只有主机号,named 会根据 named.boot 的定义自动加上前面的网络号,注意后面的主机名要附加一个“.” 

(3)获得 db.cache 文件 

在 Linux 系统上通常在 /var/named 下已经提供了一个 named.ca,该文件文件中包含了 Internet 的顶层域名服务器,但这个文件通常会发生变化,所以建议最好从 Internic 下载最新的版本。该文件可通过匿名 ftp 从 ftp.rs.internic.net 下载,在 domain 目录下,文件名为 named.root。注意该文件下载后要拷贝到 named 的工作目录并重命名成 named.boot 中指定的文件名,本文中为 db.cache。 
五、启动和测试 named 
首先,根据先前推荐的方法,用 ndc 启动 named: 

ndc start 

然后,为了使用和测试 named,要把 Linux 设置在使用 DNS 状态。方法是在 /etc 目录下,创建 resolv.conf 文件。以我们的例子,/etc/resolv.conf 内容为: 

search my.com 
nameserver 192.22.33.20 

然后,我们就可以测试 named 了。 

Linux 和其他 Unix 系统均提供了 nslookup 工具,在命令行状态下输入: 

nslookup 

就进入交换式 nslookup 环境,如果 named 正常启动,nslookup 会显示当前 DNS 服务器的地址和域名,否则表示 named 没能正常启动。下面简单介绍一些基本的 DNS 诊断: 

(1)检查正向 DNS 解析 

在 nslookup 提示符下输入带域名的主机名,如 hp712.my.com,nslookup 应能显示该主机名对应的 IP 地址,如果只输入 hp712,nslookup 会根据 /etc/resolv.conf 的定义,自动添加 my.com 域名并回答对应的 IP 地址。 

(2)检查反向 DNS 解析 

在 nslookup 提示符下输入某个 IP 地址,如 192.22.33.20,nslookup 应能回答该 IP 地址所对应的主机名。 

(3)检查 MX 邮件地址记录 

在 nslookup 提示符下输入: 

set q=mx 

然后输入某个域名,以本文的例子,输入 my.com 或 mail.my.com,nslookup 应能够回答对应的邮件服务器地址,即 support.my.com 和 support2.my.com。 

(4)检查 CNAME 别名记录 

在 nslookup 提示符下输入: 

set q=cname 

然后输入某个别名,如 ,nslookup 应能回答对应的真实主机名,即 hp712.my.com。 

如要退出 nslookup,可输入 exit。 
六、修改 DNS 数据 
如果要在网络中增加主机,例如要增加一台叫做 pc01.my.com 的 PC 机,管理员要在 db.my 中增加该主机对应的 A 记录,并且要在 db.192.22.33 中增加对应的 PTR 记录,然后用 ndc 更新 named 的数据: 

ndc reload 

要注意必须同时更改 A 记录和 PTR 记录,许多管理员往往只增加 A 记录而忽略了逆向查询用的 PTR 记录,结果会使许多应用程序不能正常运行。 

特别注意,一旦修改了 DNS 数据文件的内容,请务必改动数据文件的版本号( Serial ) 
七、使网络中的其他系统(客户机)使用 DNS 服务器 
一旦 DNS 服务器开始工作,就可以配置所有企业网内的主机使用 DNS 服务。 

Unix 主机配置的方法,已经在前面说明过,即创建 /etc/resolv.conf 文件,内容见前面第五节。 

Windows 95 的配置则是在网卡的 TCP/IP 配置中,选择使用 DNS (enable),然后在配置窗口中分别填入各项参数。以本文的例子,如果运行 Windows95 的主机被命名为 pc01.my.com,则在主机名(Host)一栏中填 pc01,在域名(Domain)一栏中填 my.com,然后把域名服务器 (DNS Server)加入搜索列表中。 

Windows NT 节点的配置大致相同。 
八、几种不同环境下的修正 
(1)如果 IP 网段多于一个 

假定现在在 my.com 域中增加一个 IP 网段 192.22.37,则 /etc/named.boot 的内容中就增加一个网段的定义,具体如下: 


; boot file for name server 

directory /var/named 

primary my.com db.my 
primary 0.0.127.IN-ADDR.ARPA db.127.0.0 
primary 33.22.192.IN-ADDR.ARPA db.192.22.33 
primary 37.22.192.IN-ADDR.ARPA db.192.22.37 
cache . db.cache 

而反向 DNS 数据文件则增加一个定义 192.22.37 网段的文件 db.192.22.37,其中包括了所有处于 192.22.37 网段中的节点,其格式与 db.192.22.33 类似。 

(2)如果企业网是封闭的 

如果企业网络不与外界 Internet 直接互连,DNS 服务器就不必关心本企业域以外的域名,所以配置 named 的时候可以不理会 db.cache,我们可以将 /etc/named.boot 中的 cache 行去除。 

(3)如果你联入的公共网不能访问 Internet 

如果你的内部网接入的公共网只能访问有限的范围,如免费的169网、上海热线等,那么你的 DNS 服务器就不能通过 Internet 的顶层服务器(root server)进行地址解析,所以你必须用你直接能访问到的 DNS 服务器来替代。具体办法是用 forwarders 选项来指定上级 DNS 服务器,以本文为例,named.boot 的内容为: 


; boot file for name server 

directory /var/named 

primary my.com db.my 
primary 0.0.127.IN-ADDR.ARPA db.127.0.0 
primary 33.22.192.IN-ADDR.ARPA db.192.22.33 
primary 37.22.192.IN-ADDR.ARPA db.192.22.37 
forwarders ... 
options forward-only 

其中、等是你能直接访问到的 DNS 服务器的地址,通常就是你的 ISP (169、上海热线等)的 DNS 服务器的地址,至少要有一个。 

通过 forwarders 和 options forward-only 参数的指定,你的企业 DNS 服务器就工作在 forward-only 模式下,所有本地不能解决的名字都被传送到 ISP 的 DNS 服务器上去解析。 
九、建立后备 DNS 服务器 (Secondary DNS Server) 
通常有一台 DNS 主服务器,网络即可正常工作,但根据 Internic 对域名的管理规范,一个独立的域名必须至少有两台 DNS 服务器,即一台 DNS 主服务器 ( Primary Server )和一台后备 DNS 服务器 ( Secondary Server ),这主要是为 DNS 服务的可靠性考虑,能使 Internet 的性能更为可靠。 

现在仍以前面的例子,现在要加入一台运行 Linux 的机器 nspc.my.com,IP 地址为 192.22.33.60。 

(1)主服务器上的修改 

首先确认 DNS 主服务器工作正常,然后,在主服务器上的正向 DNS 数据文件 db.my 中,加入 nspc.my.com 的有关记录,并增加一个NS记录,使主服务器上的 db.my 成为下列内容: 

@ IN SOA linux.my.com. root.linux.my.com. ( 
199511301 ; serial, todays date + todays serial # 
28800 ; refresh, seconds 
7200 ; retry, seconds 
3600000 ; expire, seconds 
86400 ) ; minimum, seconds 
NS linux.my.com. 
NS nspc.my.com. ; 必须增加的记录 
MX 10 support.my.com. 

localhost A 127.0.0.1 
linux A 192.22.33.20 
support2 A 192.22.33.102 
hp712 A 192.22.33.160 
support A 192.22.33.100 
nspc A 192.22.33.60 ; 增加的记录 
mail MX 10 support.my.com. 
MX 20 support2.my.com. 
www CNAME hp712.my.com. 
ftp CNAME hp712.my.com. 
ns2 CNAME nspc.my.com. ; 增加的记录 
ns CNAME linux.my.com. 

然后对主服务器上的各个反向 DNS 数据文件做类似的修改,增加有关后备服务器的 NS 记录,然后重新起动 named。 

可见,其实在主 DNS 服务器上的改动主要是增加了一条 NS 记录,其余的改动和增加一台普通节点一样,如果是用现有的节点做后备 DNS 服务器,则增加 NS 记录是唯一必须的步骤。 

(2)后备 DNS 服务器(secondary server)的配置 

需要在后备 DNS 服务器上创建的配置文件只有 named.boot 和 db.cache,格式与主服务器相似,named.boot 内容为: 


; boot file for secondary name server 

directory /var/named 

secondary my.com 192.22.33.20 db.my 
secondary 0.0.127.IN-ADDR.ARPA 192.22.33.20 db.127.0.0 
secondary 33.22.192.IN-ADDR.ARPA 192.22.33.20 db.192.22.33 
cache . db.cache 

其中的三行 secondary 定义,使得 named 从 192.22.33.20,即主服务器上获得各种 DNS 数据,并存在本地的各个数据文件中。本地的数据文件由 named 从主 DNS 服务器的 named 下载后生成,通常与主服务器上的数据文件完全一样,万一后备服务器与主服务器失去连接而不能下载 DNS 数据,后备服务器可利用本地的数据文件工作。 

而后备 DNS 服务器的 db.cache 通常由系统管理员从主服务器上拷贝过来即可。 

通常,后备 DNS 服务器可以建立在企业网内,也可利用外部的 DNS 服务器充当,如让 ISP 的服务器作为企业的后备 DNS 服务器,这样可以提高 DNS 服务的可靠性。注意,同一台 DNS 服务器可以同时成为多个 DNS 域的服务器,而且可以既作某些域的主服务器,同时又是另一些域的后备服务器。 

(3)DNS 客户机端的改动 

对于内部网上的 Unix 主机,应该在 /etc/resolv.conf 中增加一行 nameserver 说明,使得系统能够搜索后备 DNS 服务器,以本文的例子,/etc/resolv.conf 的内容为: 

search my.com 
nameserver 192.22.33.20 
nameserver 192.22.33.60 

注意,我们可以根据需要决定 /etc/resolv.conf 中所列出的 DNS 服务器的顺序,通常选择访问速度快的服务器在前。 

对于 Windows95 和 NT,则是在 DNS 服务器的列表中把后备 DNS 服务器添加进去即可,添加的顺序同样可以决定访问各 DNS 服务器的优先级。 

欢迎各位网友对本文提出修正和改进意见,本人 E-mail: 

嗯,nsswitch.conf的配置以及把DNS配置成cache only的方式没有讲,不过那比较简单,很多书上都有. 


Q:用Linux建立局域网服务器

Linux系统作为网络服务器的优点数不胜数,但它的缺点也不少,特别是繁琐的配置让不少人望而却步。本文以TurboLinux 4.0为例,介绍配置局域网Linux服务器时的一些经验,希望对读者有一些帮助,也希望能起到抛砖引玉的作用。 

一、TCP/IP网络配置 

  TurboLinux对网卡的支持还是比较好的,大部分网卡在安装时就可以自动检测出来。如果你的运气不好,Linux找不到你的网卡,可以进入X Windows,以root身分运行linuxconf命令。这是一个图形界面的配置工具,大部分Linux设置可以通过点点鼠标简单完成。首先在其中找到Basic Host Setting一项,在这一项中设置网卡的类型、I/O port和IRQ,一般没有列出的ISA卡可以用ne,PCI可以用ne或ne2k-pci,接着设置IP地址和子网掩码,只要和局域网中的其他机器设在同一个子网中就可以了。如果要连接外部网络还要设置网关。关于这方面的问题还可以参看TurboLinux的帮助文件。 

二、Samba服务器的配置 

  Samba是一个文件和打印服务器,它最重要的特点就是可以和Win98/NT共享文件,还可以为其提供打印服务。简而言之,就是可以在Win98的网上邻居中看到Linux服务器,并能存取其中的文件。 
  关于Samba的配置都存放在/etc/smb.conf中,其中多数可用它的默认设置,我就不再多说了,但有几处是非改不可的: 
  smb.conf文件中采用类似于Windows ini 文件的方式,以[]为一段的开始,每一行为一个等号表达式,注释以打头。其中每一个[]都表示一个共享目录(global和printer)除外[global]中是一些通用的配置,其中对Win98机器比较重要的一个就是guestaccount,表示不用密码的用户名,如果在Win98中以这个用户名登录,访问public=yes的目录就不用密码,但不能访问public=no的目录。 
[global] 
guest account = guest 
  Workgroup要改为Win98网络配置中所设的名字,不然网上邻居中就找不到这台机器 
workgroup = Samba Server 
[homes] 
  因为Win98不区分大小写,而Linux却区分大小写,所以要加入以下两行 
preserve case = yes 
short preserve case = yes 
[myshare] 
  如果要设置一个目录只对几个用户有读写权限,只要加入以下一行每两个用户名中间以空格分开 
valid users = user1 user2 user3 
  设置完smb.conf文件后,运行turboservice,把samba服务设置为开机自动启动。 
  以后Linux开机后,就可以在Win98的网上邻居中找到它了。 
  以上只是用Win98共享Linux资源,那么如何用Linux共享Win98中的文件呢?其实更简单,只要用命令smbmount。例如:要共享另一台主机ntserver中sharefile目录,用户名是student,密码是1234,只要打入命令: 
  smbmount ′\\ntserver\sharefile′ -U student -P 1234 /mnt/sharefile 
  以后/mnt/sharefile就成了ntserver中的sharefile目录,如果没有用户名和密码-P 和 -U 参数就可以省掉了。 

三、Apache服务器的配置 

  你是不是也想在局域网上发布主页呢?那就选择Apache吧。 
  用Apache安装Http Server是最简单不过的了,只要用turboservice命令把Web Server服务启动即可。它的默认主页是/home/httpd/index.html,把它替换成自已的主页,然后在浏览器中输入Linux主机的IP地址看看有什么反应。 
  只用IP地址实在太单调了,想不想试试用这样Cool的域名,那就看看下面的介绍吧。假设Linux主机的局域网中的IP地址是192.1.1.1,打开/etc/hosts文件,找到192.1.1.1对应的那一行,把主机的别名改为。然后把局域网中另一台Win98机器设置为通过局域网连接,并在局域网代理服务器设置一栏中填入Linux主机的IP地址。最后打开IE,输入,享受一下你的劳动成果吧!
阅读(717) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~