




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LINUX原理及应用武汉大学计算机学院 郑鹏 第12章 Linux网络应用 Linux是以Intel x86系列CPU为硬件平台的32位多用户多任务操作系统,具备强大的网络服务功能,是商用网络服务器首选的操作系统之一,根据需要,Linux可安装成各种各样的服务器,比如数据库服务器、Web服务器、FTP服务器、DNS服务器、DHCP服务器、邮件服务、代理服务器、防火墙等。在本章,我们以Red Hat Linux系列为例,介绍如何安装与配置Web服务器、FTP服务器、DNS服务器和邮件服务器。 12.1 Linux对网络的支持 在一个网络系统中,操作系统的地位是非常重要的。Linux网络操作系统以
2、高效性和灵活性而著称,其组网能力非常强大,它的TCP/IP代码是最高级的。Linux不仅提供了对当前的TCP/IP协议的完全支持,也包括了对下一代Internet协议IPv6的支持,Linux内核还包括了IP防火墙代码、IP防伪、IP服务质量控制等许多安全特性。12.1.1 互联网TCP/IP的基本结构 传输控制协议/互连网协议TCP/IP(Transmission Control Protocol/Internet Protocol)是一个使用非常普遍的网络互连标准协议。 12.1.1 互联网TCP/IP的基本结构TCP/IP是一组协议的代名词。根据TCP/IP协议,互联网分为4层,加上最底
3、层的物理层一共是5层,每一层的设计各有其目的,负责不同的功能。1、网络接口层:负责数据帧的发送和接收,帧是独立的网络信息传输单元。网络接口层将帧放在网上,或从网上把帧取下来。网络接口层屏蔽了网络环境中网络设备的多样性,实现数据包(帧)在物理网络间的可靠传输。2、互联网层:互联协议将数据包封装成Internet数据报,并运行必要的路由算法。3、传输层:传输协议在计算机之间提供通信会话。传输协议的选择根据数据传输方式而定。 4、应用层:应用程序通过这一层访问网络。应用层包含了丰富的应用协议,如HTTP、FTP、SMTP、Telnet及SNMP等。5、物理层:对应于网络的基本硬件,这也是Intern
4、et物理构成,即我们可以看得见的硬件设备,如PC机、互连网服务器、网络设备等,必须对这些硬件设备的电气特性作一个规范,使这些设备都能够互相连接并兼容使用。12.1.2 Linux网络中的层Linux 操作系统的最大特性之一就是它的网络栈。它最初源于 BSD 的网络栈,具有一套非常干净的接口,组织得非常好。其接口范围从协议无关层(例如通用 socket 层接口或设备层)到各种网络协议的具体层。12.1.2 Linux网络中的层Linux 中基本网络栈的介绍分为四层的 Internet 模型(如图所示)。 12.1.2 Linux网络中的层链路层是指提供对物理层访问的设备驱动程序,这可以是各种介质
5、,例如串口链路或以太网设备。 网络层,它负责将报文定向到目标位置。 传输层,负责端到端的通信(例如,在一台主机内部)。 应用层,它通常是一个语义层,能够理解要传输的数据。例如,超文本传输协议(HTTP)就负责传输服务器和客户机之间对 Web 内容的请求与响应。 12.1.2 Linux网络中的层核心网络架构下图提供了 Linux 网络栈的高级视图。最上面是用户空间层,或称为应用层,其中定义了网络栈的用户。底部是物理设备,提供了对网络的连接能力(串口或诸如以太网之类的高速网络)。中间是内核空间,即网络子系统,也是本文介绍的重点。流经网络栈内部的是 socket 缓冲区(sk_buffs),它负责
6、在源和汇点之间传递报文数据。 12.1.2 Linux网络中的层Linux 高级网络栈架构 12.1.2 Linux网络中的层系统调用接口层,实质是一个面向用户空间应用程序的接口调用库,向用户空间应用程序提供使用网络服务的接口。 12.1.2 Linux网络中的层协议无关接口层,就是SOCKET层,这一层的目的是屏蔽底层的不同协议(更准确的来说主要是TCP与UDP,当然还包括RAW IP, SCTP等),以便与系统调用层之间的接口可以简单,统一。简单的说,不管我们应用层使用什么协议,都要通过系统调用接口来建立一个SOCKET,这个SOCKET其实是一个巨大的sock结构,它和下面一层的网络协议
7、层联系起来,屏蔽了不同的网络协议的不同,只吧数据部分呈献给应用层(通过系统调用接口来呈献)。 12.1.2 Linux网络中的层网络协议实现层,毫无疑问,这是整个协议栈的核心。这一层主要实现各种网络协议,最主要的当然是IP,ICMP,ARP,RARP,TCP,UDP等。这一层包含了很多设计的技巧与算法。它们都是在 linux/net/ipv4/af_inet.c 文件中一个名为 inet_init 的函数中进行初始化的。 inet_init 函数使用 proto_register 函数来注册每个内嵌协议。这个函数是在 linux/net/core/sock.c 中定义的,除了可以将这个协议添加
8、到活动协议列表中之外,如果需要,该函数还可以选择分配一到多个 slab 缓存。通过 linux/net/ipv4/目录中udp.c和raw.c文件中的proto接口,可以了解各个协议是如何标识自己的。这些协议接口每个都按照类型和协议映射到 inetsw_array,该数组将内嵌协议与操作映射到一起。inetsw_array 结构及其关系如后图所示。最初,会调用 inet_init 中的 inet_register_protosw 将这个数组中的每个协议都初始化为 inetsw。函数 inet_init 也会对各个 inet 模块进行初始化,例如 ARP、ICMP 和 IP 模块,以及 TCP
9、和 UDP 模块。12.1.2 Linux网络中的层Internet 协议数组结构图 12.1.2 Linux网络中的层注意在前图中,proto 结构定义了传输特有的方法,而 proto_ops 结构则定义了通用的 socket 方法。可以通过调用 inet_register_protosw 将其他协议加入到 inetsw 协议中。例如,SCTP 就是通过调用 linux/net/sctp/protocol.c 中的 sctp_init 加入其中的。socket 中的数据移动是使用一个socket 缓冲区(sk_buff)的核心结构实现的。sk_buff 中包含了报文数据,以及涉及协议栈中多个
10、层次的状态数据。所发送或接收的每个报文都是使用一个 sk_buff 表示。sk_buff 结构是在 linux/include/linux/skbuff.h 中定义的,如后图所示。12.1.2 Linux网络中的层Socket 缓冲区及其与其他结构的关系图 12.1.2 Linux网络中的层如前图所示,多个 sk_buff 可以针对某个给定连接链接在一起。每个 sk_buff 都在设备结构(net_device)中标识报文发送的目的地,或者接收报文的来源地。由于每个报文都是使用一个 sk_buff 表示的,因此报文头都可以通过一组指针(th、iph 和 mac用于 Media Access C
11、ontrol 或者 MAC 头)方便地进行定位。由于 sk_buff 是 socket 数据管理的中心,因此创建了很多支持函数来对它们进行管理。其中有些函数用于创建和销毁 sk_buff 结构,或对它进行克隆或排队管理。针对给定的 socket,Socket 缓冲区可以链接在一起,这样可以包含众多信息,包括到协议头的链接、时间戳(报文是何时发送或接收的),以及与这个报文相关的设备。12.1.2 Linux网络中的层与具体设备无关的驱动接口层,这一层的目的主要是为了统一不同的接口卡的驱动程序与网络协议层的接口,它将各种不同的驱动程序的功能统一抽象为几个特殊的动作,如open,close,init
12、等,这一层可以屏蔽底层不同的驱动程序。 首先,设备驱动程序可能会通过调用 register_netdevice 或 unregister_netdevice 在内核中进行注册或注销。调用者首先填写 net_device 结构,然后传递这个结构进行注册。内核调用它的 init 函数(如果定义了这种函数),然后执行一组健全性检查,并创建一个 sysfs 条目,然后将新设备添加到设备列表中(内核中的活动设备链表)。在 linux/include/linux/netdevice.h 中可以找到这个 net_device 结构。这些函数都是在 linux/net/core/dev.c 中实现的。12.1
13、.2 Linux网络中的层要从协议层向设备中发送 sk_buff,就需要使用 dev_queue_xmit 函数。这个函数可以对 sk_buff 进行排队,从而由底层设备驱动程序进行最终传输(使用 sk_buff 中引用的 net_device 或 sk_buff-dev 所定义的网络设备)。dev 结构中包含了一个名为 hard_start_xmit 的方法,其中保存有发起 sk_buff 传输所使用的驱动程序函数。报文的接收通常是使用 netif_rx 执行的。当底层设备驱动程序接收一个报文(包含在所分配的 sk_buff 中)时,就会通过调用 netif_rx 将 sk_buff 上传至
14、网络层。然后,这个函数通过 netif_rx_schedule 将 sk_buff 在上层协议队列中进行排队,供以后进行处理。可以在 linux/net/core/dev.c 中找到 dev_queue_xmit 和 netif_rx 函数。最近,内核中引入了一种新的应用程序编程接口(NAPI),该接口允许驱动程序与设备无关层(dev)进行交互。有些驱动程序使用的是 NAPI,但是大多数驱动程序仍然在使用老式的帧接收接口(比例大约是 6 比 1)。NAPI 在高负载的情况下可以产生更好的性能,避免了为每个传入的帧都产生中断。12.1.2 Linux网络中的层设备驱动程序,就是建立与硬件的接口层
15、。负责管理物理网络设备的设备驱动程序。例如以太网设备使用的以太网驱动程序都是这一层的设备。在进行初始化时,设备驱动程序会分配一个 net_device 结构,然后使用必须的程序对其进行初始化。这些程序中有一个是 dev-hard_start_xmit,它定义了上层应该如何对 sk_buff 排队进行传输。这个程序的参数为 sk_buff。这个函数的操作取决于底层硬件,但是通常 sk_buff 所描述的报文都会被移动到硬件环或队列中。就像是设备无关层中所描述的一样,对于 NAPI 兼容的网络驱动程序来说,帧的接收使用了 netif_rx 和 netif_receive_skb 接口。NAPI 驱
16、动程序会对底层硬件的能力进行一些限制。 设备驱动程序在 dev 结构中配置好自己的接口之后,调用 register_netdevice 便可以使用该配置。在 linux/drivers/net 中可以找出网络设备专用的驱动程序。12.1.3 Linux网络配置 要建立一个Linux服务器首先要了解Linux环境下和网络服务相关配置文件的含义及如何进行配置。在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,可以通过编辑这些文件来完成联网工作,这些文件一般在/etc目录下,在系统启动的过程中,将执行一个shell脚本程序/etc/rc.d/init.d/network来完成网络的
17、配置,该程序中调用了网络配置命令/sbin/ifconfig,由/sbin/ifconfig命令读取各个网络接口卡(网卡)的配置文件来配置接口。例如系统中的第一块以太网卡(设备名eth0)其配置文件是/etc/sysconfig/network-scripts/ifcfg ifcfg-eth0。这些配置文件用户可以直接编辑文件的内容。 12.1.3 Linux网络配置下面介绍几个基本的TCP/IP网络配置文件。1、/etc/sysconfig/network-scripts/ifcfg ifcfg-ethN文件在RedHat中网络设备的配置文件保存在/etc/sysconfig/network
18、-scripts目录下,ifcfg-eth0包含第一块网卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。在启动时,系统通过读取这个配置文件决定某个网卡是否启动和如何配置。下面是/etc/sysconfig/network-scripts/ifcfg-eth0文件的示例:DEVICE=eth0 表示物理设备的名字IPADDR= 表示赋给该网卡的IP地址NETMASK= 表示子网掩码BROADCAST=55 表示广播地址ONBOOT=yes 启动时是否激活该卡BOOTPROTO=none none:无须启动协议 bootp:使用bootp协议 dhcp:使用dhcp协议GATEWAY
19、表示默认网关若希望手工修改网络地址或增加新的网络连接,可以通过修改对应的文件ifcfg-ethN或创建新的文件来实现。 12.1.3 Linux网络配置2、/etc/resolv.conf文件文件/etc/resolv.conf配置DNS客户端,它包含了DNS服务器地址和域名搜索配置,每一行应包含一个关键字和一个或多个的由空格隔开的参数。下面是一个例子文件:search nameserver nameserver “search域名”表示当提供了一个不包括完全域名的主机名时,在该主机名后添加 的后缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文
20、件中出现的顺序来查询的。 12.1.3 Linux网络配置3、/etc/sysconfig/network文件该文件用来指定服务器上的网络配置信息,下面是一个示例:NETWORK=yes 网络是否被配置RORWARD_IPV4=yes 是否开启IP转发功能HOSTNAME=whucs 表示服务器的主机名GAREWAY= 表示网络网关的IP地址GATEWAYDEV=eth0 表示网关的设备名为了和一些较老版本软件相兼容,“/etc/HOSTNAME”文件应该用和HOSTNAME = hostname相同的主机名。 12.1.3 Linux网络配置4、/etc/hosts文件当机器启动时,在可以查
21、询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。下面是一个/etc/hosts文件的示例: Localhost 最左边一列是主机IP信息,中间一列是主机名。任何后面的列都是该主机的别名。 12.1.3 Linux网络配置5、/etc/HOSTNAME文件/etc/HOSTNAME文件保存了系统的主机名称,即系统的正规域名,在Red Hat中,主机名保存在/set/sysconfig/network文件的一个变量中,该变量称为HOSTNAME。在系统启
22、动过程中,初始化脚本/etc/rc.d/rc.sysinit使用hostname命令将系统的主机名设置为/set/sysconfig/network中变量HOSTNAME所定义的名称。/etc/rc.d/rc.sysinit脚本同时将主机名保存在/etc/HOSTNAME文件中。 12.1.4 网络配置命令 Linux同时提供了一组强有力的网络命令来为用户服务,这些工具能够帮助用户进行网络设定、检查网络状况、登录到远程计算机上、传输文件和执行远程命令等。其中一些命令像ping、ftp、telnet、route、netstat等在其它操作系统上也能看到,但也有一些Unix/Linux系统独有的命
23、令,如ifconfig、finger、mail等。Linux网络操作命令的一个特点是,命令参数选项和功能很多,一个命令往往还可以实现其它命令的功能。下面介绍几个基本的TCP/IP网络配置命令。 1ifconfig 命令 ifconfig用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。ifconfig是用来设置和配置网卡的命令行工具。使用该命令的好处是无须重新启动机器。如:要赋给eth0接口IP地址9 并且马上激活它,使用下面命令:#ifconfig eth0 9 netmask 28 broadcast 27 该命令的作用是设置网卡eth0的IP地址、
24、网络掩码和网络的本地广播地址。若运行不带任何参数的ifconfig命令,这个命令将显示机器所有激活接口的信息。带有“-a”参数的命令则显示所有接口的信息,包括没有激活的接口。注意,用ifconfig命令配置的网络设备参数,机器重新启动以后将会丢失。如果要暂停某个网络接口的工作,可以使用down参数:#ifconfig eth0 down 2route命令 route命令是用来查看和设置Linux系统的路由信息,以实现与其它网络的通信。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系
25、统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。使用下面命令可以增加一个默认路由:route add 而删除一个路由,可以使用下面命令:route del -host 54 gw 54 /删除路由 3netstat命令 检查整个Linux网络状态。netstat主要用于Linux察看自身的网络状况,如开启的端口、在为哪些用户服务,以及服务的状态等。此外,它还显示系统路由表、网络接口状态等。可以说,它是一个综合性的网络状态的察看工具。在默认情况下,netstat只显示已建立连接的端口。如果要显示处于监听状态的所有
26、端口,使用-a参数即可:#netstat aActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 *:32768*:*LISTENtcp 0 0 *:32769*:*LISTENtcp 0 0 *:nfs*:*LISTENtcp 0 0 *:32770*:*LISTENtcp 0 0 *:868*:*LISTENtcp 0 0 *:617*:*LISTENtcp 0 0 *:mysql*:*LISTENtcp 0 0 *:netbios-s
27、sn*:*LISTENtcp 0 0 *:sunrpc*:*LISTENtcp 0 0 *:10000*:*LISTENtcp 0 0 *:http*:*LISTEN.上面显示出,这台主机同时提供HTTP、FTP、NFS、MySQL等服务。4ping命令 ping检测主机网络接口状态,使用权限是所有用户。通常使用ping 命令检测网络是否连通,它使用ICMP协议。但是有时会有这样的情况,我们可以浏览器查看一个网页,但是却无法ping通,这是因为一些网站处于安全考虑安装了防火墙。另外,也可以在自己计算机上试一试,通过下面的方法使系统对ping没有反应:#echo 1 /proc/sys/net/
28、ipv4/icmp_echo_ignore_all 5traceroute命令 traceroute命令可以检测交换机到目的地之间数据报经过的路径。与ping命令不同,traceroute不但可以测试网络是否连通,还可以获知在数据包的传输路径中哪一个地方出现问题。traceroute命令的输出信息包括到达目的地经过的所有网关的IP地址和到该网关所用的时间,如果某网关超时则显示“*”。只有管理员权限的用户才可以使用traceroute命令。例如,测试交换机发出的数据报到达IP地址为37的设备所经过的路径:Harbour(config)# traceroute 37 12.2 Web服务器 Web
29、服务是目前Internet应用最流行、最受欢迎的服务之一,Linux平台使用最广泛的Web服务器是Apache,它是目前性能最优秀、最稳定的Web服务器之一。本节以Apache2.0为例,介绍Apache Web服务器的安装与配置方法。 12.2.1 WWW服务 WWW是基于客户机/服务器方式的信息发现技术和超文本技术的综合。WWW服务器通过HTML超文本标记语言把信息组织成为图文并茂的超文本;WWW浏览器则为用户提供基于HTTP超文本传输协议的用户界面。用户使用WWW浏览器通过Internet访问远端WWW服务器上的HTML超文本。在WWW的客户机/服务器工作环境中,WWW浏览器起控制作用,
30、其任务是使用一个URL(Internet地址)来获取一个WWW服务器上的Web文档,解释这个HTML,并将文档内容以用户环境所许可的效果最大限度地显示出来。整个流程如下:1) WWW浏览器根据用户输入的URL连到相应的远端WWW服务器上。2) 取得指定的Web文档。3) 断开与远端WWW服务器的连接。12.2.2 WWW服务器软件的比较和选择 目前,在世界各地有许多公司和学术团体,根据不同的计算机系统,开发出不同的WWW服务器,如Apache、CERN httpd、Microsoft Internet Information System、NCSA httpd、Plexus httpd、Web
31、Site等。在Unix/Linux系统中常用的有:CERNNCSAApache 12.2.2 WWW服务器软件的比较和选择1. CERN httpd这是最早期的WWW服务器软件,用C语言编写,现在功能有限,用户逐渐减少。有兴趣的话可以在: /pub/www/bin中找到它。 12.2.2 WWW服务器软件的比较和选择2. NCSA httpd这是在WWW服务器发展初期,美国国家超级计算机应用中心(NCSA)在1995年创建的WWW服务器。它也是用C语言编写的,程序小、速度快。现在NCSA WWW服务器的主要开发人员已经离开了NCSA,这个服务器项目已经停顿了。当然,由于它的特殊历史地位,相信使
32、用它的人现在还不少。如果需要,可以在获取它。 12.2.2 WWW服务器软件的比较和选择3. Apache根据著名的WWW服务器调查公司所作的调查,世界上百分之五十以上的WWW服务器都在使用Apache,是世界排名第一的Web服务器。Apache的诞生极富有戏剧性。当NCSA WWW服务器项目停顿后,那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。12.2.2 WWW服务器软件的比较和选择由于Apache具有高度的可配置性,因此满
33、足广泛的Web服务需要,其显著的特征是:可以运行于所有计算机平台,也包括Unix/Linux系统;集成代理服务器和Perl编程脚本;对用户的访问会话过程跟踪;可对服务器日志定制;还支持虚拟主机及HTTP认证等等。目前它已经占据了过半数的市场份额。 现在最新的Red Hat、Slackware和OpenLinux各版本中都包含了Apache,Fedora Linux包含Apache服务器的2.0版本,Fedora Linux使用缺省配置的Apache满足最基本的Web服务需要。 12.2.3 Apache服务器安装 Apache的安装十分简单,最好在安装RedHat Linux时,选择安装Web
34、 Server,这样即使对编译操作不熟的话,也能轻轻松松把服务器架设起来。1Apache的安装方式Apache通常都有两种安装方式:源代码安装和RPM包安装。这两种安装类型各有特色,RPM包安装不需要编译,而源代码安装则需要先配置编译再安装,RPM包安装在一个固定的位置下,选择固定的模块,而源代码安装则可以让你选择安装路径,选择你想要的模块。下面分别以实例的形式来介绍两种类型的安装方法。1Apache的安装方式第一种是使用源代码安装:(1) 获得源代码 # lynx NN表示当前所用的版本号。 (2) 解压缩# gzip -d httpd-2_0_NN.tar.gz # tar xvf htt
35、pd-2_0_NN.tar (3) 配置# ./configure -prefix= /usr/local/apache表示Apache将安装在/usr/local/apache目录下(4) 编译与安装# make # make install (5) 测试# /usr/local/apache/bin/apachectl start1Apache的安装方式第二种是使用RPM包安装# rpm ivh apache-*.rpm 完成安装后,配置文件在/etc/httpd/conf/目录下,文件根目录为/var/www/html,工具文件在/etc/rc.d/init.d/目录下,日志文件在/va
36、r/log/httpd/目录下。 2Apache 的配置 在配置Apache前,对最初的配置文件做一个备份是一个好的习惯:# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf-original(1)启动ApacheApache缺省情况下没有被激活。要启动它,使用服务工具和输入这个命令:# service httpd start要确保Apache在每次系统引导时启动,启用httpd服务。无论Apache配置何时改变,必须让Apache重新加载它的配置:# service httpd reload另外,可以使用“服务”工具中的“重启”
37、按钮。(2)测试Apache使用正在运行Apache机器上的Web浏览器,访问Web位置 。将会看到图12.5中显示的测试页。2Apache 的配置 一旦在服务器上可以看到该Web页面,可以尝试使用服务器的IP地址从远程系统访问该页(例如 ),或者,如果DNS已经被设置为允许,使用服务器的主机名访问(例如, )。 2Apache 的配置 (3)安装自己的Web内容一旦Web服务器在运行中,把希望服务的内容放到目录/var/www/html中。对于每个目录,缺省的页面是index.html;一旦已经创建了/var/www/html/index.html,测试页将不再出现。在/var/www/ht
38、ml中创建子目录来创建任何所需要的目录结构。这些目录将通过Web服务器反映在可访问的URLs中。例如,可以创建目录/var/www/html/photos/:# mkdir /var/www/html/photos那个目录将可以使用URI http:/photos/访问。 (4)改变缺省的配置要完成更高级的Web服务,缺省的配置需要被修改。Apache可以通过使用Fedora的图形化配置工具或通过编辑配置文件被配置,但不能在两种方法之间改变。 2Apache 的配置(5)直接编辑Apache的配置文件主Apache配置信息存储在/etc/httpd/conf/httpd.conf中。附加配置信
39、息存储在目录/etc/httpd/conf.d/中。每个模块的配置文件会自动伴随诸如Squirrel Mail这样的Apache模块和Web应用程序自动安装和删除。httpd.conf是一个标准的文本文件,而且可以使用任何标准的文本编辑器编辑。如前面提到的,强烈推荐在每次改变前对该文件做一个备份:# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.backup-1httpd.conf包含大量的指令,每个指令包含一个名字和一个或多个值,列在单独一行上,在名字和每个值后带一个空格。指令名不是大小写敏感的,但某些值是。如果这些值包含空
40、格,必须用引号引住。 这些指令都是等价的,要添加一个注释行,把#号放在行的开头: # Note: /etc/httpd is the standard Fedora server root.指令是全局的,除非把它们放在一个container(容器)中,这会限制指令适用的范围。 12.3 域名服务器(DNS服务器) 计算机在网络上进行通讯时只能识别如“3”之类的IP地址,而不能认识域名。但是,当打开浏览器,在地址栏中输入域名后,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。 12.3.1 DNS 定义 DN
41、S(Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它主要是用来通过用户亲切而友好 的名称代替枯燥而难记的IP地址以定位相应的计算机和相应服务。因此,要想让亲切而友好的名称能被网络所认识,则需要在名称和IP地址之间有一位“翻译官”,它能将相关的域名翻译成网络能接受的相应IP地址。 1DNS的层次结构 DNS是一个包含主机信息的分布式层次结构系统。在DNS下,没有存放全部Internet信息的中心数据库,这些信息分布在一个层次结构中的若干台域名服务器上,这种结构非常类似于UNIX文件系统中的层次结构。它们的
42、结构都组织成倒转的树,根在结构的最顶端。在UNIX文件系统中,根以“/”表示;在DNS中,根的名字以“.”表示,并被称之为根域。DNS的层次结构如图12-7所示。1DNS的层次结构图12.7 DNS的层次结构 orgneteducngovcommil域名子域顶级域eduwhucslib2DNS解析过程及原理 DNS的工作原理及过程分下面几个步骤:第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根
43、域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。第五步:重复第四步,直到找到正确的纪录。第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。 3域名服务器的种类 在域名服务中,域名服务器的配置是最为核心的内容。如果使用BIND软件对域名服务器进行配置,则可以将域名服务器分为3种类型:主域名服务器。辅助域名服务器。高速缓存服务器。 3域名服务器的种类(1)主域名服务器(Pr
44、mlary Name Server) 主域名服务器对一个或多个区的域名解析具有权威性。它从系统管理员构建的本地磁盘文件中直接加载信息,同时,主域名服务器还将定期地把数据传送给同一个区中的辅助域名服务器。主域名服务器是一种权威性的服务器,它以绝对的权威来回答域中所有的查询。当主域名服务器回答客户请求时,要为数据附带一个时间期限(由TTL指定),指定数据的有效期限。选择主服务器时,应该选择内存和磁盘空间都比较大的计算机。同时一台计算机可以作为某一个区的主服务器,同时可拟充当另外几个域的辅助域名服务器。配置主域名服务器需要一整套的文件,主域名服务器将通过引导文件/etc/named.boot或者na
45、med.conf来确认自己所服务的区以及数据保存在哪些区文件中。3域名服务器的种类(2)辅助域名服务器(Secondary Name Server)辅助域名服务器可以从主域名服务器中获取一整套的域信息。所有的信息都是从主域名服务器中得到的,并将这些数据备份在本地的磁盘文件中。辅助域名服务器将在主服务器不能正常工作的情况下,起到备份的作用,从而提高了整套系统的可靠性。它将定期地对服务器上的数据进行更新,从而保持与主域名服务器的一致性。在辅助域名服务器上由于保持了域的完整信息,因此也可以权威地回答域中客户机的查询。配置辅助域名服务器不需要建立本地的区文件,可以从主域名服务器中下载。但是高速缓存文件
46、和回送文件仍然是需要包括的。 3域名服务器的种类(3)高速缓存服务器(Caching-only Server)一个高速缓存服务器可以运行域名服务器的守护程序,但不具有本地的域名服务器的数据库文件。它从远程域名服务器取得每次查询的结果,并将这些结果保存到本地的缓存文件中,以后当需要查询相同信息的时候,就可以从缓存中直接获得结果。查询结果保存在缓存中的时间将由数据附带的“time-to-live”(TTL)来指定,当期满后,系统会自动删除这条结果。高速缓存服务器可以使用转发服务器(forwarders)。转发服务器是连接了外部网络的服务器,将这些服务器的数据结合起来构成一个大型的DNS数据库。在这
47、种模式下,高速缓存服务器首先向一个转发服务器提出查询请求,必要的话,后者会去查询别的服务器,以便获得数据。高速缓存服务器的配置相对简单,只需要一个高速缓存文件即可。但最常见的配置还包括一个本地回送文件。 3域名服务器的种类上述3种域名服务器在具体进行配置时所需要的文件的主要功能如下:Named.boot-这是DNS守护进程named在启动时查看的第一个文件;该文件设置一般的named参数,指向该服务器使用的域数据库信息的源。这类源可以是本地磁盘文件或远程服务器。Named使用此文件来决定数据库文件名及其在本主机和远程主机上的位置。Named.ca-该文件指向根域名服务器,包含Internet的
48、根域名服务器的名字和地址。使用此文件中维护的信息,一个域名服务器可以与根域名服务器联系,以解析名字询问。Named.hosts-该文件定义了域名服务器管理的域,主要负责将主机名映射为IP地址。它是域数据生成和修改并传播到网络或Internet上其他服务器的地方。Named.rev-该文件定义了管理名字的反向域,主要负责将IP地址映射到主机名。Named.local-用于在本地转移回送地址,负责将localhost解析成地址。当Named守护进程启动时,读取named.boot文件,获得服务器的类型以及初始化数据信息。该文件保存了设置named的基本参数,同时指向该服务器使用的域数据库的信源。1
49、2.3.2 bind简介 BIND(Berkeley Internet Name Domain)是Domain Name System(DNS)协议的一个实现,提供了DNS主要功能的开放实现,包括域名服务器(named)、DNS解析库函数、DNS服务器运行调试所用的工具,是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护的,按照ISC的调查报告,BIND是世界上使用最多最广泛的域名服务系统。不论邮件服务器,Web服务器或者其他的服务如何的安全可靠,DNS的故障会给用户带来根本无法访问这些服务的问题。目前使用的BIND9在2000年十月份推出,现在稳定版本是9.3.2
50、。 1软件的相关资源 官方网站: 最新版本: 9.3.2 帮助文档: 配置文件样例: bind.htmlFAQ: 2安装 (1)安装最简单的方式是安装Fedora Core 6时,在选择软件包的时候,采用的自定义方式,把开发工具和服务器之类的软件全部选上了,这样当系统装完之后就已经把bind安装好了,只需要配置好就可以用。当然也可以采用编译的方式进行安装。由其官方网站中下载其源码软件包bind-9.3.2. tar.gz。接下来对安装过程的一些重要步骤,给出其解释:rootlocalhost root#tar xzvf bind-9.3.2. tar.gzrootlocalhost root#
51、cd bind-9.3.2rootlocalhost bind-9.3.2#./configurerootlocalhost bind-9.3.2#makerootlocalhost bind-9.3.2#make install2安装tar xzvf bind-9.3.2.tar.gz 解压缩软件包。./configure 针对机器作安装的检查和设置,大部分的工作是由机器自动完成的,但是用户可以通过一些参数来完成一定的设置,其常用选项有:./configure -help 察看参数设置帮助。 -prefix= 指定软件安装目录(默认/usr/local/)。 -enable-ipv6 支持i
52、pv6。可以设置的参数很多,可以通过-help察看需要的,一般情况下,默认设置就可以了。默认情况下,安装过程是不会建立配置文件和一些默认的域名解析的,不过并不妨碍,可以下载一些标准的配置文件( ),也可以使用本文所提供的样例文件。默认情况下,安装的deamon为/usr/local/sbin/named默认的主配置文件为/etc/named.conf(须手动建立)。2安装(2)启动:rootlocalhost root# /usr/local/sbin/named g/usr/local/sbin/named默认情况是一个后台deamon,-g选项表示前台运行,并将调试信息打印到标准输出,这在
53、我们安装调试阶段是非常有帮助的。如果建立了配置文件和域名解析文件,ps aux 应该可以查到named的进程,或netstat -an 也可以看到53端口的服务已经起来了(DNS默认端口为53)。2安装如果要设置开机自启动DNS server,只需在/etc/rc.d/rc.local中加入一行/usr/local/sbin/named,如#!/bin/sh# This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here if
54、 you dont# want to do the full Sys V style init stuff.touch /var/lock/subsys/local/usr/local/sbin/named3配置 首先我们做以下假设:A服务器为 的主域名服务器,其IP地址为,B服务器为 的辅助域名服务器,其IP地址为;下面我们配置服务器为 的主DNS服务器。bind软件安装后,会产生几个固有文件,分为两类,一类是配置文件在/etc目录下,一类是dns记录文件在/var/named目录下。加上其他相关文件,共同设置dns服务器。下面是所有和dns设置相关文件的列表与说明。位于/etc目录下的有:
55、hosts,host.conf,resolv.conf,named.boot,named.conf。 3配置 (1)“hosts”文件,定义了主机名和ip地址的对应,其中也有将要运行dns这台电脑的ip地址和主机名。内容: localhost.localdomain localhost (2)“host.conf”文件,“order hosts bind”语句,指定了对主机名的解析顺序是先到hosts中查找,然后到dns服务器的记录里查找。“multi on”则是允许一个主机名对应多个ip地址。内容:order hosts, bind multi on nospoof on 3配置 (3)“r
56、esolv.conf”文件,“nameserver 11”指定了dns服务器的地址。注意,这个文件对普通非dns服务器的电脑(非windows的系统;Windows系统是在“网络属性”中设置这项的)来说,是必不可少的。如果没有设置本机为dns服务器,又要能够解析域名,就必须指定一个dns服务器的地址。可以最多写上三个地址,作为前一个失败时的候选dns服务器。“domain ”指定默认的域。文件内容: domain nameserver 3配置 (4)“named.boot”文件是早期版本的bind软件使用的配置文件,现在新版本中已经让位于“named.conf”。named.conf是dns
57、server配置的核心文件。 4测试DNS服务器 改动过DNS的相应文件,用“ndc restart”命令重新启动服务,在Redhat 7.1以上版本中使用命令:rootmail root#/etc/rc.d/init.d/named restart使改动生效。要测试DNS,可以找一台客户机,把它的DNS地址设成新建立的DNS服务器地址,然后试试上网,收信,下载等。也可以使用nslookup命令:运行nslookup,输入要查询的主机名,看是否返回正确的ip地址,在Redhat 7.1以上版本中推荐使用dig命令。12.4 邮件服务器 电子邮件是Internet应用服务之一,通过网络,可以以非
58、常低廉的价格、非常快速的方式,与世界上任何一个网络用户联络,这些电子邮件可以包含文字、图像、声音或其他多媒体信息。和普通的邮件一样,电子邮件也需要“邮局”邮件服务器。邮件服务器提供了邮件系统的基本结构,包括邮件传输、邮件分发、邮件存储等功能,以确保邮件能够发送到Internet网络中的任意地方。 12.4.1 电子邮件原理 电子邮件的发送需要经过用户代理。发送一封电子邮件时,不能直接将信件发送到对方邮件地址指定的服务器上,而是必须首先试图去寻找一个信件传输代理,把邮件提交给它。传输代理。信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,信件传输代理程序查询到应
59、对这个目标地址负责的邮件传输代理服务器,并且通过网络将邮件传送给它。对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件的接收者察看自己的电子信箱。显然,邮件传输是从服务器到服务器的,而且每个用户必须拥有服务器上存储信息的空间(称为信箱)才能接受邮件。(发送邮件不受这个限制)。投递代理。从信件传输代理取得信件传送至最终用户的邮箱。显然,最终用户只能看到用户投递代理。用户代理接受用户输入的各种指令,将用户的邮件传送至信件传输代理或者通过pop、Imap将信件从传输代理服务器处取到本机上。常见的用户代理有“evolution”,“foxmail”等邮件客户程序。1邮件的结构 邮件的结构是非
60、常简单的,用户从终端机上看到的邮件格式一般为:(1)From: (2)To: (3)Subject: Explaination of mail format(4)Date: Thu, 1 Apr 1999. 10:00:00 GMT(5)空行(6)邮件正文其中,14行称作信件信头(message header)第6行描述信件要表达的内容,称为信体(message body)。第5行是空行,根据RFC822的要求,信头和信体之间必须加入一空行。此外信头通常包含字段From,To,Subject和Date,有的邮件还包含cc,bcc等字段。 2SMTP和POP3协议 SMTP协议:SMTP(Sim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国球芯折角塞门市场调查研究报告
- 2025年中国玻璃切割机市场调查研究报告
- 2025年中国煤气平炉市场调查研究报告
- 2025年中国淋浴房双轮吊轮市场调查研究报告
- 2025年中国气体浓度计市场调查研究报告
- 好茶叶出售合同范本
- 2025年中国机架安装套件市场调查研究报告
- 借人劳务合同范本
- 店铺用工合同范本
- 2025年中国屏风家具市场调查研究报告
- 2025年执业医师定期考核题库及参考答案
- 2025年北京交通职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 心理健康七个一主题活动方案
- 多元化票务系统设计-深度研究
- 人教版地理七年级下册7.1.1 亚洲的自然环境(课件33张)
- 《Python程序设计基础教程(微课版)》全套教学课件
- 小学二年级数学下册教材研说稿
- 薄弱学科、薄弱班级原因分析及改进措施课件资料
- 可编辑模板中国风春节喜庆信纸精选
- 小学生幽默搞笑相声台词
- A4方格纸-无需排版直接打印完美版
评论
0/150
提交评论