作者:吴迪 本文选自:开放系统世界
随着技术的进步,Internet 的影响已经席卷全球。对于现在的企业而言,信息化的市场渠道和市场资源在竞争中越来越重要。企业应该尽快开展电子商务,以提高企业内部的工作效率,降低成本。要实现这些,企业内部必须信息化,并与 Internet 建立联系。实现这些目的的一个重要的途径是搭建企业内部网 (Intranet)。目前,基于分布式客户端/服务器 Intranet 应用已经广泛展开。随着网络应用越来越复杂,公司也要求具备越来越强韧的网络业务。
在一个网络系统中,操作系统的地位是非常重要的。Linux 网络操作系统以高效性和灵活性而著称。它能够在 PC 上实现全部的 Unix 特性,具有多任务、多用户的能力。
Intranet 的主要优势
采用 Intranet 技术能大大节省费用。Intranet 在技术上是相当成熟的,它的优点是简单易用、见效快、回报率高,相对于传统的大型/哑终端,以及前几年国内流行的 MIS 系统,Intranet 的建立更容易、成本更低。规模小的系统甚至可以几天完成,用户投资风险很小。
Intranet 跨平台,且兼容性好,能保护原有的软硬件设施。同时,原来的网络线路、操作系统、数据库都可以很容易地加以利用。
Intranet 系统维护费用低,采用 Web/Browser 结构,用户端采用通用浏览器,因此不必开发专用的客户端软件。这样既做到了降低开发费用、节省开发时间,也减少了系统出错的可能性,降低了维护费用。
Intranet 有统一的用户界面、统一的语言格式、统一的传输协议。用户界面操作简单易学,终端用户几乎无需任何培训。Web服务器内容的制作也十分简便。
Intranet 的主要功能
对内可提供一个灵活、高效、宽松、快速、廉价、可靠的信息交流、信息共享和企业管理的理想环境,可真正实现企业管理的电子化、科学化和自动化,大大提高工作效率,提高企业的竞争力。
对外可全面展示企业的形象,宣传和发布产品信息,保持与客户及合作伙伴的密切联系。
可连接到 Internet,共享丰富的信息资源。
在Intranet上,企业管理者可实验各种先进的企业管理方法,进行体制创新,确保企业立于不败之地。
Intranet 的建立
建立 Intranet 需要经过以下步骤:
◆ 根据需求确定企业的 Intranet 规模;
◆ 选择硬件、网络及软件平台;
◆ 建立 Intranet 服务系统,包括 Web 系统和电子邮件系统等;
◆ 建立 Intranet 安全设施,如防火墙系统;
◆ 编辑和发布企业信息文档;
◆ 融合企业应用系统;
◆ 可选择性地建立与 Internet 的物理连接。
基于 Linux 的企业内部网
Linux 与 TCP/IP 的天然联系
TCP/IP 最初是为支持在 ARPANET 上计算机通信而设计的。Unix 被广泛应用于 ARPANET,它的第一个网络版本是 4.3 BSD。Linux 的网络实现是以 BSD 为模型的,支持 BSD Sockets(及一些扩展)和所有的 TCP/IP 网络。通过内置的 TCP/IP,Linux 可以提供各种高效的网络功能。Intranet 的网络结构如图 1 所示。
图1 Intranet 的网络结构
Linux 的 Intranet 服务
Linux 诞生、成长于 Internet,它的各个版本均支持 Internet(当然支持 Intranet)服务。Linux 缺省提供 WWW、Usenet 新闻、电子邮件、FTP 等许多功能,可以访问网络内部用户,也可以通过整个 Internet 发布消息。如果与各种接入设备相连,Linux 就可以变成强大的 Internet 访问接入点。
本文介绍以 Linux 来实现基本网络服务,提供 Web 服务(Apache + SSL)、Email 服务 (Sendmail)、Cluster 服务、Samba 服务 (File-Server)、Firewall/SSH 服务等,还利用 Linux 强化的系统安全性和可靠性管理 Intranet,特别是基于 Web 方式的系统及网络全面管理工具 Webmin。
Linux 下的 Intranet 安全问题
当前世界各国随着 Internet 的发展,又纷纷投入到 Intranet 开发潮流之中。由于 Intranet 的开放性、复杂程度及应用范围扩大这三方面因素,使得 Intranet 安全性问题日益重要。企业要生存发展,要通过 Intranet 向外介绍自己的产品与技术。但 Internet 是一种公用网络,外界用户可通过 Internet 访问企业内部网,这就有可能使企业的保密信息被窃取或遭到破坏,给企业造成无法弥补的损失。因此,在开发 Intranet 项目中对安全性的考虑是十分必要的。
在考虑 Intranet 安全性时,要全面分析整个系统需求,根据具体要求采取以下各种途径:防火墙、口令加密、数字签名、数据加密、物理安全保密等等。
用 Linux 下的防火墙实现 Intranet 安全性
防火墙是在计算机上设立的防止内部网络与公共网络直接访问的一种机制。充当防火墙的计算机既可以直接访问被保护的网络,也可以直接访问 Internet。被保护的网络不能直接访问 Internet,同时 Internet 不能直接访问被保护的网络。因此可将 Intranet 进一步划分成若干子网,在这些子网之间设置防火墙,但这种分开的子网加上防火墙构成的网络系统,很可能使原有网络互连的完整性受到损害。 Intranet 防火墙的网络结构如图2所示。
图2 Interanet 防火墙的网络结构
防火墙通常包括以下几种形式:IP 包过滤防火墙、电路层网关和应用代理网关。但也有人把用户认证和访问控制技术及数据加密技术归入防火墙范畴。
1.IP 包过滤防火墙
一个 IP 包过滤防火墙在 IP 包水平上工作。它根据在每个包中的源地址、目的地址和包类型等信息控制包的流动。一般使用 IP 包过滤防火墙来保护整个局域网,所以常使用局域网与 Internet 之间的路由器作为防火墙。这种防火墙可以阻止外部网络访问内部私有系统,但是不能记录公共系统的访问者,以及从内部网访问 Internet 访问者。这种方式是企业内部网采用防火墙最简单的实现方式,通常做为防火墙的第一道关口。
2.应用代理网关
应用代理网关允许内部网络上的客户通过防火墙非直接地访问 Internet。它根据客户的请求,代替客户与目的地进行连接。由于应用代理网关在应用层进行代理,所以可以对应用协议进行控制,而且可以在应用水平上进行记录。
3.线路级网关
该网关将外部 TCP/IP 端口连接到内部的一个目标(通常是像打印机一类的共享资源)。在网关上设置有一个存取控制机构,能够判别连接到 TCP/IP 端口的用户是否是一个授权访问打印的用户。如果是就正常传输信息;否则就封锁访问。
4.用户认证系统
用户认证系统确认用户是否为系统的合法用户。当用户要与网络的服务器通信或登录到某个计算机系统时,第一件事就是要输入用户名及相应的密码。用户要注意自己的口令不被盗用,不向他人泄露自己的口令,必要时可定期改变口令。它对于一些特定的系统和应用采用基于口令的用户认证系统更为有效,这种常规方法所需经费不高,而且效率也比较高,不会将正常的事件过程隔离掉。
Linux 系统可以通过 Iptable (Ipchains) 实现防火墙功能。Iptable (Ipchains) 不仅可以包过滤,还可以控制伪装和透明代理。
Iptable (Ipchains) 的本质是 IP 包过滤器。它检查到达网络接口的 IP 包,根据事先定义好的规则进行修改,然后再转发给其它接口。每个 IP 包都含有报头 (header),里面含有该包的目的地及如何处理等控制信息。需要传送的数据放在有效段中。通常情况下,有效段可以包含更高一级的包。例如,一个 TCP 包总是包含在 IP 包的有效段中,该 TCP 包拥有自己的报头和有效段。Iptable (Ipchains) 软件可改变 IP 报头、TCP 报头、UDP 报头和 ICMP 报头内的一些域值。
运行 Iptable (Ipchains) 的机器可以拥有许多网络接口,每个接口都连接在不同的网络上。任何可用的防火墙至少应有两个独立的接口,一个连到内部网络,另一个连到外部网络。数据包从一个接口进入,经由过滤“链条”传给另一个接口。
在较简单的情况下,Iptable (Ipchains) 只执行三种策略:接受、否决和拒绝。它能接受来自指定 IP 地址或网络的所有包,否决策略丢弃来自特定地方的所有包。拒绝策略则丢弃来自指定源头的包,并且通知该源头其请求的连接被拒绝。
Iptable (Ipchains) 有三类基本的链:输入链、正向链和输出链。输入和输出链分别处理对应于进入和流出接口的包的执行策略。正向链直接将通信量传送给另一机器 (在其执行了输入链后),多数情况下是路由器。Iptable (Ipchains) 本身并不是完全的路由引擎,所以它把包转交给本机上真正的软件路由器或者另一节点上的硬件路由器。
Iptable (Ipchains) 有两种运行方式:代理服务器和网络地址转换器。代理服务器接收来自受防火墙保护的网络内部机器的数据流,使用用户定义的规则对其进行过滤处理,然后发送给外部网络。也就是说,网络内部哪些机器可以访问外部网络是由代理服务器控制的。反之亦然。网络地址转换器能把内部私有的地址转换成合法的公共地址,即将多个内部地址映射成惟一的外部地址。这样就不能从外部网络上直接访问到内部网络的某个机器,从而达到保护内部机器的目的。
Linux 集群 LVS 与 Intranet
Internet 的飞速发展给网络带宽和服务器带来巨大的挑战。而网络带宽的增长远高于处理器速度和内存访问速度的增长,因此越来越多的瓶颈会出现在服务器端。
为了增强服务器端的性能,产生了对称多处理 (Symmetric Multi-Processor,简称 SMP) 和集群等解决方案。
SMP 是由多个对称的处理器及通过总线共享的内存和 I/O 部件所组成的计算机系统。SMP 是一种低并行度的结构,是“紧耦合多处理系统”。它的可扩展能力有限,不能满足高可伸缩、高可用网络服务中的负载处理能力不断增长的需求。由于 SMP 的可扩展能力有限,随着负载不断增长,会导致服务器不断地升级。
通过高性能网络或局域网互联的服务器集群,正成为实现高可伸缩的、高可用网络服务的有效结构。这种松耦合结构的服务器集群系统有下列优点:
◆ 整体性能 网络服务的工作负载通常是大量相互独立的任务,通过一组服务器分而治之,可以获得很高的整体性能;
◆ 性能/价格比 组成集群系统的 PC 服务器或 RISC 服务器及标准网络设备,因为大规模生产降低成本,因此价格低,具有较高的性能价格比;
◆ 可伸缩性 集群系统中的结点数目可以根据需要随意地增加;
◆ 高可用性 在硬件和软件上都有冗余,通过检测软硬件的故障,将故障屏蔽,由存活结点提供服务,可实现高可用性;
◆ 透明性 客户端无须做任何修改,部分服务器的切入和切出不会中断服务,这对用户也是透明的。
集群服务器群在其前端有一个负载服务器 (Load Balancer)。负载服务器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,使客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。客户程序不受服务器集群的影响,不需做任何修改。系统的伸缩性通过在服务机群中透明地加入和删除一个节点来实现,通过检测节点或服务进程故障和正确地重置系统达到高可用性。
用 Linux 下的 LVS 实现服务器集群
用 LVS 实现服务器集群有以下的三种模式,它们各有自己的特点。
1. NAT
通过网络地址转换,负载服务器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过负载服务器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。缺点是当客户请求越来越多时,负载服务器的处理能力将成为瓶颈。这种方式十分像代理服务器的工作原理。如图 3 所示,响应必须经过负载服务器 (Virtual-Server)。
图3 LVS-1 示意图
2. TUN
在 TUN 技术中,负载服务器把请求报文通过 IP 隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以负载服务器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 TUN 技术后,集群系统的最大吞吐量可以大大提高。如图 4 所示,响应不经过负载服务器 (Virtual-Server)。
3. DR
DR 通过改写请求报文的 MAC 地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同 TUN 技术一样,DR 技术可极大提高集群系统的伸缩性。这种方法没有 IP 隧道的开销,对集群中的真实服务器也没有必须支持 IP 隧道协议的要求,但是要求负载服务器与真实服务器都有一块网卡连在同一物理网段上。如图 4 所示, 响应也不经过负载服务器 (Virtual-Server)。
图4 LVS-2 示意图
LVS 集群包括负载服务器、服务器池。负载服务器是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行。它可以采用 IP 负载均衡技术、基于内容请求分发技术或者两者相结合。服务器池是一组真正执行客户请求的服务器,执行的服务有 Web、Mail、FTP、DNS 等。建议使用 TUN、DR 方式实现集群。
Intranet 网络数据库的构建与实现
一个网络数据库就是用户利用浏览器作为界面输入所需的数据。浏览器将这些数据返回给网站,而网站再对这些数据进行一些处理,例如,将数据存入数据库,或者对数据库进行查询的操作等。最后,网站再将执行的结果返回给浏览器,通过浏览器将浏览的结果告知使用者。
网络数据库的基本模型
网络数据库的基本类型包括两种:两层模型和三层模型。
1. 两层模型
当数据库和查询它的应用程序在同一台机器上,而且没有服务器代码的干预时,生成的程序称为两层模型。一层是应用程序,而另一层是数据库。这种模型较为简单,容易实现,在 JDBC 系统中通常采用该模型。
2.三层模型
当一个应用程序或 Applet 调用服务器,服务器再去调用数据库时,称为三层模型。调用称为“服务器”的程序时通常是这种情况加上第三方软件。三层模型中的第三方软件通常被称为中间件,使用中间件可以减轻数据库的负担,能够更好的处理数据,但其成本也就提高。
在 Linux 下实现 Intranet 网络数据库服务器
在 Linux 下实现网络数据库可以有多种方法,例如 Oracle、DB2 & Websphere、MySQL 等。MySQL API 可用于各种语言,包括几乎所有编写网站后端所实际使用的语言。
建立 MySQL 的两层结构
利用 MySQL 设计和构造客户机/服务器结构,如图 5 所示。
图5 建立 MySQL 的两层结构
MySQL 客户机的主要作用是请求与 MySQL 服务器联系,修改或查询服务器所拥有的数据库,可由任何的 Web 浏览器来完成;MySQL 服务器端主要作用是用来响应客户的访问,并完成数据库的日常维护,由 Web 服务器与数据库构成。
服务器端的数据库服务器 (mysqld) 可以放在 Intranet 能访问到的任何机器上运行。为了确保合理的响应时间,把 Web 服务器与 mysqld 放在两台机器上。
建立 Mail 服务器
E-mail 就是人们常说的电子邮件,是 Internet 上提供的主要服务项目之一。它采用简单邮件传送协议 SMTP 来实现在 Internet上 的信息传递。
一个邮件系统的传输包含了用户代理(user Agent)、传输代理(Transfer Agent)及接受代理 (Delivery Agent) 三大部分。用户代理是一个用户端发信和收信的程序,负责将信按照一定的标准包装,然后送至邮件服务器,将信件发出或由邮件服务器收回。传输代理负责信件的交换和传输,将信件传送至适当的邮件主机,再由接受代理将信件分发至不同的邮件信箱。传输代理必须要能够接受用户邮件程序送来的信件,解读收信人的地址,根据 SMTP (Simple Mail Transport Protocol) 协议将它正确无误地传递到目的地。现在一般的传输代理已采用 Sendmail 程序完成工作, 到达邮件主机在经接收代理 POP(Post Office Protocol,网络邮局协议或网络中转协议)使邮件被用户读取至自己的主机。
利用 Linux 下的 Sendmail 建立 Intranet 邮件服务器
Sendmail 主要是一个邮件路由器,这就是说,它是获取信件、检查收件人地址并确定发送信件的最好路径。Sendmail 可以确定它所需的关于自己的一些信息,例如当前的时间和运行的主机名。但它的大部分职能是由邮件管理员通过配置文件 Sendmail.cf 的形式来提供的。这个文件确切地告诉 Sendmail 如何处理各类邮件。Sendmail 作为一个 SMTP 客户程序 (发送器) 和服务程序 (接收器),像前面提到的那样,Sendmail 可以作为一个邮件路由器运行,因为它理解 SMTP 协议。由于 SMTP 是一个面向连接的协议,因此客户程序和服务程序 (也称为发送器和接收器)总是存在。SMTP 客户程序可以向 SMTP 服务程序投递信件,SMTP 服务程序将不断地监听计算机的 SMTP 端口。Sendmail 可以是一个 SMTP 客户程序,也可以是一个 SMTP 服务程序。当运行 Sendmail 时,它成为一个 SMTP 客户程序,并把客户端 SMTP 通知给 SMTP 服务程序;当 Sendmail以 守护程序模式启动时,它以服务程序方式运行。
Intranet 中的 Web 服务器
WWW 在当今的信息社会是必不可少的一种信息沟通方式。无论在哪个领域,动态的 Html 页面都是一种宣传和获取信息的介质。Linux 中的 Web 服务器有很多种,例如 NCSA httpd、Apache、AOLServer、Bon、WN、W3C/Cern 等。根据著名的 Web 服务器调查公司 Netcraft的 调查显示,世界上 50% 以上的 Web 服务器都在使用 Apache。Apache 提供了丰富多彩的功能,包括目录索引、目录别名、内容协商、可配置的 HTTP 错误报告、CGI 程序的 SetUID 执行、子进程资源管理、服务器端图象映射、重写 URL、URL 拼写检查及联机手册 man 等。因此,在设计中笔者也采用了 Apache RPM。
使用 Apache RPM 安装 Web 服务器
Apache RPM 既可以在 Red Hat Linux 上找到,也可以在 Red Hat 的 FTP 服务器上找到。同任何其它 RPM 一样,Apache RPM 的安装很简单,可以使用命令行形式:
$ rpm ivh Apache*.rpm
Intranet 中的 FTP 服务器
FTP 是英文 File Transfer Protocol (文件传输协议) 的缩写。顾名思义,FTP 就是专门用来传输文件的协议,也就是说,通过 FTP 可以在 Internet 网上的任意两台计算机间互传文件。与传送可显示文件的 HTTP 和电子邮件的 SMTP 一样,FTP 也是应用 TCP/IP 协议的应用协议标准。
配置 FTP 服务器有两种方式。
第一种方式是默认配置方式,仅供专门用户使用。专用的 FTP 服务器只允许系统的用户通过 FTP 进行连接,并访问他们的文件,管理员通过为这些用户设置访问权限,从而明确地拒绝和接受对系统的访问。
另一类 FTP 服务器是匿名服务器。匿名服务器在无需帐号的情况下,允许网络上的任何人对它进行连接并传输文件。由于这种配置方式含有潜在的不安全性因素,因此应该采取预防措施,只允许访问系统上的某些目录。可以使用 wu-ftp、tftp-server、proftpd、gssftp 等服务程序。
打印、文件服务器
在 NetBIOS 出现之后,Microsoft 就使用 NetBIOS 实现了一个网络文件/打印服务系统,这个系统基于 NetBIOS 设定了一套文件共享协议,Microsoft 称之为 SMB (Server Message Block) 协议。这个协议被用于 Lan Manager 和 Windows 服务器系统中,可实现不同计算机之间共享打印机、文件等。因此,为了让 Windows 和 Unix/Linux 计算机相集成,最好的办法就是在 Unix/Linux 计算机中安装支持 SMB 协议的软件,这样使用 Windows 的客户端就不需要更改设置,就能像使用 Windows NT 或 Windows 2000 服务器一样,使用 Unix/Linux 计算机上的共享资源了。Linux Samba 是用来实现 SMB (Server Message Block) 的一种软件,它使 SMB 协议运行在 NETBIOS 协议上 Unix/Linux 中的打印、文件服务器。
Intranet 的管理
一个较好的 Intranet 应该有完善的管理机制,因此管理工具就显得尤为重要。
基于 Web 的 Linux 管理工具 Webmin
Webmin 是一个基于 Web 的 Linux 系统管理工具。管理员通过浏览器访问 Webmin 的各种管理功能,并完成相应的管理动作。Webmin 支持绝大多数的 Linux 系统。Web 管理方式使得 Webmin 同时具有本地和远程管理的能力,插件式结构使它具有很强的扩展性和伸缩性。
Linux 和网络发展是密切相关的。在某种意义上 Linux 是一个针对 Internet 的产品。它的开发者和用户用Web来交换信息思想、程序代码,而Linux自身常常被用来支持各种组织机构的网络需求。Linux的网络实现是以网络为模型的,它支持 BSDsockets (及一些扩展) 和所有的 TCP/IP 网络。
笔者在设计中利用了 Linux 建立企业内部网,实现了基本网络服务、Web 服务器 (Apache+SSL)、E-mail 服务器 (Sendmail)、Samba 服务 (File-Server)、Cluster 服务、 Firewall/SSH 服务等;还利用 Linux 强化的系统安全性和可靠性管理 Intranet,特别是基于 Web 方式的系统及网络全面管理工具Webmin。
总之,企业内部网将在企业的发展中起到越来越重要的作用。在所有的解决方案中,Linux 将受到更多人的关注,而这所有的一切在未来将会影响到我们将来的生活。
随着技术的进步,Internet 的影响已经席卷全球。对于现在的企业而言,信息化的市场渠道和市场资源在竞争中越来越重要。企业应该尽快开展电子商务,以提高企业内部的工作效率,降低成本。要实现这些,企业内部必须信息化,并与 Internet 建立联系。实现这些目的的一个重要的途径是搭建企业内部网 (Intranet)。目前,基于分布式客户端/服务器 Intranet 应用已经广泛展开。随着网络应用越来越复杂,公司也要求具备越来越强韧的网络业务。
在一个网络系统中,操作系统的地位是非常重要的。Linux 网络操作系统以高效性和灵活性而著称。它能够在 PC 上实现全部的 Unix 特性,具有多任务、多用户的能力。
Intranet 的主要优势
采用 Intranet 技术能大大节省费用。Intranet 在技术上是相当成熟的,它的优点是简单易用、见效快、回报率高,相对于传统的大型/哑终端,以及前几年国内流行的 MIS 系统,Intranet 的建立更容易、成本更低。规模小的系统甚至可以几天完成,用户投资风险很小。
Intranet 跨平台,且兼容性好,能保护原有的软硬件设施。同时,原来的网络线路、操作系统、数据库都可以很容易地加以利用。
Intranet 系统维护费用低,采用 Web/Browser 结构,用户端采用通用浏览器,因此不必开发专用的客户端软件。这样既做到了降低开发费用、节省开发时间,也减少了系统出错的可能性,降低了维护费用。
Intranet 有统一的用户界面、统一的语言格式、统一的传输协议。用户界面操作简单易学,终端用户几乎无需任何培训。Web服务器内容的制作也十分简便。
Intranet 的主要功能
对内可提供一个灵活、高效、宽松、快速、廉价、可靠的信息交流、信息共享和企业管理的理想环境,可真正实现企业管理的电子化、科学化和自动化,大大提高工作效率,提高企业的竞争力。
对外可全面展示企业的形象,宣传和发布产品信息,保持与客户及合作伙伴的密切联系。
可连接到 Internet,共享丰富的信息资源。
在Intranet上,企业管理者可实验各种先进的企业管理方法,进行体制创新,确保企业立于不败之地。
Intranet 的建立
建立 Intranet 需要经过以下步骤:
◆ 根据需求确定企业的 Intranet 规模;
◆ 选择硬件、网络及软件平台;
◆ 建立 Intranet 服务系统,包括 Web 系统和电子邮件系统等;
◆ 建立 Intranet 安全设施,如防火墙系统;
◆ 编辑和发布企业信息文档;
◆ 融合企业应用系统;
◆ 可选择性地建立与 Internet 的物理连接。
基于 Linux 的企业内部网
Linux 与 TCP/IP 的天然联系
TCP/IP 最初是为支持在 ARPANET 上计算机通信而设计的。Unix 被广泛应用于 ARPANET,它的第一个网络版本是 4.3 BSD。Linux 的网络实现是以 BSD 为模型的,支持 BSD Sockets(及一些扩展)和所有的 TCP/IP 网络。通过内置的 TCP/IP,Linux 可以提供各种高效的网络功能。Intranet 的网络结构如图 1 所示。
图1 Intranet 的网络结构
Linux 的 Intranet 服务
Linux 诞生、成长于 Internet,它的各个版本均支持 Internet(当然支持 Intranet)服务。Linux 缺省提供 WWW、Usenet 新闻、电子邮件、FTP 等许多功能,可以访问网络内部用户,也可以通过整个 Internet 发布消息。如果与各种接入设备相连,Linux 就可以变成强大的 Internet 访问接入点。
本文介绍以 Linux 来实现基本网络服务,提供 Web 服务(Apache + SSL)、Email 服务 (Sendmail)、Cluster 服务、Samba 服务 (File-Server)、Firewall/SSH 服务等,还利用 Linux 强化的系统安全性和可靠性管理 Intranet,特别是基于 Web 方式的系统及网络全面管理工具 Webmin。
Linux 下的 Intranet 安全问题
当前世界各国随着 Internet 的发展,又纷纷投入到 Intranet 开发潮流之中。由于 Intranet 的开放性、复杂程度及应用范围扩大这三方面因素,使得 Intranet 安全性问题日益重要。企业要生存发展,要通过 Intranet 向外介绍自己的产品与技术。但 Internet 是一种公用网络,外界用户可通过 Internet 访问企业内部网,这就有可能使企业的保密信息被窃取或遭到破坏,给企业造成无法弥补的损失。因此,在开发 Intranet 项目中对安全性的考虑是十分必要的。
在考虑 Intranet 安全性时,要全面分析整个系统需求,根据具体要求采取以下各种途径:防火墙、口令加密、数字签名、数据加密、物理安全保密等等。
用 Linux 下的防火墙实现 Intranet 安全性
防火墙是在计算机上设立的防止内部网络与公共网络直接访问的一种机制。充当防火墙的计算机既可以直接访问被保护的网络,也可以直接访问 Internet。被保护的网络不能直接访问 Internet,同时 Internet 不能直接访问被保护的网络。因此可将 Intranet 进一步划分成若干子网,在这些子网之间设置防火墙,但这种分开的子网加上防火墙构成的网络系统,很可能使原有网络互连的完整性受到损害。 Intranet 防火墙的网络结构如图2所示。
图2 Interanet 防火墙的网络结构
防火墙通常包括以下几种形式:IP 包过滤防火墙、电路层网关和应用代理网关。但也有人把用户认证和访问控制技术及数据加密技术归入防火墙范畴。
1.IP 包过滤防火墙
一个 IP 包过滤防火墙在 IP 包水平上工作。它根据在每个包中的源地址、目的地址和包类型等信息控制包的流动。一般使用 IP 包过滤防火墙来保护整个局域网,所以常使用局域网与 Internet 之间的路由器作为防火墙。这种防火墙可以阻止外部网络访问内部私有系统,但是不能记录公共系统的访问者,以及从内部网访问 Internet 访问者。这种方式是企业内部网采用防火墙最简单的实现方式,通常做为防火墙的第一道关口。
2.应用代理网关
应用代理网关允许内部网络上的客户通过防火墙非直接地访问 Internet。它根据客户的请求,代替客户与目的地进行连接。由于应用代理网关在应用层进行代理,所以可以对应用协议进行控制,而且可以在应用水平上进行记录。
3.线路级网关
该网关将外部 TCP/IP 端口连接到内部的一个目标(通常是像打印机一类的共享资源)。在网关上设置有一个存取控制机构,能够判别连接到 TCP/IP 端口的用户是否是一个授权访问打印的用户。如果是就正常传输信息;否则就封锁访问。
4.用户认证系统
用户认证系统确认用户是否为系统的合法用户。当用户要与网络的服务器通信或登录到某个计算机系统时,第一件事就是要输入用户名及相应的密码。用户要注意自己的口令不被盗用,不向他人泄露自己的口令,必要时可定期改变口令。它对于一些特定的系统和应用采用基于口令的用户认证系统更为有效,这种常规方法所需经费不高,而且效率也比较高,不会将正常的事件过程隔离掉。
Linux 系统可以通过 Iptable (Ipchains) 实现防火墙功能。Iptable (Ipchains) 不仅可以包过滤,还可以控制伪装和透明代理。
Iptable (Ipchains) 的本质是 IP 包过滤器。它检查到达网络接口的 IP 包,根据事先定义好的规则进行修改,然后再转发给其它接口。每个 IP 包都含有报头 (header),里面含有该包的目的地及如何处理等控制信息。需要传送的数据放在有效段中。通常情况下,有效段可以包含更高一级的包。例如,一个 TCP 包总是包含在 IP 包的有效段中,该 TCP 包拥有自己的报头和有效段。Iptable (Ipchains) 软件可改变 IP 报头、TCP 报头、UDP 报头和 ICMP 报头内的一些域值。
运行 Iptable (Ipchains) 的机器可以拥有许多网络接口,每个接口都连接在不同的网络上。任何可用的防火墙至少应有两个独立的接口,一个连到内部网络,另一个连到外部网络。数据包从一个接口进入,经由过滤“链条”传给另一个接口。
在较简单的情况下,Iptable (Ipchains) 只执行三种策略:接受、否决和拒绝。它能接受来自指定 IP 地址或网络的所有包,否决策略丢弃来自特定地方的所有包。拒绝策略则丢弃来自指定源头的包,并且通知该源头其请求的连接被拒绝。
Iptable (Ipchains) 有三类基本的链:输入链、正向链和输出链。输入和输出链分别处理对应于进入和流出接口的包的执行策略。正向链直接将通信量传送给另一机器 (在其执行了输入链后),多数情况下是路由器。Iptable (Ipchains) 本身并不是完全的路由引擎,所以它把包转交给本机上真正的软件路由器或者另一节点上的硬件路由器。
Iptable (Ipchains) 有两种运行方式:代理服务器和网络地址转换器。代理服务器接收来自受防火墙保护的网络内部机器的数据流,使用用户定义的规则对其进行过滤处理,然后发送给外部网络。也就是说,网络内部哪些机器可以访问外部网络是由代理服务器控制的。反之亦然。网络地址转换器能把内部私有的地址转换成合法的公共地址,即将多个内部地址映射成惟一的外部地址。这样就不能从外部网络上直接访问到内部网络的某个机器,从而达到保护内部机器的目的。
Linux 集群 LVS 与 Intranet
Internet 的飞速发展给网络带宽和服务器带来巨大的挑战。而网络带宽的增长远高于处理器速度和内存访问速度的增长,因此越来越多的瓶颈会出现在服务器端。
为了增强服务器端的性能,产生了对称多处理 (Symmetric Multi-Processor,简称 SMP) 和集群等解决方案。
SMP 是由多个对称的处理器及通过总线共享的内存和 I/O 部件所组成的计算机系统。SMP 是一种低并行度的结构,是“紧耦合多处理系统”。它的可扩展能力有限,不能满足高可伸缩、高可用网络服务中的负载处理能力不断增长的需求。由于 SMP 的可扩展能力有限,随着负载不断增长,会导致服务器不断地升级。
通过高性能网络或局域网互联的服务器集群,正成为实现高可伸缩的、高可用网络服务的有效结构。这种松耦合结构的服务器集群系统有下列优点:
◆ 整体性能 网络服务的工作负载通常是大量相互独立的任务,通过一组服务器分而治之,可以获得很高的整体性能;
◆ 性能/价格比 组成集群系统的 PC 服务器或 RISC 服务器及标准网络设备,因为大规模生产降低成本,因此价格低,具有较高的性能价格比;
◆ 可伸缩性 集群系统中的结点数目可以根据需要随意地增加;
◆ 高可用性 在硬件和软件上都有冗余,通过检测软硬件的故障,将故障屏蔽,由存活结点提供服务,可实现高可用性;
◆ 透明性 客户端无须做任何修改,部分服务器的切入和切出不会中断服务,这对用户也是透明的。
集群服务器群在其前端有一个负载服务器 (Load Balancer)。负载服务器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,使客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。客户程序不受服务器集群的影响,不需做任何修改。系统的伸缩性通过在服务机群中透明地加入和删除一个节点来实现,通过检测节点或服务进程故障和正确地重置系统达到高可用性。
用 Linux 下的 LVS 实现服务器集群
用 LVS 实现服务器集群有以下的三种模式,它们各有自己的特点。
1. NAT
通过网络地址转换,负载服务器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过负载服务器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。缺点是当客户请求越来越多时,负载服务器的处理能力将成为瓶颈。这种方式十分像代理服务器的工作原理。如图 3 所示,响应必须经过负载服务器 (Virtual-Server)。
图3 LVS-1 示意图
2. TUN
在 TUN 技术中,负载服务器把请求报文通过 IP 隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以负载服务器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 TUN 技术后,集群系统的最大吞吐量可以大大提高。如图 4 所示,响应不经过负载服务器 (Virtual-Server)。
3. DR
DR 通过改写请求报文的 MAC 地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同 TUN 技术一样,DR 技术可极大提高集群系统的伸缩性。这种方法没有 IP 隧道的开销,对集群中的真实服务器也没有必须支持 IP 隧道协议的要求,但是要求负载服务器与真实服务器都有一块网卡连在同一物理网段上。如图 4 所示, 响应也不经过负载服务器 (Virtual-Server)。
图4 LVS-2 示意图
LVS 集群包括负载服务器、服务器池。负载服务器是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行。它可以采用 IP 负载均衡技术、基于内容请求分发技术或者两者相结合。服务器池是一组真正执行客户请求的服务器,执行的服务有 Web、Mail、FTP、DNS 等。建议使用 TUN、DR 方式实现集群。
Intranet 网络数据库的构建与实现
一个网络数据库就是用户利用浏览器作为界面输入所需的数据。浏览器将这些数据返回给网站,而网站再对这些数据进行一些处理,例如,将数据存入数据库,或者对数据库进行查询的操作等。最后,网站再将执行的结果返回给浏览器,通过浏览器将浏览的结果告知使用者。
网络数据库的基本模型
网络数据库的基本类型包括两种:两层模型和三层模型。
1. 两层模型
当数据库和查询它的应用程序在同一台机器上,而且没有服务器代码的干预时,生成的程序称为两层模型。一层是应用程序,而另一层是数据库。这种模型较为简单,容易实现,在 JDBC 系统中通常采用该模型。
2.三层模型
当一个应用程序或 Applet 调用服务器,服务器再去调用数据库时,称为三层模型。调用称为“服务器”的程序时通常是这种情况加上第三方软件。三层模型中的第三方软件通常被称为中间件,使用中间件可以减轻数据库的负担,能够更好的处理数据,但其成本也就提高。
在 Linux 下实现 Intranet 网络数据库服务器
在 Linux 下实现网络数据库可以有多种方法,例如 Oracle、DB2 & Websphere、MySQL 等。MySQL API 可用于各种语言,包括几乎所有编写网站后端所实际使用的语言。
建立 MySQL 的两层结构
利用 MySQL 设计和构造客户机/服务器结构,如图 5 所示。
图5 建立 MySQL 的两层结构
MySQL 客户机的主要作用是请求与 MySQL 服务器联系,修改或查询服务器所拥有的数据库,可由任何的 Web 浏览器来完成;MySQL 服务器端主要作用是用来响应客户的访问,并完成数据库的日常维护,由 Web 服务器与数据库构成。
服务器端的数据库服务器 (mysqld) 可以放在 Intranet 能访问到的任何机器上运行。为了确保合理的响应时间,把 Web 服务器与 mysqld 放在两台机器上。
建立 Mail 服务器
E-mail 就是人们常说的电子邮件,是 Internet 上提供的主要服务项目之一。它采用简单邮件传送协议 SMTP 来实现在 Internet上 的信息传递。
一个邮件系统的传输包含了用户代理(user Agent)、传输代理(Transfer Agent)及接受代理 (Delivery Agent) 三大部分。用户代理是一个用户端发信和收信的程序,负责将信按照一定的标准包装,然后送至邮件服务器,将信件发出或由邮件服务器收回。传输代理负责信件的交换和传输,将信件传送至适当的邮件主机,再由接受代理将信件分发至不同的邮件信箱。传输代理必须要能够接受用户邮件程序送来的信件,解读收信人的地址,根据 SMTP (Simple Mail Transport Protocol) 协议将它正确无误地传递到目的地。现在一般的传输代理已采用 Sendmail 程序完成工作, 到达邮件主机在经接收代理 POP(Post Office Protocol,网络邮局协议或网络中转协议)使邮件被用户读取至自己的主机。
利用 Linux 下的 Sendmail 建立 Intranet 邮件服务器
Sendmail 主要是一个邮件路由器,这就是说,它是获取信件、检查收件人地址并确定发送信件的最好路径。Sendmail 可以确定它所需的关于自己的一些信息,例如当前的时间和运行的主机名。但它的大部分职能是由邮件管理员通过配置文件 Sendmail.cf 的形式来提供的。这个文件确切地告诉 Sendmail 如何处理各类邮件。Sendmail 作为一个 SMTP 客户程序 (发送器) 和服务程序 (接收器),像前面提到的那样,Sendmail 可以作为一个邮件路由器运行,因为它理解 SMTP 协议。由于 SMTP 是一个面向连接的协议,因此客户程序和服务程序 (也称为发送器和接收器)总是存在。SMTP 客户程序可以向 SMTP 服务程序投递信件,SMTP 服务程序将不断地监听计算机的 SMTP 端口。Sendmail 可以是一个 SMTP 客户程序,也可以是一个 SMTP 服务程序。当运行 Sendmail 时,它成为一个 SMTP 客户程序,并把客户端 SMTP 通知给 SMTP 服务程序;当 Sendmail以 守护程序模式启动时,它以服务程序方式运行。
Intranet 中的 Web 服务器
WWW 在当今的信息社会是必不可少的一种信息沟通方式。无论在哪个领域,动态的 Html 页面都是一种宣传和获取信息的介质。Linux 中的 Web 服务器有很多种,例如 NCSA httpd、Apache、AOLServer、Bon、WN、W3C/Cern 等。根据著名的 Web 服务器调查公司 Netcraft的 调查显示,世界上 50% 以上的 Web 服务器都在使用 Apache。Apache 提供了丰富多彩的功能,包括目录索引、目录别名、内容协商、可配置的 HTTP 错误报告、CGI 程序的 SetUID 执行、子进程资源管理、服务器端图象映射、重写 URL、URL 拼写检查及联机手册 man 等。因此,在设计中笔者也采用了 Apache RPM。
使用 Apache RPM 安装 Web 服务器
Apache RPM 既可以在 Red Hat Linux 上找到,也可以在 Red Hat 的 FTP 服务器上找到。同任何其它 RPM 一样,Apache RPM 的安装很简单,可以使用命令行形式:
$ rpm ivh Apache*.rpm
Intranet 中的 FTP 服务器
FTP 是英文 File Transfer Protocol (文件传输协议) 的缩写。顾名思义,FTP 就是专门用来传输文件的协议,也就是说,通过 FTP 可以在 Internet 网上的任意两台计算机间互传文件。与传送可显示文件的 HTTP 和电子邮件的 SMTP 一样,FTP 也是应用 TCP/IP 协议的应用协议标准。
配置 FTP 服务器有两种方式。
第一种方式是默认配置方式,仅供专门用户使用。专用的 FTP 服务器只允许系统的用户通过 FTP 进行连接,并访问他们的文件,管理员通过为这些用户设置访问权限,从而明确地拒绝和接受对系统的访问。
另一类 FTP 服务器是匿名服务器。匿名服务器在无需帐号的情况下,允许网络上的任何人对它进行连接并传输文件。由于这种配置方式含有潜在的不安全性因素,因此应该采取预防措施,只允许访问系统上的某些目录。可以使用 wu-ftp、tftp-server、proftpd、gssftp 等服务程序。
打印、文件服务器
在 NetBIOS 出现之后,Microsoft 就使用 NetBIOS 实现了一个网络文件/打印服务系统,这个系统基于 NetBIOS 设定了一套文件共享协议,Microsoft 称之为 SMB (Server Message Block) 协议。这个协议被用于 Lan Manager 和 Windows 服务器系统中,可实现不同计算机之间共享打印机、文件等。因此,为了让 Windows 和 Unix/Linux 计算机相集成,最好的办法就是在 Unix/Linux 计算机中安装支持 SMB 协议的软件,这样使用 Windows 的客户端就不需要更改设置,就能像使用 Windows NT 或 Windows 2000 服务器一样,使用 Unix/Linux 计算机上的共享资源了。Linux Samba 是用来实现 SMB (Server Message Block) 的一种软件,它使 SMB 协议运行在 NETBIOS 协议上 Unix/Linux 中的打印、文件服务器。
Intranet 的管理
一个较好的 Intranet 应该有完善的管理机制,因此管理工具就显得尤为重要。
基于 Web 的 Linux 管理工具 Webmin
Webmin 是一个基于 Web 的 Linux 系统管理工具。管理员通过浏览器访问 Webmin 的各种管理功能,并完成相应的管理动作。Webmin 支持绝大多数的 Linux 系统。Web 管理方式使得 Webmin 同时具有本地和远程管理的能力,插件式结构使它具有很强的扩展性和伸缩性。
Linux 和网络发展是密切相关的。在某种意义上 Linux 是一个针对 Internet 的产品。它的开发者和用户用Web来交换信息思想、程序代码,而Linux自身常常被用来支持各种组织机构的网络需求。Linux的网络实现是以网络为模型的,它支持 BSDsockets (及一些扩展) 和所有的 TCP/IP 网络。
笔者在设计中利用了 Linux 建立企业内部网,实现了基本网络服务、Web 服务器 (Apache+SSL)、E-mail 服务器 (Sendmail)、Samba 服务 (File-Server)、Cluster 服务、 Firewall/SSH 服务等;还利用 Linux 强化的系统安全性和可靠性管理 Intranet,特别是基于 Web 方式的系统及网络全面管理工具Webmin。
总之,企业内部网将在企业的发展中起到越来越重要的作用。在所有的解决方案中,Linux 将受到更多人的关注,而这所有的一切在未来将会影响到我们将来的生活。

添加到雅虎收藏