本章主要讲解Internet应用服务器的配置方法,包括DNS服务器、FTP服务器、E-mail服务器。通过对本章的学习,主要掌握以下内容:
主要内容: DNS服务器的安装、配置以及DNS客户端的设置方法 FTP服务器的安装、设置方法。 E-mail邮件的工作原理,Sendmail服务器的配置与客户端软件的使用方法。
9.1 DNS(域名服务器) 9.1.1 概述 网络通信中,数据链路等使用的地址是MAC地址。网络层使用的是IP地址,传输层使用的地址是端口号,它们各有各的识别方式。而和用户关系最密切的就是IP地址,每个入网的(不论是Internet或Intranet)计算机都必须有自己的IP地址,这样才可保证信息的正确传递。但IP地址是数字构成的,非常难于记忆和表达他的实际用途,所以人们用形象的域名代替IP,方便交流和记忆,但需要注意的是,网络通信中数据包的传输是靠IP地址进行的。
目前为止,实现这种域名解析的方法主要有三种: 1) hosts文件,但要求所有互相解析的机器必须都配置。 2) NIS (SUN的技术)集中管理域名,只适合局域网。 3) DNS 实现域名的层次化,分布式管理,目前大部分都是这种方式。 DNS服务的配置比较难,而且可能需要ISP(Internet Server Provider,Internet服务提供商)的支持,DNS也是各种网络应用服务的基础,例如网站,邮件……都需要域名的支持,而且有了DNS,IP的移植就方便多了。
9.1.2 DNS域名结构 DNS数据库的结构如同一棵倒过来的树,它的根位于最顶部
9.1.3 DNS域名解析的工作原理 (1)DNS客户机提出域名解析请求,并将该请求发送给本地的域名服务器。 (2)当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该记录项,则本地的域名服务器就直接把查询的结果返回。 (3)如果本地的缓存中没有该记录,则本地域名服务器就将请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。 (4)本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该记录,则返回相关的下级的域名服务器的地址。 (5)重复第四步,直到找到正确的记录。 (6)本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
DNS就是Domain Name System,它能够把形如http://www. 21php. com/这样的域名转换为211. 152 DNS就是Domain Name System,它能够把形如http://www.21php.com/这样的域名转换为211.152.50.35这样的IP地址;没有DNS,浏览21php.com这个网站时,就必须用211.152.50.35这么难记的数字来访问。提供DNS服务的就是DNS服务器。DNS服务器可以分为三种,高速缓存服务器(Cache-only server)、主服务器(Primary Name server)、辅助服务器(Second Name Server)。
9.1.4 Linux下配置DNS服务器的条件 目前的各种Linux中都提供了实现DNS服务的软件,而且默认大部分都是直接安装的(这与Linux主要面向服务领域的宗旨是分不开的)。Linux中的DNS服务器软件叫bind,目前是版本9。它的管理程序叫named(这里的d表示守护进程,也即Windows中的服务)
检查是否安装DNS服务软件 #rpm -ql bind 如果没有安装,可以添加: #rpm -ivh *bind*.rpm(RH9的第一张) #rpm -ivh *nameservere*.rpm(RH9的第二张)
9.1.5 DNS服务器组成和配置方式 DNS服务系统采用C/S(Client/Server)结构,普通用户的机器是C,提供DNS解析服务的是S,客户端的配置相当简单,只需要在/etc/resolv.conf中添加DNS服务器的IP就可以了(最多三个),格式如下: nameserver 172.16.0.3 nameserver 10.8.10.244 (表示由这些机器完成域名到IP的翻译)
DNS服务器端的配置主要包括主配置文件和区域文件。 主配置文件:/etc/named DNS服务器端的配置主要包括主配置文件和区域文件。 主配置文件:/etc/named.conf 完成区域的声明和全局配置(如子域声明,访问控制等等) 区域文件(默认在/var/named下)文件名与主配置文件中声明的一样,主要完成DNS资源记录(包括SOA,MX,A,NS,CNAME等等,在后面的配置文件中讲解) 。
9.1.6 配置主DNS服务器 首先我们做以下假设:A服务器为21php.com的主域名服务器,其IP地址为11.0.0.1,B服务器为21php.com的辅助域名服务器,其IP地址为11.0.0.2。 下面我们配置服务器11.0.0.1为21php.com的主DNS服务器。
Linux下的dns功能是通过bind软件实现的。bind软件安装后,会产生几个固有文件,分为两类,一类是“配置文件”,在/etc目录下;一类是“dns记录文件”,在/var/named目录下。再加上其他的相关文件,共同来设置dns服务器。下面是所有和dns设置相关文件的列表与说明。 位于/etc目录下的有:hosts,host.conf,resolv.conf,named.boot,named.conf。
1、“hosts”文件 定义了主机名和ip地址的对应,其中也有将要运行dns的电脑的ip地址和主机名。当DNS服务器不可用或者不想运行本地DNS服务器时,可以利用该文件解析主机名。 文件内容:127.0.0.1 localhost.localdomain localhost 表示含义:IP地址 完整主机名 简写主机名
2、 “host.conf”文件 当hosts文件和DNS服务器都可以使用时,需要指定解析器查询的顺序。 “order hosts,bind”语句指定了对主机名的解析顺序是先到hosts中查找,然后到dns服务器的记录里查找。 “multi on”则是允许一个主机名对应多个ip地址。 “nospoof ” 指是否允许对该服务器进行IP地址欺骗,值为on表示不允许。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算机,来取得其它计算机的信任。 文件内容: order hosts, bind multi on nospoof on
3、“resolv.conf”文件 “domain zrs.com”指定默认的域。 “nameserver 10.0.0.211”指定了dns服务器的地址。 注意,这个文件对普通非dns服务器的电脑(windows系统除外,Windows系统是在“网络属性”中设置这项的)来说,是必不可少的。你如果没有设置本机为dns服务器,你又需要解析域名,就必须指定一个dns服务器的地址。你可以最多写上三个地址,作为解析失败时的候选dns服务器。文件内容: domain 21php.com nameserver 11.0.0.1 nameserver 11.0.0.2
4、“named. boot”文件 “named. boot”文件是早期版本的bind软件使用的配置文件,现在新版本中使用“named 4、“named.boot”文件 “named.boot”文件是早期版本的bind软件使用的配置文件,现在新版本中使用“named.conf”。named.conf是dns server配置的核心文件。
# named.conf - configuration for bind #为注释符号 //也是注释符号,/* */为多行注释 #配置文件中包含很多种类的声明,如options表示选项,zone表示区域等等。 options { directory "/var/named/ "; #指定名字服务器的工作目录路径,从 /var/named 目录下读取DNS数据文件,这个目录用户可自行指定并创建,指定后所有的DNS数据文件都存放在此目录下; }; zone “.”{ #域名是“.” 且类型是“hint”表示此区域定义了根命名服务器。 type hint; file “named.ca”; #指定named从 named.ca 文件中获得Internet的顶层“根”服务器地址 。 }; zone “0.0.127.in-addr.arpa” { type master; file “0.0.127.in-addr.arpa.zone”; };#指定127.0.0网段地址转换主服务器,file指定的文件中包含了127.0.0.*形式的地址到域名的转换数据(127.0.0网段地址是局域网接口的内部闭环测试地址);
zone "localhost" { type master; file "localhost zone "localhost" { type master; file "localhost.zone"; }; #指定包含localhost的DNS文件数据存放在/var/named/localhost.zone中; zone "21php.com" { type master; notify yes; file "21php.com.zone"; }; #以上语句表明域21php.com的DNS数据存放在/var/named/目录下的21php.com.zone中。
可以用文本编辑器打开DNS资源记录,记录的通用语法是: {name} {TTL} addr-class record-type record-specific-data 表示:域记录名称、记录存活期、地址类型、记录类型、数据。 其中{name} {TTL} 为可选栏,不同域记录语法也略有不同。例如,打开/var/named/21php.com.zone,其内容举例如下: $TTL 86400 ;指定记录存活期,单位是秒,86400为24小时。 @ IN SOA ns.ad-engine.com kabir.ad-engine.com ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttl ) 上面是SOA授权记录,指定用于DNS区域的授权机构,此记录中@表示名字栏,总被设置为@;IN表示地址类型,IN指明属于Internet类别;SOA表示此记录类型为“授权记录”;后面为该记录的数据。 在DNS资源记录文件中,“;”符号表示注释。
SOA记录的语法为: @ IN SOA nameserver contract-email-address( nameserver ;当前名字服务器的主机名。 contract-email-address ;系统管理员的电子邮件地址。 Serial_number ;该区域文件的版本号 Refresh_number ;隔多长时间与主名字服务器进行比较,以确定是否更新数据,单位为秒。 Retry_number ;由于外部原因出错,从服务器重新传输失败的数据时等待的时间,单位为秒。 Expire_number ;该区域数据有效期的上限值,单位为秒。 Mininum_number ;默认的资源记录存活时间(TTL)下限值,单位为秒。 )
www IN A 11.0.0.1 www2 IN A 11.0.0.23 forum IN A 11.0.0.10 @ IN NS localhost 上面是名字服务器记录,用来为域指定名字服务器。NS表示记录类型为名字服务器。 语法为:IN NS name-server-hostname www IN A 11.0.0.1 www2 IN A 11.0.0.23 forum IN A 11.0.0.10 上面是地址记录,用来为特定的主机名指定IP地址。A表示记录类型为地址记录。www、www2等表示名称。 语法为:hostname IN A IP-address
例如: www IN A 11.0.0.233 将http://www.21php.com/ 解析到地址11.0.0.233; www2 IN A 11.0.0.23 将www2.21php.com 解析到地址11.0.0.23; forum IN A 11.0.0.10 将forum.21php.com 解析到地址11.0.0.10;
@ IN MX 5 mail.21php.com 上面是邮件交换记录,用来指定设置为域的SMTP邮件服务器的主机名。MX表示记录类型为邮件交换记录。 语法为:IN MX preference-value mail-server-hostname preference值(优先值)只有在有多个邮件服务器时起作用。数值越低表明优先级越高。
9.1.7 配置辅助DNS服务器 要配置服务器11.0.0.2为21php.com辅助DNS服务器,可从主服务器中转移一整套域信息。区文件是从主服务器中转移出来的,并作为本地磁盘文件存储在辅助服务器中。在辅助服务器中有域信息的完整拷贝,所以也可以响应对该域的查询。 这部分的配置内容如下:
zone "21php. com" { type slave; file "21php. com. zone"; masters { 11 可以看到,和主DNS服务器不同地方就是:“type”改为了“slave”,然后指明了主DNS服务器的地址“masters { 11.0.0.1; };”。DNS服务启动时,就会自动连接11.0.0.1,读取21php.com域的信息,然后保存到本机的21php.com.zone文件里。
9.1.8 测试DNS服务器 修改DNS的相应文件后,用“ndc restart”命令重新启动服务,在redhat 7.1以上版本中使用命令: /etc/rc.d/init.d/named restart 或者 /etc/rc.d/init.d/named reload 使改动生效。
要测试DNS,可以找一台客户机,把它的DNS地址设成新建立的DNS服务器地址,然后测试上网,收邮件,下载等。也可以使用nslookup命令:运行nslookup,输入要查询的主机名,看是否返回正确的ip地址 。
9.2 文件传输协议服务器(FTP) 9.2.1 FTP协议介绍 1. FTP协议概述 FTP(File Transfer Protocol,文件传输协议)是TCP/IP的一种具体应用,FTP工作在OSI模型的第七层,TCP模型的第四层上。 FTP是TCP/IP协议族中的一个协议,该协议定义的是一个在远程计算机系统和本地计算机系统之间传输文件的一个标准,是Internet文件传送的基础。
OSI 7层体系结构 图9.1 OSI基本参考模型
ISO/OSI 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 网络接口层 TCP/IP FTP Telnet NFS SMTP SNMP XDR TFTP HTTP RPC RTP RSVP PVP NVP TCP UDP ST-数据应用 IP ICMP GGP EGP IGP ST-SCMP ARP RARP LAN,X.25,SMDS,其他网络 双绞线,同轴线,光缆,其他线路 表9.1 TCP/IP网络体系结构
2. FTP的基本工作原理 (1)打开端口(端口号默认为21),使客户进程能连接上; (2)等待客户进程发送建立连接请求; (3)启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后立即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。 (4)回到等待状态,继续等待接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。
3. FTP用户授权 FTP地址格式如下: ftp://用户名:密码@FTP服务器IP或域名:FTP命令端口/路径/文件名 ftp://ftp.whpu.edu.cn ftp://lb:123456@ ftp.whpu.edu.cn ftp:// lb:123456@ ftp.whpu.edu.cn ftp://lb:123456@ftp.whpu.edu.cn:2003/soft/demo.doc
互连网中大多数FTP 服务器都支持“匿名”(Anonymous)登录。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。
1. Wu-ftpd 2. ProFTPD 3. Vsftpd(现在流行的FTP服务器软件) 9.2.2 Linux环境下的FTP服务器 1. Wu-ftpd 2. ProFTPD 3. Vsftpd(现在流行的FTP服务器软件)
9.2.3 FTP服务器的启动与配置 1. FTP服务器的安装与启动 在进行FTP服务器配置之前,首先要检查系统中是否安装了vsftpd域名服务器,检查的方法可使用下面的命令: # rpm –qa | grep vsftpd
可使用下面的命令来进行FTP域名服务器的启动和停止。 # service vsftpd start # service vsftpd stop # service vsftpd restart 下面的命令是用来检查vsftpd是否被启动: # pstree | grep vsftpd
2.vsftpd的默认配置文件 # 是否允许匿名ftp,如否则选择NO # anonymous_enable=YES # 是否允许本地用户登录 # local_enable=YES # 是否开放本地用户的写权限 # write_enable=YES # 设置本地用户的文件的掩码是022,默认值是077 # local_umask=022 # 是否允许匿名用户上传文件 # anon_upload_enable=YES # 是否允许匿名用户创建新的文件夹 # anon_mkdir_write_enable=YES
# 是否改变上传文件的所有者,如果是,需要输入一个系统用户名,可以把上传的文件所有者属性都改成root # 是否显示目录说明文件,默认是YES但需要手工创建.message文件 # dirmessage_enable=YES # 是否激活上传下载日志 # xferlog_enable=YES # 启用FTP数据端口的数据连接(ftp-data) # connect_from_port_20=YES # 是否改变上传文件的所有者,如果是,需要输入一个系统用户名,可以把上传的文件所有者属性都改成root # chown_uploads=YES # chown_username=root
# 传输日志的路径和名字,默认是/var/log/vsftpd.log # xferlog_file=/var/log/vsftpd.log # 是否使用标准的日志格式 # xferlog_std_format=YES # 设置默认的“断开空闲的用户会话(session)”的时间 # idle_session_timeout=600 # 设置数据传输超时时间 # data_connection_timeout=120 # 运行vsftpd需要的非特权系统用户,默认是nobody # nopriv_user=ftpsecure
# 是否使用ASCII码方式上传和下载文件 # ascii_upload_enable=YES # ascii_download_enable=YES # 定制欢迎信息 # ftpd_banner=Welcome to blah FTP service. # 是否允许禁止匿名用户使用某些邮件地址,如果是,输入禁止的邮件地址的路径和文件名。 #deny_email_enable=YES #banned_email_file=/etc/vsftpd.banned_emails # 是否将系统用户限止在自己的home目录下,如果选择了yes,那么chroot_list_file=/etc/vsftpd.chroot_list中列出的是不受限制的用户列表。也就是说,如果不希望某用户能够浏览其主目录上级目录中的内容,可以如下设置,然后在指定文件中不添加该用户 # chroot_list_enable=YES # chroot_list_file=/etc/vsftpd.chroot_list
# 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/目录下 # pam_service_name=vsftpd # 在指定的文件中所列出的用户不允许访问vsftpd服务器 # userlist_enable=YES # userlist_deny=YES # userlist_file=/etc/vsftpd.user_list # # 是否是独立的VSFTPD服务器(是否与其他服务器软件组合) # listen=YES # 是否使用tcp_wrappers作为主机的访问控制方式 # tcp_wrappers=YES
3. 修改vsftpd的默认配置 具体的步骤如下: (1)修改/etc/vsftpd/vsftpd.conf配置文件,激 活以下两项,即在原文件以下两行前的“#”去掉。 anon_upload_enable=YES //允许匿名用户上传 anon_mkdir_write_enable=YES //允许匿名用户创建新目录
(2)在原配置文件中添加下面一行,目的是开放匿名用户的浏览权限。 anon_world_readable_only=NO 如果允许匿名用户对服务器上的文件或文件夹有更名或删除操作的权限,还需在配置文件中添加下面一行: anon_other_write_enable=YES
(3)开放本地用户写的权限必须打开。 Write_enable=YES (4)修改完配置文件并存盘后,使用下面的命令重新启 动vsftpd服务。 # service vsftpd restart (5)修改匿名用户上传目录的权限,匿名用户的默认目 录是“/var/ftp/pub”。可使用下面的命令修改: # chmod +777 /var/ftp/pub
9.2.4 FTP客户端的常用命令 1. 与某个FTP服务器建立连接
2. 列出FTP服务器上的目录 在提示符“ftp>”下,执行“ls”或“dir”命令后,屏幕会显示当前目录下的文件或子目录。显示格式与Linux命令提示行所显示的某个目录文件方式完全相同。
3. 改变当前目录 在提示符“ftp>”下,执行“cd”或“pwd”命令,可以查看当前目录;执行“cd..”命令可以进入上一级目录;执行“cd 子目录名”命令,可以进入子目录,例如,输入“cd mail”,表示进入当前目录下的“mail”子目录。
4. 一般文件传送 (1)下载单个文件 get命令能从远程计算机上下载一个文件,其命令格式如下: get 源文件名 目标文件名 (2)下载多个文件 mget命令是从远程计算机取多个文件。命令格式为: mget 源文件列表
(3)上传单个文件 将本地计算机的文件传送到远程计算机上,其命令格式为: put 源文件名 目标文件名 (4)上传多个文件 mput命令可以将本地计算机的多个文件一起送到远程主机。其命令格式为: mput 文件名列表
9.3 邮件服务器(E-mail) 9.3.1 概述 电子邮件(Electronic mail)服务是Internet网络为用户提供的一种最基本的、最重要的服务之一。 电子邮件将邮件发送到收信人的邮箱(mail box)中,收信人可随时读取邮件。 电子邮件有非常高的效率。
1. E-mail的工作原理 在Internet网上,一封电子邮件的实际传递过程如下: 1)由发送方计算机(客户机)的邮件管理程序将邮件进行分拆,即把一个大的信息块分成一个个小的信息块,并把那些小的信息块封装成传输层协议(TCP层)下的一个或多个TCP邮包(分组)。 2)TCP邮包又按网际层协议(IP层)要求,拆分成IP邮包(分组),并在上面附上目的计算机的地址(IP地址)。
3)根据目的计算机的IP地址,确定与哪一台计算机进行联系,与对方建立TCP连接。 4)如果连接成功,便将IP邮包送上网络。IP邮包在Internet的传递过程中,将通过对路径的路由选择,经过许许多多路由器存储转发的复杂传递过程,最后到达接收邮件的目的计算机。 5)在接收端,电子邮件程序会把IP邮包收集起来,取出其中的信息,按照信息的原始次序复原成初始的邮件,最后传送给收信人。
(1)SMTP协议 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是Internet上基于TCP/IP应用层的协议,适用于主机之间电子邮件交换。 使用SMTP时,收信人可以是和发信人连接在同一个本地网络上的用户,也可以是Internet上其它网络的用户,或者是与Internet相连但不是TCP/IP网络上的用户。
POP3(Post Office Protocol version 3邮局协议版本3)是系统的基本协议之一。 允许用户在不同的地点访问服务器上电子邮件,并决定是把电子邮件存放在服务器邮箱上,还是存入在本地邮箱内。
(3)MIME协议 MIME(Multipurpose Internet Mail Extensions,称为“多用途Internet邮件扩展协议”)是一种编码标准,解决了SMTP协议仅能传送ASCII码文本的限制 。 MIME定义了各种类型的数据,例如,声音、图像、表格、二进制数据等编码格式。
完整的电子邮件地址由二部分组成,第一部分为计算机E-mail一种广泛使用的格式是用“@”隔开二部分,例如: lb@whpu.edu.cn
3. E-mail邮件格式 信息由ASCII文本组成,包括两个部分,中间用一个空行分隔。第一部分是一个头部(header),包括有关发送方、接收方(可以使用抄送发送到多个接受方,格式为“CC:” CC代表Carbon Copy, 抄送)、发送日期和内容格式等等文本;第二部分是正文(body),包括信息的文本,这部分是让用户自由撰写 。
9.3.2 Sendmail的安装与启动 1. 安装Sendmail 在Red Hat Linux 9的安装光盘中提供了Sendmail的RPM包,其内容包括: sendmail:sendmail服务器 sendmail-cf:与sendmail服务器配置相关的文件和程序 sendmail-doc:sendmail服务器的文档 当不能确定在Red Hat Linux 9中是否安装了sendmail服务器时,可使用下面的命令来进行测试: # rpm –qa | grep sendmail
如果在安装Red Hat Linux 9时没有安装sendmail服务器,可以把Red Hat Linux 9安装光盘的第一张放入光驱,并执行如下的命令: # rpm –ivh sendmail-8.12.8-4.i386.rpm 该命令安装sendmail服务器,另外,还需要 安装sendmail-cf和sendmail-doc,把Red Hat Linux 9的安装光盘的第三张放入光驱,并执行如下的命令: # rpm –ivh sendmail-cf-8.12.8-4.i386.rpm # rpm –ivh sendmail-doc-8.12.8-4.i386.rpm
2. 启动Sendmail
3. 配置DNS的MX记录(/var/named/21php.com.zone) $TTL 86400 @ IN SOA lbliubing.com. root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttl ) IN NS lbliubing.com. @ IN MX 1 computer computer IN A 211.85.203.22
9.3.3 Sendmail的配置 1. Sendmail配置 Sendmail配置的步骤如下: (1)单击面板上的“主菜单→系统设置→服务器设置→服务配置”。 (2)在打开的对话框中,选中“ipop3”和“sendmail”并启动。 (3)修改Sendmail的配置文件“/etc/mail/sendmail.cf”。将该文件中的行Cwlocalhost修改为 Cwcomputer.lbliubing.com lbliubing.com 然后存盘。
(4)修改Sendmail的配置文件“/etc/mail/sendmail.mc”。将该文件中有以下字符串开头的四行用注释符号“#”注释掉。 “DAE_option” (5)使用下面的命令重新生成配置文件。 # make –C /etc/mail (6)修改/etc/mail/access文件,在该文件中加入下面一行: compuer.lbliubing.com Replay
2. Sendmail邮件服务器的验证
在Linux操作系统中邮件客户端的设置方法: 在Red Hat Linux 9系统中邮件客户端可以采用以下三种方式: Evolution程序; Mozilla Mail程序; 基于文本的电子邮件客户。