LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1715|回复: 3

红旗linux中所有的服务器配置详细资料

[复制链接]
发表于 2009-1-12 20:40:20 | 显示全部楼层 |阅读模式
各位大侠们,帮小弟把红旗linux中所有的服务器配置贡献你们所知道的阿~ 包括DNS、FTP、DHCP、SMB、WEB、HTTP等等 谢谢拉~!
 楼主| 发表于 2009-1-23 20:18:00 | 显示全部楼层
DNS
DNS简介

  在Linux中,域名服务(DNS)是由柏克莱网间名域(Berkeley Internet Name Domain——BIND)软件实现的。BIND是一个客户/服务系统,它的客户方面称为转换程序(resolver),它产生域名信息的查询,将这类信息发送给服务器,DNS软件回答转换程序的查询。BIND的服务方面是一个称为named(读作“name”“d”)的守护进程。

  我们将讨论三种基本BIND配置任务:

  配置BIND转换程序。

  配置BIND域名服务。

  建立服务器数据库文件,称为“区文件(zone file)。

  前面我们介绍过,术语“区(zone)”往往可以与单词“域(domain)”互换使用,但这里却有一些区别,“区”是指域数据库文件,而“域”则比较通用。在本书中,域是用域名定义的域结构中的一部分,而区则是域数据库文件中包含域信息的集合,包含域信息的文件称为“区文件”。

  DNS的作用是把IP地址转化为代表主机、网络和邮件别名的助记名。它把整个Internet IP地址和名字空间分解为不同的逻辑组来做这项工作。每个组对它所拥有的计算机和其他信息具有控制权。

  DNS服务器的类型

  BIND可以配置成以几种不同的方法运行的DNS,常见的BIND配置是唯转换程序系统、唯高速缓存系统、主服务器和辅助服务器。

  转换程序是一段要求域名服务器提供域信息的程序,在Linux系统中,它是作为一个库程序来实现的,不是一个单独的客户程序。在唯转换程序系统中,仅使用转换程序,并不运行域名服务器。这种系统是很容易配置的,最多只需要设置/etc/resolv.conf文件。其它三个BIND配置选项都是用于named服务软件的。

  唯高速缓存服务器 唯高速缓存服务器(caching-only server)可运行域名服务器软件但是没有域名数据库软件。它从某个远程服务器取得每次域名服务器查询的回答,一旦取得一个答案,就将它放在高速缓存中,以后查询相同的信息时就用它予以回答。所有的域名服务器都按这种方式使用高速缓存中的信息,但唯高速缓存服务器则依赖于这一技术提供所有的域名服务器信息。唯高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。

  对于唯高速缓存服务器只需要配置一个高速缓存文件,但最常见的配置还包括一个回送文件,这或许是最常见的域名服务器配置。接着才是唯转换程序配置,它是最容易配置的。

  主服务器 主服务器(primary name server)是特定域所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对它域的任何查询。

  配置主服务器需要一整套配置文件,包括正规域的区文件(named.hosts)和反向域的区文件(named.rev)、引导文件(named.conf)、高速缓存(named.ca)和回送文件(named.local),其它的配置都不需要这样一整套文件。

  辅助域名服务器 辅助域名服务器(secondary name server)可从主服务器中转移一整套域信息。区文件是从主服务器中转移出来的,并作为本地磁盘文件存储在辅助服务器中。这种转移称为“区文件转移”。在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询,因此,辅助域名服务器也称作权威性服务器。

  配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。然而其它的文件是确是需要的,包括引导文件、高速缓存文件和回送文件。

  一个域名服务器可以是这类配置中的任何一种,但经常是将多种配置类型的元素组合在一起。然而所有的系统都要运行转换程序。

  DNS常用术语

  DNS是一个很复杂的概念,表1列出了常用的DNS术语。

  表1 常用DNS术语

  术语

  说明

  域

  代表网络一部分的逻辑实体或组织

  域名

  主机名的一部分,它代表包含这个主机的域。它可以和域交换使用

  主机

  网络上的一台计算机

  节点

  网络上的一台计算机

  域名服务器

  提供DNS服务的计算机,它将DNS名字转化为IP地址

  解析

  把一个DNS服务器转化为与其相映的IP地址的过程

  解析器

  从域名服务器中提取DNS信息的程序或库子程序

  反向解析

  将给出的IP地址转化为其相映的DNS名字

  欺骗

  使网络看上去好象具有不同的IP地址或域名的行为

  在概念上可以把DNS分为三个部分:

  域名空间 这是标识一组主机并提供他们的有关信息的树结构的详细说明。树上的每一个节点都有它控制下的主机的有关信息的数据库。查询命令试图从这个数据库中提取适当的信息。简单地说,这只是所有不同类型信息的列表,这些信息是域名、IP地址、邮件别名和那些在DNS系统中能查到的内容。

  域名服务器 它们是保持并维护域名空间中的数据的程序。每个域名服务器含有一个域名空间子集的完整信息,并保存其它有关部分的信息。一个域名服务器拥有它控制范围的完整信息。控制的信息按区进行划分,区可以分布在不同的域名服务器上,以便为每个区提供服务。每个域名服务器都知道每个负责其他区的域名服务器。如果来了一个请求,它请求给定域名服务器负责的那个区的信息,那么这个域名服务器只是简单地返回信息。但是,如果请求是不同区的信息,那么这个域名服务器就要与控制该区的相映服务器联系。

  解析器 解析器是简单的程序或子程序库,它从服务器中提取信息以响应对域名空间中主机的查询。

  配置转换程序

  使用DNS的第一步是在用户的计算机上配置转换程序,即让机器能够能够从DNS服务器中获取域名解析/反解析服务。转换程序不是一个单独而明确的处理进程,而是网络进程调用的一个标准C程序库。如果本地系统不运行named,就必须配置本地转换程序。

  转换程序控制文件/etc/host.conf

  /etc/host.conf是用来控制本地转换程序的文件的设置。该文件告诉转换程序使用哪些服务、按照什么顺序进行。该文件的字段可以用空格或制表符分隔。字符“#”表示注释行。表2是可在host.conf中指定的选项。

  表2 /etc/host.conf文件的配置选项

  选项

  说明

  order

  指定按照哪种顺序来尝试不同的名字解析机制。按列出的顺序来进行指定的解析服务。支持下面的名字解析机制:

  hosts 试图通过查找本地/etc/hosts文件来解析名字

  bind 使用DNS域名服务器来解析名字

  nis 使用网络信息服务(NIS)协议来解析主机名字

  multi

  以off和on为参数。与host查询一起使用,用来确定一台主机是否在/etc/hosts文件中指定了多个IP地址

  nospoof

  如果用逆向解析找出与指定的地址匹配的主机名,对返回的地址进行解析以确认它确实与您查询的地址相配。为了防止“骗取”IP地址,通过指定nospoof on来允许这种功能

  alert

  以off和on为参数。如果打开,任何试图骗取IP地址的行为都通过syslog工具进行记录

  trim

  以域名为参数。在/etc/hosts中查找名字前,trim删除这个域名。着使你只把基本主机名放在/etc/host.conf中而不指定域名

  下面这个例子是主机vlager上的/etc/host.conf文件:

  # /etc/host.conf

  # We have named running, but no NIS (yet)

  order bind hosts

  # Allow multiple addrs

  multi on

  # Guard against spoof attempts

  nospoof on

  # Trim local domain (not really necessary).

  trim vbrew.com.

  这个例子给出了域vbrew.com的通用解析程序配置。该解析程序首先使用DNS然后使用/etc/hosts文件查找主机名。在解析查找中指定本地/etc/hosts文件是一个好主意。如果由于某种原因不能使用域名服务器了,我们还可以使用主机文件中列出的那些主机名。该机器上允许使用多个IP地址,主机通过重新解析主机名字(从IP地址逆向查找返回的主机名字)来检查IP欺骗。

  转换程序/配置文件/etc/resolv.conf

  当配置转换程序使用BIND域名服务查询主机时,我们必须告诉转换程序使用哪一个域名服务器。用来完成这项任务的工具就是/etc/resolv.conf文件。/etc/resolv.conf控制转换程序使用DNS解析主机名使用的方式,它可以明确地定义系统的配置,允许我们命名由于缺省服务器不响应而使用的备份服务器。因此,尽管会增加系统负荷,但在某些场合使用resolv.conf是很受欢迎的。

  /etc/resolv.conf是一个简单而易读的文件。在/etc/resov.conf中使用的命令,具有系统专用的形式,但一般都支持domain和nameserver两项命令。

  nameserver项利用IP地址去识别让转换程序去识别查询域信息的那些服务器。我们可以多次使用nameserver选项,可以使用多达三个域名服务器。这些名服务器是按照它们在文件中的顺序进行查询的,如果没有接收到一个服务器的响应,就去试表中的下一个服务器,直到所有服务器试完为止(如果在/etc/resolv.conf文件中设置了三个以上的域名服务器,那么,即使前三个服务器都没有响应查询请求,Linux也不会去请求后面的服务器)。我们应该将最可靠的域名服务器列在最前面,以便在查询时不会超时。如果resolv.conf文件中不包含nameserver项,或者不存在resolv.conf文件,就将所有名服务器查询发送给本地主机。然而,如果有一个resolv.conf文件,它包含nameserver项,除非有一项指向本地主机,否则就不查询本地主机。在配置唯转换程序的主机中,resolv.conf文件包含nameserver项,但没有一个项指向本地主机。

  domain项用来定义缺省域名(主机的本地域名)。转换程序会将缺省域名挂在任何不含点的主机名后面。例如,转换程序接收到主机名vale(它不含点),就将其缺省域名挂接在vale后面,构成对它的查询。如果domian域中的name值是vbrew.com,那么转换程序就将查询vale.vbrew.com。如果没有出它,则转换程序就试图通过getdomainname()系统调用来获得本地域名。

  如果听起来让人迷惑不解的话,我们可以看看下面这个例子,这是Virtual Brewery中的resolv.conf文件:

  # /etc/resolv.conf

  # Our domain

  domain vbrew.com

  #

  # We use vlager as central nameserver:

  nameserver 191.72.1.1

  在该例中,通过domain指定缺省域名,并列出一个用于解析主机名的域名服务器。在这个例子中没有指定查寻顺序(使用search选项),因此如果要查询一台机器的地址(如vale),解析器则首先试图查找vale,如果没找到,则查找vale.vbrew.com,然后再查找vbrew.com。

  唯转换程序配置

  配置唯转换程序是非常简单的,下面是一个唯转换程序的/etc/resolv.conf文件的例子:

  # /etc/resolv.conf

  # Our domain

  domain vbrew.com

  #

  # We use vlager as central nameserver:

  nameserver 191.72.1.1

  # netx try vale

  namesever 191.72.1.3

  该配置文件告诉转换程序将所有的查询发送给主域名服务器vlager,如果失败,就试vale。这些查询是永远不能在本地转换的。这一个简单的resolv.conf文件就可以满足唯转换程序配置的全部要求。

  设置域名服务器

  在Linux上的域名服务是由named守护进程来执行的,named最早是为BSD向客户机提供域名服务而开发的。named守护进程通常在系统启动时开始工作,并一直工作到系统关闭。该进程从被称作/etc/named.boot的配置文件中获取有关信息和将主机名映射为IP地址的各种文件。

  为了运行named,只要在命令行中输入:

  # /etc/rc.d/init.d/named start

  named就会开始运行,读取named.boot文件及其定义的任何区文件并将它的进程ID以ASCII码的形式写入/var/run/named.pid中,下载任何来自主服务器的区文件,如果有必要的话在端口53等待DNS请求。

  虽然转换程序的配置只需要一个配置文件,但是在配置named时却要使用多个文件,一整套named配置文件?绫?3所示。

  表3 named配置文件

  配置文件

  说明

  named.conf

  设置一般的named参数,指向该服务器使用的域数据库信息的源,这类源可以是本地磁盘文件或远程服务器

  named.ca

  指向根域名服务器

  named.local

  用于在本地转换回送地址

  named.hosts

  将主机名映射为IP地址

  named.rev

  用于反向域的、将IP地址映射到主机名的区文件

  在下面各节中我们将探讨如何利用其中的每一个文件去配置named。

  /etc/named.conf文件

  named.conf文件通常很小,只包括一些指向DNS信息源的信息。其中某些源是本地文件,其他则是远程服务器。下面我们将看到一个需要生成的每种文件类型的例子。

  表4概括了named.conf文件中使用的各种配置语句,它提供的信息能帮助我们了解这一些例子:

  表4 named.boot文件的配置选项

  选项

  说明

  Directory

  指定DNS文件所在的目录。您可以重复此选项以指定几个不同的目录。可以给出这些目录相关的文件路径名

  Master

  以一个域名和一个文件名为参数。此选项声明named对指定的域具有控制权,并使named从指定的区域加载信息

  Hint

  为named建立高速缓存信息。以一个域名和一个文件名为参数。域名通常用“.”指定。指定的文件包括一组称为服务器提示的记录,这些记录列出了根域名服务器的信息

  Forwarders

  以一个域名服务器的列表作为参数。告诉本地域名服务器:如果它不能从它的本地信息中解析出地址,那么就与该列表中的服务器联系

  Slave

  把本地域名服务器变成一个从属服务器。如果给出了此选项,那么本地服务器就试着通过递归查询来解析DNS名字。它只把请求传递给forwarders选项行列出的服务器中的一个

  配置named.conf文件所使用的方法,是用来控制将域名服务器作为主服务器、辅助服务器还是唯高速缓存服务器的。理解不同配置的最佳方法是讨论各种named.conf的示例文件。

  1.唯高速缓存服务器

  配置唯高速缓存域名服务器是很简单的。必须有named.conf和named.ca文件,通常也要用到named.local文件。下面是用于唯高速缓存服务器的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;

  };

  //

  // a caching only nameserver config

  //

  //

  // a caching only nameserver config

  //

  zone "." {

  type hint;

  file "named.ca";

  };

  zone "0.0.127.in-addr.arpa" {

  type master;

  file "named.local";

  directory这一行告诉named到哪里去找寻文件。所有其后命名的文件都将是相对于此目录的。该文件告诉named去维持一个域名服务器响应的高速缓存,并利用named.ca文件的内容去初始化该高速缓存。该高速缓存初始化文件的名字可以是任何名字,但一般使用/var/named/named.ca。并不是在该文件中使用一个hint语句就能使它成为唯高速缓存配置,几乎每一种服务器的配置都要用到cache语句,而是因为没有master和slave语句才使它成为一个唯高速缓存配置。

  但是,在我们这个例子中却有一个master语句。事实上,几乎在每一个唯高速缓存的配置文件中都有这一个语句,它将本地服务器定义为它自己的回送域的主服务器,并假定该域的信息存储在named.local文件中。这个回送域是一个in-addr.arpa域(in-addr.arpa域用于指定逆向解析,或IP地址到DNS名字解析),它将地址127.0.0.1映射为名字localhost。转换自己的回送地址对于大多数人都是有意义的,因为大多数的named.conf文件都包含这一项。

  在大多数唯高速缓存服务器的配置文件中,这种directory、master和hint语句是唯一使用的语句,但也可以增加其他的语句,forwarders和slave等语句都可以使用。

  2.主服务器和辅助服务器的配置

  我们虚构的vbrew.com是举例说明主服务器和辅助服务器的基础,下面是将vlager定义为vbrew.com域的主服务器的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;

  };

  //

  // a caching only nameserver config

  //

  zone "." {

  type hint;

  file "named.ca";

  };

  zone "vbrew.com"{

  type master;

  file "named.hosts";

  };

  zone "0.0.127.in-addr.arpa" {

  type master;

  file "named.local";

  };

  zone "72.191.in-addr.arpa"{

  type master;

  file "named.rev";

  };

  上例中第一个master告诉我们这是vbrew.com域的主服务器。该域的数据是从named.hosts文件中加载的。在我们这个例子中,我们将文件名named.hosts作为区文件名,但也可以使用更有说明性的文字,例如,vbrew.com区文件的名字使用vbrew.com.hosts则较好。

  第三个master语句指向能将IP地址191.72.0.0映射为主机名的文件。它假定本地服务器是反向域72.191.in-addr.arpa的主服务器,该域的数据从文件named.rev中加载。

  在上例配置中的hint语句和第二个用于回送域的primary语句我们前面在唯高速缓存配置中已经讨论过。在这些配置中,它们的作用是相同的,而且几乎在任何配置中都要使用它们。

  辅助服务器的配置与主服务器的配置不同,它使用slave语句代替master语句。slave语句指向用作域信息源的远程服务器,以替代本地磁盘文件。下面的named.conf文件可以将vale配置成为vbrew.com域的辅助服务器:

  // 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;

  };

  //

  // a caching only nameserver config

  //

  zone "." {

  type hint;

  file "named.ca";

  };

  zone "0.0.127.in-addr.arpa" {

  type master;

  file "named.local";

  };

  zone "vbrew.com"{

  type slave;

  file "named.hosts";

  masters { 191.72.1.3; };

  };

  zone "72.191.in-addr.arpa"{

  type slave;

  file "named.rev";

  masters {191.72.1.3;};

  };

  cache . named.ca

  secondary vbrew.com 191.72.1.3 named.hosts

  secondary 72.191.in-addr.arpa 191.72.1.3 named.rev

  primary 0.0.127.in-addr.arpa named.local

  第一个slave语句是使这个服务器成为vbrew.com的辅助服务器。它告诉named从IP地址为191.72.1.3的服务器中下载vbrew.com的信息,并将其数据保存在/var/named/named.hosts文件中。如果该文件不存在,named就创造一个,并从远程服务器中取得区数据,然后将这些数据写入新创建的文件中。如果存在该文件,named就要检查远程服务器,以了解该远程服务器的数据是否不同于该文件中的数据,如果数据有变化,它就下载更新后的数据,用新数据覆盖该文件的内容;如果数据没有变化,named就加载磁盘文件的内容,不必做麻烦的区转移工作。

  将一个数据库拷贝到本地磁盘文件中,就不必每次引导主机时都要转移区文件;只有当数据修改时,才进行这种区文件的转移工作。

  该配置文件中的下一行表示该本地服务器也是反向域72.191.in-addr.arpa的一个辅助服务器,而且该域的数据也从191.72.1.3中下载。该反向域的数据存储在named.rev中。

  DNS数据库文件和资源记录

  配置named所需的所有文件(named.hosts、named.rev、named.local和named.ca)中的信息是以称为资源记录的形式存在的。每个资源记录都有一个类型,这个类型说明记录的功能。这些记录都是标准资源记录,称为RR(resource records)。表5列出了最常见的资源记录类型,其余的类型很少用到,如果感兴趣的话。请参考相应的RFC和man page。

  表5 常见标准资源记录

  资源记录名

  记录类型

  功能说明

  地址

  A

  将主机名转换为地址。这个字段保存以点分隔的十进制形式的IP地址。任何给定的主机都只能有一个A记录,因为这个记录被认为是授权信息。这个主机的任何附加地址名或地址映射必须用CNAME类型给出

  规范名

  CNAME

  给定一个主机的别名,主机的规范名字是在这个主机的A记录中指定的

  主机信息

  HINFO

  描述主机的硬件和操作系统

  邮件交换

  MX

  建立邮件交换器记录。MX记录告诉邮件传送进程把邮件送到另一个系统,这个系统知道如何将它递送到它的最终目的地

  名服务器

  NS

  标识一个域的域名服务器。NS资源记录的数据字段包括这个域名服务器的DNS名。我们还需要指定这个名字名字服务器的地址与主机名相匹配的A记录

  指针

  PTR

  将地址变换成主机名。主机名必须是规范主机名

  管理开始

  SOA

  告诉域名服务器它后面跟着的所有所有资源记录是控制这个域的(SOA)表示授与控制权)。其数据字段用()括起来并且通常是多行字段。SOA记录的数据字段包含下面的项:

  origin

  这个域的主域名服务器的规范主机名。用点“.” 结尾的绝对主机名,因此,它不能被named守护进程修改

  contact

  负责维护这个域的人的电子邮件联系地址。因为@在资源记录中有特殊的意义,所以用点“.”代替这个符号。如果负责维护vbrew.com的人是clfls,那么联系地址就是clfls.vbrew.com

  serial

  这个区信息文件的版本号,它是一个整数。辅助域名服务器用它来确定这个区信息的文件是何时改变的。每次改变信息文件时都应该使这个数加一

  refresh

  辅助域名服务器在试图检查主域名服务器的SOA记录之前应等待的秒数。SOA记录不经常改变,因此可以把这个值设置为一天

  retry

  辅助服务器在主服务器不能使用时,重试对主服务器的请求应等待的秒数。通常,它应该按分进行设置

  expire

  这是辅助服务器在不能与主服务器取得联系的情况下丢掉区信息之前应等待的秒数,一般应该设置成30天左右

  minimum

  当没有指定ttl资源记录时默认的ttl值。如果网络没有太大的变化,那么这个数可以设得很大。可以在资源记录中指定一个ttl值来代替它

  为了能看懂本章中使用的配置示例文件,有必要稍微介绍以下资源记录的结构。DNS资源记录的格式是:

  [domain] [ttl] [class] type rdate

  各个字段之间有空格或指标符分隔。表6讨论了这些字段的含义。

  表6 资源记录格式中的字段

  字段

  说明

  domain

  资源记录引用的域对象名。它可以是单台主机,也可以是整个域。作为domain输入的字串除非不是以一个点结束,否则就与当前域有关系。如果该domain字段是空的,那么该记录适用于最后一个带名字的域对象

  ttl

  生存时间记录字段。它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。通常该字段是空字段,这表示使用SOA记录中为整个区域设置的缺省ttl

  class

  指定网络的地址类。对于TCP/IP网络使用IN。如果没有给出类,就使用前一个资源记录的类

  type

  标识这是哪一类资源记录

  rdata

  指定与这个资源记录有关的数据。?飧鲋凳潜匾摹J葑侄蔚母袷饺【鲇诶嘈妥侄蔚哪谌?

  named.ca文件

  named.boot文件中的cache语句指向一个高速缓存初始化文件,具有高速缓存的服务器都有这样一个文件。它包含着域名服务器启动时开始创造一个域数据高速缓存所需的信息。在cache语句中,用一个指点其根域,在named.ca文件中至少包含根服务器的名字和地址。named的高速缓存操作是很重要的。幸运的是,建立高速缓存的named.ca文件通常是最简单的named配置文件。

  基本的named.ca文件包含根服务器的NS记录和提供根服务器地址的A记录。下面就是基本的named.ca文件:

  ; named.ca file

  ; servers for the root domain

  . 99999999 IN NS NS.NIC.DDN.MIL.

  99999999 IN NS NS.NASA.GOV.

  99999999 IN NS KAVA.NISC.SRI.COM.

  99999999 IN NS TERP.UMD.EDU.

  99999999 IN NS C.NYSER.NET.

  99999999 IN NS NS.INTERNIC.NET.

  ;

  ; root servers by address

  ;

  NS.NIC.DDN.MIL. 99999999 IN A 199.112.36.4

  NS.NASA.GOV. 99999999 IN A 128.102.16.10

  KAVA.NISC.SRI.COM. 99999999 IN A 192.33.33.24

  TERP.UMD.EDU. 99999999 IN A 128.8.10.90

  C.NYSER.NET. 99999999 IN A 192.33.4.12

  NS.INTERNIC.NET. 99999999 IN A 198.41.0.4

  该记录只包含各服务器记录和地址记录。首先是一组标识根(.)域的各服务器的NS记录,在NS记录之后,是一组为每个根服务器提供地址的A记录。虽然不需要ttl,但习惯上每个记录的ttl是99999999(可能的最大值)。因为根服务器是永远不会从高速缓存中删除的。

  named.local文件

  named.local文件可以将回送地址127.0.0.1转换成本地主机名,它是反向域0.0.127.IN-ADDR.ARPA使用的区文件.由于所有系统都将127.0.0.1作为回送地址,该文件实际上对于每一个系统都是相同的。下面是从vlager上获取的一个典型的named.local文件:

  ;

  ; /var/named/named.local Reverse mapping of 127.0.0

  ; Origin is 0.0.127.in-addr.arpa.

  ;

  @ IN SOA vlager.vbrew.com. (

  joe.vbrew.com.

  1 ; serial

  360000 ; refresh: 100 hrs

  3600 ; retry: one hour

  3600000 ; expire: 42 days

  360000 ; minimum: 100 hrs

  )

  IN NS vlager.vbrew.com.

  1 IN PTR localhost.

  其中的SOA记录的数据字段和包含主机名的NS记录是随系统不同而不同的。本例中SOA记录将vlager.vbrew.com标识为开创该区的服务器,将电子邮件地址joe.vbrew.com标识为解决该区问题的联系地点(在SOA记录中,通常将电子邮件地址中用来分隔接收者名字和主机名的@修改成一个点,其它字段则保持不变)。很多系统甚至不包含NS记录,若要用它,就包含计算机的主机名。修改这三个字段我们就可以在任何主机中使用这个文件。

  到目前为止我们讨论的文件named.boot、named.ca和named.local都是配置唯高速缓存服务器和辅助服务器时所需要的文件。大多数服务器将只需要这些文件,而且使用的这些文件在,每一个服务器上几乎都包含相同的信息。

  其它的named配置文件比较复杂,但是使用这些文件的服务器数量比较少,只有主服务器需要所有的配置文件,而每个域只有一个主服务器。

  反向域文件named.rev

  named.rev与named.host文件非常类似,都包含有PTR记录,只是named.rev将地址映射为主机名。下面是named.rev的一个例子。

  ;

  ; /var/named/named.rev Reverse mapping of our IP addresses

  ; Origin is 72.191.in-addr.arpa.

  ;

  @ IN SOA vlager.vbrew.com. (

  joe.vbrew.com.

  16 ; serial

  86400 ; refresh: once per day

  3600 ; retry: one hour

  3600000 ; expire: 42 days

  604800 ; minimum: 1 week

  )

  IN NS vlager.vbrew.com.

  ; brewery

  1.1 IN PTR vlager.vbrew.com.

  2.1 IN PTR vstout.vbrew.com.

  3.1 IN PTR vale.vbrew.com.

  ; winery

  1.2 IN PTR vlager-if1.vbrew.com.

  2.2 IN PTR vbardolino.vbrew.com.

  3.2 IN PTR vchianti.vbrew.com.

  4.2 IN PTR vbeaujolais.vbrew.com.

  在这个例子中,包含了在named.hosts文件中见到的相同的SOA记录。它只是为域建立控制信息。该SOA记录的名字字段中的@是指向当前域,本例是由named.boot示例文件中的primary定义的:

  primary 72.191.in-addr.arpa named.rev

  该SOA记录中的@允许primary语句去定义区文件域,vlager中每个区文件都使用相同一个SOA记录;它总是引用正确的域名,因为所引用的都是named.boot为特定区文件定义的域。几乎在每个区文件的开头,我们都可以看到相同的SOA格式。请修改主机名vlager.vbrew.com和管理员电子邮件地址joe.vbrew.com,并在我们任何一个区文件中使用该SOA记录。

  在SOA记录后面的NS记录可以该域的服务器,一般在其它任何记录有机会去修改域名之前,将立即在SOA之后列出各域名服务器。请注意,一个空的名字字段意味着上一个域名仍然起作用,SOA的域应用仍然有效,因为后面的NS记录中的名字段是空的。

  PTR记录在named.rev文件中占有重要地位,因为它们可以将地址转换为主机名。在我们的例子中,PTR记录为网络191.72中的主机1.1、1.2、1.3、2.1、2.2、2.3和2.4提供地址到名字的转换,由于它们不是以点结束,所以这些PTR记录中名字字段的值都与当前域有关。例如,值3.1可以看作是3.1.72.191.in-addr.arpa。PTR记录的数据数据字段中的主机名是全部限定的,以防止它和当前域名相关。利用PTR中的信息,named就将3.1.72.191.in-addr.arpa转换成vale.vbrew.com。

  named.hosts文件

在named.boot文件中,把named.hosts文件作为包含本地域信息的文件列出。可以在named.boot中的primary行上为这个文件起用户想要的名字。named.hosts文件包含大部分的域信息,它可以将主机名转换成IP地址,因而A记录占有重要的地位,而且它还包含MX、CNAME和其它的记录。该named.hosts文件和named.rev文件一样,只有主服务器才有,其它所有的服务器可从主服务器取得信息。下面给出了一个使用多资源记录类型的named.hosts文件的例子:

  ;

  ; /var/named/named.hosts Local hosts at the brewery

  ; Origin is vbrew.com

  ;

  @ IN SOA vlager.vbrew.com. (

  janet.vbrew.com.

  16 ; serial

  86400 ; refresh: once per day

  3600 ; retry: one hour

  3600000 ; expire: 42 days

  604800 ; minimum: 1 week

  )

  IN NS vlager.vbrew.com.

  ;

  ; local mail is distributed on vlager

  IN MX 10 vlager

  ;

  ; loopback address

  localhost. IN A 127.0.0.1

  ; brewery Ethernet

  vlager IN A 191.72.1.1

  vlager-if1 IN CNAME vlager

  ; vlager is also news server

  news IN CNAME vlager

  vstout IN A 191.72.1.2

  vale IN A 191.72.1.3

  ; winery Ethernet

  vlager-if2 IN A 191.72.2.1

  vbardolino IN A 191.72.2.2

  vchianti IN A 191.72.2.3

  vbeaujolais IN A 191.72.2.4

  和named.rev文件一样,该文件以一个SOA记录和定义域及服务器的NS记录开头。但named.hosts文件包括的资源记录品种多于named.rev。我们根据这些记录在示例文件中的顺序来讨论每一种记录。

  该文件的第一个记录是域的SOA(授予控制权)记录。该记录的第一行以@字符开始,@字符表示这是当前原点或域。原点由 named.boot文件中相应的primary行上列出的域定义给出。此后是代码IN和SOA,它告诉named这个资源记录使用Internet(TCP/IP)编址并且是授予控制权记录。

  这行接下来的两项是这个域的主域名服务器的规范名字,和用点代替@的电子邮件联系人的地址。然后列出SOA记录要求的各种数据段,一行一个。

  在SOA记录后,下一行是域名服务器资源记录。它列出vlager.vbrew.com作为这个域的域名服务器。因为在域字段中没有列出任何域,所以假设是最后一个指定的域,也就是在SOA记录中列出的@。而且@字符确实是本地域。这是比较容易理解的。

  MX记录为整个域定义一个邮件服务器,该记录假定vlager是vbrew.com域的邮件服务器,其优先值是10。送给user@vbrew.com的邮件被重定向到vlager,以便进行传送。当然,为了使vlager能够成功地传送邮件,就必须将它配置成邮件服务器。MX记录只是整个事件中的一部分,我们将在第十一章中研究如何使用sendmail配置邮件服务器。

  该例中第一个A记录定义本地主机地址,这恰好和named.rev文件中的PTR记录相反,它允许vbrew.com域中的用户输入本地主机名(localhost)并由本地服务器将它转换为地址127.0.0.1。

  接下来是定义子网brewery中的主机。第一个A记录为网关vlager定义了IP地址,然后使用CNAME定义了vlager 的别名vlager-if1,接下来又说明vlager还是新闻服务器(news)。之后为这个域的另外两台主机:vstout和vale建立地址记录。

  然后四个A记录定义了子网winery中的四台主机的IP地址:vlager-if2、vbardolino、vchianti和vbeaujilias。

  错误查找

  在配置好named.boot文件和所需的区文件之后,我们就可以启动named了。Named通常是在系统引导时启动的,但是也可以使用下面命令启动:

  # /etc/rc.d/init.d/named/restart

  或:

  # ndc restart

  在第一次运行这些命令时,请留意出错信息。DNS是一个很复杂的系统。用户可能会做错很多事,并且会使系统不能正常运行。伴随DNS建立出现的许多问题都会引起相同的结果,但起因却不同。但大多数问题是由于配置文件中的语法错误而导致的。

  确保用户的DNS配置文件中正确地指定了主机名。如果它是一个绝对主机名,要确保它以一个原点结尾。对在SOA和CNAME记录中使用的名字要尤其小心。如果在这里弄错了,这些资源记录会把主机名查询重定向到不存在的计算机。 要确保在改变配置文件后增加配置文件中的版本号。如果忘了,那么DNS将不能再读取这些文件。确保为A记录输入了正确的IP地址,并检查这个地址是否与您的/etc/hosts文件匹配。另外,确保DNS名字和IP地址与named.rev中的相应的逆向解析信息匹配。

  查找错误的最好工具是nslookup命令。使用该命令彻底检查用户的DNS服务器。对用户的DNS数据库中的每个地址都进行定期逆向解析,以确保所有的地址和名字都正确。

  nslookup命令的使用

  nslookup是检查我们的域名服务器配置的最好工具,它是由BIND软件包提供的。它允许任何人直接查询域名服务器,对于确定服务器是否正确地运行和是否配置得和合适是很有帮助的。

  nslookup命令可以交互式的从命令行进行查询,在命令行中它可以用来查询IP地址,例如:

  $ nslookup hostname

  这条命令要求定义在resolv.conf中的域名服务器查询给定主机名的IP地址(如果有不止一个服务器,nslookup将按列在/etc/resolv.conf文件中的顺序选取一个作为查询对象)。当不带任何参数时,nslookup将显示所使用的域名服务器的信息。在“>”提示符下,我们可以输入所要请求的查询的域名;在提示符下输入exit命令将会终止一次查询会话。默认情况下,nslookup查询A记录。例如:

  $ nslookup

  Default Name Server: rs10.hrz.th-darmstadt.de

  Address: 130.83.56.60

  > sunsite.unc.edu

  Name Server: rs10.hrz.th-darmstadt.de

  Address: 130.83.56.60

  Non-authoritative answer:

  Name: sunsite.unc.edu

  Address: 152.2.22.81

  >exit

  但我们可以使用set type命令修改去查询另一种资源记录类型,下面的例子将会可检查SOA记录。请注意,如果将查询类型设置成SOA。它将保持SOA不变,不会返回默认的A型查询。如果我们需要查询A记录,则还需要使用一次set type命令。

  $ nslookup

  Default Name Server: rs10.hrz.th-darmstadt.de

  Address: 130.83.56.60

  > unc.edu

  *** No address (A) records available for unc.edu

  Name Server: rs10.hrz.th-darmstadt.de

  Address: 130.83.56.60

  > set type=SOA

  > unc.edu

  Name Server: rs10.hrz.th-darmstadt.de

  Address: 130.83.56.60

  Non-authoritative answer:

  unc.edu

  origin = ns.unc.edu

  mail addr = shava.ns.unc.edu

  serial = 930408

  refresh = 28800 (8 hours)

  retry = 3600 (1 hour)

  expire = 1209600 (14 days)

  minimum ttl = 86400 (1 day)

  Authoritative answers can be found from:

  UNC.EDU nameserver = SAMBA.ACS.UNC.EDU

  SAMBA.ACS.UNC.EDU internet address = 128.109.157.30

  >exit

  同样,可以使用set type查询MX记录,或修改成专用查询类型ANY,ANY可以用来取得指定主机的所有可用资源记录。

  > set type=MX

  > unc.edu

  Non-authoritative answer:

  unc.edu preference = 10, mail exchanger = lambada.oit.unc.edu

  lambada.oit.unc.edu internet address = 152.2.22.80

  Authoritative answers can be found from:

  UNC.EDU nameserver = SAMBA.ACS.UNC.EDU

  SAMBA.ACS.UNC.EDU internet address = 128.109.157.30

  >exit

  nslookup命令的另一个应用为named.ca文件是获取当前根服务器的列表。我们可以使用set type=NS来查询所有的根域名服务器:

  $ nslookup

  Default Name Server: rs10.hrz.th-darmstadt.de

  Address: 130.83.56.60

  > set typ=NS

  > .

  Name Server: fb0430.mathematik.th-darmstadt.de

  Address: 130.83.2.30

  Non-authoritative answer:

  (root) nameserver = NS.INTERNIC.NET

  (root) nameserver = AOS.ARL.ARMY.MIL

  (root) nameserver = C.NYSER.NET

  (root) nameserver = TERP.UMD.EDU

  (root) nameserver = NS.NASA.GOV

  (root) nameserver = NIC.NORDU.NET

  (root) nameserver = NS.NIC.DDN.MIL

  Authoritative answers can be found from:

  (root) nameserver = NS.INTERNIC.NET

  (root) nameserver = AOS.ARL.ARMY.MIL

  (root) nameserver = C.NYSER.NET

  (root) nameserver = TERP.UMD.EDU

  (root) nameserver = NS.NASA.GOV

  (root) nameserver = NIC.NORDU.NET

  (root) nameserver = NS.NIC.DDN.MIL

  NS.INTERNIC.NET internet address = 198.41.0.4

  AOS.ARL.ARMY.MIL internet address = 128.63.4.82

  AOS.ARL.ARMY.MIL internet address = 192.5.25.82

  AOS.ARL.ARMY.MIL internet address = 26.3.0.29

  C.NYSER.NET internet address = 192.33.4.12

  TERP.UMD.EDU internet address = 128.8.10.90

  NS.NASA.GOV internet address = 128.102.16.10

  NS.NASA.GOV internet address = 192.52.195.10

  NS.NASA.GOV internet address = 45.13.10.121

  NIC.NORDU.NET internet address = 192.36.148.17

  NS.NIC.DDN.MIL internet address = 192.112.36.4

  >exit

  利用nslookup的help命令或?,我们可以得到nslookup的完整命令列表。例如??

  >help

  Commands: (identifiers are shown in uppercase, [ ] means optional)

  NAME - print info about the host/domain NAME using default server

  NAME1 NAME2 - as above, but use NAME2 as server

  help or ? - print info on common commands; see nslookup(1) for details

  set OPTION - set an option

  all - print options, current server and host

  [no]debug - print debugging information

  [no]d2 - print exhaustive debugging information

  [no]defname - append domain name to each query

  [no]recurse - ask for recursive answer to query

  [no]vc - always use a virtual circuit

  domain=NAME - set default domain name to NAME

  srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2,etc.

  root=NAME - set root server to NAME

  retry=X - set number of retries to X

  timeout=X - set initial time-out interval to X seconds

  querytype=X - set query type, e.g., A, ANY, CNAME, HINFO, MX, PX, NS, PTR, SOA, TXT, WKS, SRV, NAPTR

  port=X - set port number to send query on

  type=X - synonym for querytype

  class=X - set query class to one of IN(Internet), CHAOS, HESIOD or ANY

  [no]recurse - ask for recursive answer to query

  [no]vc - always use a virtual circuit

  domain=NAME - set default domain name to NAME

  srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2,etc.

  root=NAME - set root server to NAME

  retry=X - set number of retries to X

  timeout=X - set initial time-out interval to X seconds

  querytype=X - set query type, e.g., A, ANY, CNAME, HINFO, MX, PX, NS, PTR, SOA, TXT, WKS, SRV, NAPTR

  port=X - set port number to send query on

  type=X - synonym for querytype

  class=X - set query class to one of IN(Internet), CHAOS, HESIOD or ANY

  server NAME - set default server to NAME, using current default server

  lserver NAME - set default server to NAME, using initial server

  finger [USER] - finger the optional USER at the current default host

  root - set current default server to the root

  ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)

  -a - list canonical names and aliases

  -h - list HINFO (CPU type and operating system)

  -s - list well-known services

  -d - list all records

  -t TYPE - list records of the given type(e.g.,A,CNAME,MX,etc.)

  view FILE - sort an 'ls' output file and view it with more

  exit - exit the program, ^D also exits

  当我们使用nslookup这一工具时,我们将会发现很多有帮助的功能。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-23 20:20:01 | 显示全部楼层
DHCP
一.DHCP服务器工作的前提条件:
为了使DHCP服务器为windows机器服务,你可能需要创建一个到地址255.255.255.255
的路由,加这条路由命令到/etc/rc.d/rc.local使得每次启动后自动运行。
#route add -host 255.255.255.255 dev eth0
如果报告错误消息:
255.255.255.255: Unkown host
试着加下面的入口到/etc/hosts文件
255.255.255.255 dhcp, then try:
#route add -host dhcp dev eth0


二.DHCPd后台程序总是读取配置文件/etc/dhcpd.conf, 下面给出一个DHCP配置文件的例子:
#Sample /etc/dhcpd.conf
default-lease-time 1200;
max-lease-time 9200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1,192.168.1.2;
option domain-name "mydomain.org";

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}
这将允许DHCP服务器分配两段地址范围给客户 192.168.1.10-100或者192.168.1.150-200
如果客户不继续请求DHCP地址则1200秒后释放IP地址,否则最大允许租用的时间为9200秒。
服务器发送下面的参数给DHCP客户机:
用255.255.255.0作为子网掩码,用192.168.1.255作为广播地址,用192.168.1.254作为
默认网关,用192.168.1.1 and 192.168.1.2作为DNS服务器
如果你要为windows客户指定一个WINS服务器,你需要包括下面的选项到dhcpd.conf文件中:
option netbios-name-servers 192.168.1.1;

三.你也能为某块网卡指定固定的IP地址,无论何时,这块网卡将总是从DHCP服务器获得
固定的IP地址:加下面的语句到/etc/dhcpd.conf:

host haagen {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
}

也可连写为一行:
host Jephe {hardware ethernet 00:a0:c9:a6:96:33;fixed-address 192.168.1.12;}

你也可为某台机器指定不同的网关地址,名服务器等:
host Jephe {hardware ethernet 00:a0:c9:a6:96:33;fixed-address 192.168.1.12;option
routers 192.168.11.5;}

四. 大多数情况下,DHCP的安装不创建一个dhcpd.leases 文件,在你启动DHCP服务器之前,
你必须创建空文件 dhcpd.leases

#touch /var/state/dhcp/dhcpd.leases
为启动DHCP服务器,简单地打入 /usr/sbin/dhcpd 或者用#ntsysv把DHCP服务自动启动

这将启动dhcpd在eth0设备上,如果你想在eth1设备上启动dhcpd,则
#/usr/sbin/dhcpd eth1

如果为了调试DHCP,则用#/usr/sbin/dhcpd -d -f

五.两块网卡的情况:
有时你需要在一台安装了两块网卡(作防火墙或网关)的机器上安装DHCP服务,下面的例子
指出一台防火墙机器上的一种DHCP设置,因为对外的网卡(internet)不需要提供DHCP服务:
因此这样设置如下:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.4;
default-lease-time 86400;
max-lease-time 259200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.254;
}
subnet 202.102.34.102 netmask 255.255.255.255 {
}
六. FAQ
a. 为MAC机器固定IP地址?
当设置MAC机用DHCP功能获得IP地址后,如不知得到何地址,可在MAC机上发送一邮件出去,
收信者可通过mail header检查发送者IP地址,而后ping 该IP地址再利用arp命令检查arp
缓存中的该IP地址的对应物理地址。
b. 若LAN上有windows机器装上了某DHCP功能的软件,如sygate, wingate之类,则可能
其他windows客户会优先去寻找windows DHCP服务器,而不是Linux DHCP服务器
Linux学习网收集整理 ,转贴请标明原始链接。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-23 20:21:28 | 显示全部楼层
FTP
一. ftp服务器
1. inetd配置文件或xinetd.conf配置文件
/etc/inetd.conf文件内容如下:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

/etc/xinetd.conf文件内容如下:
service ftp
{
socket_type = stream
protocol = tcp
wait = no
user = root
#only_from = 202.118.66.0
#only_from += 192.168.1.2
#only_from += localhost
server = /usr/sbin/in.ftpd
server_args = -l -a
}


相关文件:/etc/services
ftp-data 20/tcp
ftp 21/tcp

2. ftp用户(Anonymous FTP服务器需要用到)
文件:/etc/passwd和/etc/shadow

/etc/passwd:
ftp:x:500:50:Anonymous FTP User:/home/ftp:/bin/false

/etc/shadow:
ftp:*:10689:0:99999:7:::

$finger ftp
Login: ftp Name: FTP User
Directory: /home/ftp Shell: /bin/false
Never logged in.
No mail.
No Plan.

3. DNS配置
ftp IN CNAME officail.domain.name.

4. 管理员邮件别名
文件: /etc/mail/aliases (Solairs)
/etc/aliases (Linux)
(egrep aliases /etc/mail/sendmail.cf )

ftp-admin: real-user-name@domain.name

相关命令: newaliases, 建立邮件别名


二. 文件系统结构
1. Anonymous FTP 目录结构
如下子目录:
bin(ls,gzip,tar等anonymous ftp用户所要使用的二进制可执行文件)
etc(passwd,group)
lib(动态连接库,ld-2.0.7.so, ld-linux.so.2, ldd ../bin/ls 等)
pub(可下载文件)

2. passwd及group文件
不要使用系统的passwd及group文件,最好只放所需的用户及组信息
passwd文件:
ftpadm:x:0:0:Anonymous FTP:/home/ftp:/bin/false
ftp:x:60000:60000:Anonymous FTP:/home/ftp:/bin/false
group文件:
ftpadmin:x:0:
ftp:x:60000:

3. 文件及目录属性
主目录/home/ftp 属主root, 属性555
bin 属主root 组wheel或other, 属性111
etc 同上
lib 属主root, 属性555
pub 属主为root或ftp管理员,属性555

确认不要用ftp作任何文件或目录的属主!

[hbwork@helius /etc]$ cd /home/ftp/
[hbwork@helius ftp]$ ls -l
total 4
d--x--x--x 2 root root 1024 Apr 8 17:57 bin
d--x--x--x 2 root root 1024 Jun 4 15:12 etc
drwxr-xr-x 2 root root 1024 Apr 8 17:57 lib
dr-xr-sr-x 2 root ftp 1024 Apr 8 11:18 pub

$ls -l bin
[root@helius ftp]# ls -l bin/
total 250
---x--x--x 1 root root 15236 Apr 28 1998 compress
---x--x--x 1 root root 46356 Sep 11 1998 cpio
---x--x--x 1 root root 45436 Sep 11 1998 gzip
---x--x--x 1 root root 29980 Sep 11 1998 ls
---x--x--x 1 root root 110668 Sep 11 1998 tar
lrwxrwxrwx 1 root root 4 May 19 16:48 zcat -> gzip

$ls -l etc
total 19
-r--r--r-- 1 root root 57 Jun 4 15:12 group
-r--r--r-- 1 root root 16372 Sep 11 1998 ld.so.cache
-r--r--r-- 1 root root 83 Jun 4 15:12 passwd

(在Solaris上建立anonymouse FTP特殊一些,请参考Wu-ftpd-faq)


4. 可选目录
incoming Owner: root Mode:1733 (chmod 1733 incoming)

三. 测试及调试
egrep ftp /etc/inetd.conf
ps ax |egrep inetd
kill -HUP $PID

$ftp localhost (or ftp 0)
执行ls cd get 等指令看一下结果如何


四. wu-ftpd FTP服务器进程

增强功能:
. 允许根据用户的ip地址或主机,用户名设置不同的类
. 根据设置的类,管理员可以控制其访问权限,如防止anonymous用户
删除文件或覆盖已有的文件
. 可以实现自动执行uncompress,compress,tar,gzip等功能
. 可以记载所有的upload/download,及ftp client所发送的每个命令.
. 允许平滑关掉ftp服务器

相关配置文件:
ftpaccess
ftpconversions
ftphosts
ftpuser

相关命令:
strings /usr/sbin/in.ftpd |egrep ftpaccess

1. 编译 wu-ftpd

最新版本: wu-ftpd-2.5.0
ftp://ftp.dlut.edu.cn/pub/unix/ftp/servers/

$tar -zxvf wu-ftpd-2.5.0.tar.gz
$cd wu-ftpd-2.5.0
建议在编译安装之前参考文件INSTALL,README,upload.configuration.HOWTO
如想定制自己的wu-ftpd,可编辑文件src/pathnames.h
$build help
查看编译帮助

$./build lnx
$su
#./build install

2. 命令行选项
-d Sends debugging information to syslog
-a Enable the use of the ftpaccess file(This is the default)
-A Disable the use of the ftpaccess file
-L Cause ftpd to log all USER commands.
-i Causes ftpd to log all incoming(upload) file in the xferlog
file( See pathnames.h )
-o Causes ftpd to log all outgoing(download) files in the xferlog file

3. 文件ftpconversions
doc/examples/, 用于指定get时的实时压缩或展开(on-the-fly).

此文件不般情况下不用作修改

4. ftpaccess
(1)定义类
三种用户类型: real anonymous
guest(需要提供相应的口令)
格式:
class classname type[,type,...] address [ address ...]

示例:
class local real *.dlut.edu.cn 202.118.66 localhost
class anonymous anonymous *


(2)拒绝访问
deny *.net.cn /etc/ftpmsgs/msg.denied

(3)限制访问
limit class number times messages

limit anonymous 200 SaSu
limit anonymous 100 Any /etc/ftpmsgs/msg.toomany


loginfails 2
tar no anonymous
compress no anonymous

chmod yes|no type [type ...]
delete yes|no type [type ...]
overwrite yes|no type [type ...]
rename yes|no type [type ...]
umask yes|no type [type ...]

passwd-check none|trivial|rfc822 enforce|warn

(5)banner
显示在用户login之前的信息
banner /etc/ftpmsg/banner.msg

其中banner.msg文件中可以引用如下变量:
%C Current working directory
%E Email address of the administrator( email ftpadm@dlut.edu.cn)
%F 可当目录下可用空间
%L hostname
%M 最大允许连接数
%N 同一类中当前连接数
%R The client host'name or ip address
%T Current local time
%U The name the user specified at login

示例文件:
Welcome to this test FTP Archive, running on %L.

Please contact %E with any technical problems you may have
accessing this archive.

You are currently user %N out of a maximum %M users. It's
%T in PRC.

(6)message命令
message pathname login
message pathname cwd=dir
message .conents cwd=*
每改变目录均显示,cwd=dir只在第一次更改时显示

(7)readme命令
readme pathname [login|cwd=dir] [class] [class]

readme README* cwd=*

(8)shutdown命令 (2.5.0上不正常)
shutdown pathname

(9)log命令

log commands type [ type ...]

log transfer type [type ...] direction[,direction]

(10)alias
alias source: /pub/local/sw/source

(11)cdpath
cdpath /pub /pub1

上载控制
upload hierarchy directory yes|no owner group mode [dirs|nodirs]

下面的wu-ftpd-2.5.0 /etc/ftpaccess文件中的upload配置(大家可以试一下大工FTP
服务器的upload,但别传没用的过大的文件)

# FTP-home-dir archiv-dir allow? owner group mode dirs?
# (as in /etc/passwd)

upload /home/ftp * no
upload /home/ftp /pub3/incoming/windows yes ftpadmin ftp 0664 dirs
upload /home/ftp /pub3/incoming/windows/* yes ftpadmin ftp 0664 dirs
upload /home/ftp /pub3/incoming/unix yes ftpadmin ftp 0666 dirs
upload /home/ftp /pub3/incoming/unix/* yes ftpadmin ftp 0666 dirs
upload /home/ftp /pub3/incoming/other yes ftpadmin ftp 0666 dirs
upload /home/ftp /pub3/incoming/other/* yes ftpadmin ftp 0666 dirs
upload /home/ftp /pub3/incoming/WDI yes ftpadmin ftp 0666 dirs
upload /home/ftp /pub3/incoming/WDI/* yes ftpadmin ftp 0666 dirs


5. ftphosts文件
allow ftp *.dlut.edu.cn
allow anonymous *.dlut.edu.cn
deny ftp *.dlmu.edu.cn
deny ftp *.dlmu.edu.cn 202.118.80.*


6.实用程序

ftpcount
ftpwho
ftushut

维护:
建立连接时最好使用相对路径。
根据软件类别建立不同的子目录。
最好在每个目录中建立相应的说明文件或index文件,方便用户查找。
Linux学习网收集整理 ,转贴请标明原始链接。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表