中小型企业是我国企业信息化的主体,他们本身的特点决定了它们在信息化过程中不可能投入大量的人力和物力。Linux作为一种开放的网络操作系统对中小企业来讲,是一个很有吸引力的平台。Linux作为自由软件的一个重要的成果,可以看作是互联网发展的作品。可获得源代码的版权,保证了用户有足够的权利,不受传统的商业许可证的限制。对专有商业软件所带来的安全方面的担心,开放源代码的Linux是不存在的。
Linux在我国的发展经历了四五年时间,最初的几年只是学校和科研单位使用。最近的两年逐渐进入媒体、企业和普通大众的视线,现在Linux已经成为鲜花和掌声包围的宠儿。尽管Linux在高端服务器和嵌入式方面发展迅速,目前Linux的应用主要在网络应用上。成为中小企业、家庭的网络服务器,提供Web服务、电子邮件(E-mail)服务、文件传输(FTP)服务、域名(DNS)服务。事实上,成功的安装后的Linux就可以作为Web、E-mail、FTP、News服务器。当然作为中小企业可能还需要一些更为复杂的功能,比如作为DNS服务器、代理网关或者路由、虚拟主机、防火墙、拨入服务器等,这些都需要特别的知识或者经验。
本文从中小企业网络系统的规划设计、实施和调试(主要是安全)角度,详细地介绍了Linux的解决方案,内容涵盖了企业Intranet/Internet建设的各个方面。希望对IT专业人士和广大的Linux爱好者有所帮助。
网络拓扑、IP地址和域名分配
要想为一个中小企业规划一个网络解决方案,只有了解他的需求,为之把脉、确诊,才能找出一个切实可行的适合其本身特点的解决方案。那么,一个企业的基本需求不外乎是大量的打印、收发信件、在网上寻找信息等等。在构造一个这样的网络环境之前,我们首先要做的是建设好这个网络的基础。就是要设计好网络拓扑、分配IP地址和分配域名。也就是设计网络的硬件连接方式,以及明确每台机器的名字和所使用的地址。
为了便于理解和讨论,我们假设了一个物理的网络体系,如下图所示:
如果你没有ISP分配给你的有效的子网IP地址,你可以采用虚拟子网IP地址,可用于配置局域网的虚拟子网的IP地址段有三组:
一个A类网络地址 10.0.0.0 /255.0.0.0
十六个B类网络地址 172.16.0.0/255.255.0.0 - 172.31.0.0/255.255.0.0
二百五十六个C类网络地址 192.168.0.0/255.255.255.0 - 192.168.255.0/255.255.255.0
这些IP地址永远不会被分配出去,它保留给虚拟网络使用,你不会在Internet上找到使用这些IP地址的主机,所以可以放心地使用。根据你网络的大小,选择比较合适的虚拟子网IP地址段,对于速度有一定的好处。
上图我们假设的局域网中没有超过254台电脑,所以我们选择的内部IP地址范围是192.168.0.1-192.168.0.254,192.168.0.1作为整个子网的网关和防火墙,经由它将整个局域网连入Internet。192.168.0.2-5分别作为内部网的文件和打印服务器、域名和邮件服务器、内部Web服务器、数据库服务器,为整个局域网提供服务。对于小的应用,也可以将这些服务在一台服务器上实现,但推荐将网关同其他服务器分离,这样可以提高系统的安全性。
同时我们也可以给内部的网络一个域名以便于内部使用,这里我们为了不和Internet上的域名冲突,选择了一个特殊的域:mycompany.vvv。各台服务器的完整域名如下:
网关:gw.mycompany.vvv
拨号接入服务器:ppp.mycompany.vvv
域名/邮件服务器:ns.mycompany.vvv
内部Web服务器:www.mycompany.vvv
数据库服务器:database.mycompany.vvv
文件和打印共享服务器:fp.mycompany.vvv
各个工作站的TCP/IP完整域名可以如tom.mycompany.vvv这样地定义,当我们将域名服务器按照后面所介绍的进行设置之后,就可以使用这些域名访问内部网络上所有的机器了。对于Windows客户的要求是将网关设置成192.168.0.1,并将首选域名服务器设置成192.168.0.3。这里我们没有采用动态IP地址分配(DHCP),理由是我们可能在以后要进行基于IP的一些管理,如计费等。网络的规划最后应该填写一个如下的表格。
当然根据你的网络情况,还可以对这个表进行扩展,如增加各机器的软、硬件配置信息。
服务器操作系统的安装
在这里我们将要帮助大家使用Linux平台构建起一个实用的网络体系,您可以把本文作为一个网络应用的向导。本文的重点就是讲述企业内部采用Linux作为系统平台时各种应用的安装和配置过程。以前能够在Windows系统实现的各种网络服务功能,现在都可以在Linux的环境中实施了。其中包括文件和打印共享(SAMBA),互联网连接共享和代理(Proxy),Internet防火墙(Firewall),域名服务(DNS),电子邮件服务(E-mail),Web服务(HTTP),数据库服务(DATABASE),文件传输服务(FTP)等,更进一步可以在Linux上实现诸如虚拟专用网(VPN),字符界面或Web界面的论坛服务(BBS),拨号网络接入服务(PPP)等等,更重要的是Linux的可扩展性很强,可以方便地在其上扩展众多的网络应用。
本文介绍的是基于Linux平台的网络解决方案,服务器操作系统当然选择Linux。在众多的Linux发布中,目前应用最多的是Redhat Linux。由于关于它的参考资料比较多,我们就以它作为我们的服务器操作系统,这样便于大家在遇到问题时更容易地找到答案,加上Redhat的包管理器RPM在使用上比较方便,安装软件相对来说就容易些了。对于Linux发布的选择我们不做更多的讨论,我个人认为只要对Linux比较熟悉之后,使用各种发布均可以完成你的任务。本文写作时Redhat已经出了7.0,但我们还是以6.2作为讨论的基础,其原因是6.2相对来讲要成熟一些,有些应用目前还不支持7.0,如oracle 8i。
Redhat 6.2光盘镜像文件的下载地址为:“http://freesoft.online.sh.cn/”。
在这里我们不对Redhat的安装过程做详细的说明,你可以在“http://freesoft.online.sh.cn/”找到关于安装的中文详细说明。在此,我们只对一些需要注意的问题提出一些建议。
机器的硬件配置
虽然Linux可以在386、4MB内存的机器上跑起来,但作为实际的应用,应该使用更好的机器以获得较好的性能。在我们的局域网中,除了数据库服务器建议使用PII以上的CPU,128MB以上的内存外(若使用Oracle 8i数据库,推荐256MB内存),其他的服务器均可在Pentium 133、64MB内存以上的PC上良好运作。
作为文件和打印共享的服务器请适当增加硬盘的容量,其他服务器在一般应用的情况下1个9GB的硬盘可以满足需要了。Linux系统的安装最大需要大约1GB的空间,其他空间可供用户安装程序和存储数据使用。在条件允许的情况下,请尽量选择SCSI硬盘,其速度和稳定性较IDE硬盘好。
作为服务器请选择比较好的PCI网卡,这样可以提高服务器响应请求的能力。选择PCI网卡的另一个好处是配置比较方便,无需提供诸如IO地址之类的参数。
在无需使用X Windows的服务器上,安装很好的显卡是没有必要的。对于服务器,很多情况下可以进行远程管理,使用基于字符界面的终端工具如Telnet、SSH登录到服务器就可以进行维护了。
服务器硬盘分区
很多人习惯将硬盘只分一个“/”(根)分区,但作为服务器,为了使系统在一些意外发生时(如:系统日志文件或用户文件超过了服务器硬盘剩余空间)仍然能够运行,以便管理员可以检查和处理这些问题,应该将一些分区独立出来,以下是笔者的一些建议:交换分区的大小为16MB或服务器内存的2倍中的大者,但不要超过1GB,超过1GB 的交换分区对于目前的Linux来说还用不上;“/boot”分区是系统启动文件存放的地方,一般不会有多大的变化,推荐的分区大小是10MB;“/var”分区包括有系统的日志文件等,这些文件会随着系统的运行逐渐增大,对于一般局域网的系统推荐分区大小为250MB;“/tmp”为系统临时文件存放区,比如你在压缩或解压缩的时候会在其中生成临时文件,推荐的分区大小为250MB;“/”(根)分区包括系统的配置文件目录、设备目录、系统程序目录等,变化也不大,推荐分区大小为250MB;剩下的2个分区“/home”和“/usr”分别包含了用户数据以及系统和用户的应用程序,可以根据需要将剩余的硬盘空间分配给它们,如作为文件共享,并希望用户的数据存储在“/home”分区,就可以适当增加该分区的大小,如果要安装很多应用程序,比如做测试的服务器,应适当增加“/usr”分区的大小。具体的分区可以根据你的实际情况做一些调整,这里提供一个最小的Linux可以正常运行的分区方案,供参考:
/ 40MB
/boot 5MB
/home 100MB
/tmp 30MB
/usr 232MB
/var 30MB
关于Redhat 6.2的安装组件
Redhat 6.2在安装时提示你选择安装方式:
Install CNOME Workstation
Install KDE Workstation
Install Server System
Install Custom System
Upgrade Existing Installation
请选择Install Custom System在组件列表中可以选择如下组件:
Printer Support(只在打印共享服务器上需要)
X Window System(只在安装Oracle 8i数据库的服务器上需要)
KDE(只在安装Oracle 8i数据库的服务器上需要)
Mail/WWW/News Tools
DOS/Windows Connectivity
Networked Workstation
Dialup Workstation
SMB(Samba)Server
Anonymous FTP Server
Web Server
DNS Name Server
Network Management Workstation
Development
Kernel Development
Utilities
这样的选择大概需要564MB的硬盘空间。
一旦你按照前面的介绍安装完Redhat 6.2之后,就可以开始设置服务器的工作。下面我们将按照任务的形式结合我们假设的网络结构进行介绍,你可以根据自己的需要浏览不同的任务章节。
共享Internet连接
共享Internet连接是目前比较流行的低成本的上网方式,通过一台作为网关的服务器将公司局域网上的电脑连上Internet,共用一个上网账号,可以提高Internet连接的使用效率。在我们的例子中,192.168.0.1扮演的就是这样一个角色。根据接入Internet的方式的不同,所进行的配置工作也不相同。我们将对3种常见的情况进行说明:
1. 通过DDN专线上网,这种情况就可能需要为该服务器配置2块网卡,一块接入内部局域网,一块通过路由器和你的ISP相连。
2. 使用ISDN上网,通过连接在串口的ISDN设备(TA)连接到你的ISP 。
3. 使用普通电话线上网,使用内置或外置的拨号设备Modem连接到你的ISP。在我们的介绍中采用外置的调制解调器。
一、通过DDN专线上网
这里涉及到在服务器上安装多块网卡的问题,如果你没有将网卡驱动程序编译到核心当中(刚刚安装完的Redhat 6.2就是这种情况),那么系统将以模块的形式动态载入所需的驱动程序,其配置文件为“/etc/conf.modules”。如果你的网卡使用的是PCI插槽,系统将会自动检测到已经安装的设备,而对于ISA类型的网卡,你还要提供它的IO地址信息。这里假设我们使用的网卡都是PCI的,一块为NE2000兼容卡,一块为Intel EtherExpressPro/100网卡,“/etc/conf.modules”文件的内容有可能如下:
alias eth0 ne2k-pci
alias eth1 eepro100
如果是ISA的网卡,如1张3COM的3c509网卡和1张ne2000兼容ISA卡,/etc/conf.modules文件的内容有可能如下:
alias eth0 3c509
alias eth1 ne
options 3c509 io=0x300
options ne io=0x320
其中eth0和eth1分别是两张网卡的别名,我们在以后进行网络配置时将会使用到它们。0x300和0x320这些就是ISA网卡的IO地址,通常,你可以使用网卡所附的驱动盘中的工具软件进行修改和设置。
NE2000兼容PCI网卡连接到ISP,在前面网络拓扑图中我们假定ISP分配给我们的IP地址为200.200.200.1,编辑/etc/sysconfig/network-scripts/ifcfg-eth0如下:
DEVICE=eth0
IPADDR=200.200.200.1
NETMASK=255.255.255.0
NETWORK=200.200.200.0
BROADCAST=200.200.200.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
请注意将IPADDR、NETMASK、NETWORK、BROADCAST根据ISP分配给你的值进行替换,其中NETWORK和BROADCAST可以根据IPADDR、NETMASK计算出来。
Intel EtherExpressPro/100网卡连接到内部局域网,分配的IP地址为192.168.0.1,编辑/etc/sysconfig/x:。
除了IP地址和子网掩码外ISP还会给你提供ISP的缺省网关的地址,这里假设我们的ISP网关为200.200.200.254,你应该在“/etc/sysconfig/network”中注明:
DEVICE=eth1
IPADDR=192.168.0.1
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NETWORKING=yes
HOSTNAME=""gw.mycompany.vvv""
GATEWAY=""200.200.200.254""
GATEWAYDEV=""eth0""
FORWARD_IPV4=""yes""
下一步,需要将该服务器配置成一个透明网关,设置透明网关的好处是网络中的其他电脑只需要将网关的IP地址设置成该服务器的地址即可访问Internet。为了在每次服务器启动时,这些设置可以自动生效,需要将设置命令写入到“/etc/rc.d/rc.local”文件当中,需要加入的内容如下:
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/depmod -a
/sbin/modprobe bsd_comp
/sbin/modprobe ip_masq_ftp
/sbin/ipchains -A forward -j MASQ -s 192.168.0.0/24 -d 0.0.0.0/0
重新启动电脑使配置生效。此时,你可以在局域网内部的一台电脑上将网关设置成192.168.0.1之后ping一下外部的任意一个IP地址,如:ping 204.71.200.74,反馈回响应时间就表示网络配置正确了。
二、通过ISDN上网
在后面的说明中,我们假定使用外置的ISDN设备上网,TA通过串口1(COM1)同服务器相连,同时我们也想让ISDN在空闲的时候可以断掉连接,而在有人访问Internet时可以自动的建立连接,无需人工干预。要做到这一点需要一个额外的软件diald,它的下载地址为:
ftp://ftp.interest.de/pub/redhat/contrib/libc6/i386/diald-0.16.5a-1.i386.rpm
ftp://ftp.interest.de/pub/redhat/contrib/libc6/i386/diald-config-0.16.5a-1.i386.rpm
之后你可以按如下步骤完成配置工作:
1.修改“/etc/rc.d/rc.local”以便每次系统启动之时执行透明网关的设置,需添加的内容如下:
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/depmod -a
/sbin/modprobe ppp
/sbin/modprobe bsd_comp
/sbin/modprobe ip_masq_ftp
/sbin/ipchains -A forward -j MASQ -s 192.168.0.0/24 -d 0.0.0.0/0
2.安装diald-0.16-5 rpm 包
# rpm -ivh diald-0.16-5a-1.i386.rpm
# rpm -ivh diald-config-0.16-5a-1.i386.rpm
3.拷贝“/etc/diald/diald.conf到/etc/diald.conf”,编辑“/etc/diald.conf”如下:
accept any 420 any
device /dev/ttyS0 # 串口1
speed 115200
lock
mode ppp
dynamic
local 192.168.0.1 #不需改变这两行,即使你的网络不用192.168.0.X网段
remote 192.168.0.2
up-delay 5
defaultroute
modem
crtscts
connect /etc/diald/connect
redial-timeout 10
fifo /etc/diald/diald.ctl
4.修改/etc/diald/connect文件,这里假设我们的ISDN拨号号码为169,用户名为169,密码为169,需要更改的参数如下:
PHONE_NUMBER=""169""
USER_NAME=""169""
PASSWORD=""169""
使用dialdc up进行测试,如果连接成功,就可以使用ntsysv命令将diald设置成在系统启动时自动运行。当局域网内的其他电脑发出连往外部IP的请求时,diald就会自动建立连接,由于ISDN可以很快建立连接,所以用户几乎察觉不到什么延迟。
三、使用普通电话线上网
使用普通电话线上网的配置同ISDN的设置几乎一样,我们使用的设备也是外置的Modem,连接在串口1上,不同的是使用Modem连接可能需要十几秒的时间,这可能会造成局域网用户的连接失败。Redhat有一个系统工具Linuxconf,使用它配置和管理拨号连接也比较方便,由于它可以通过Web访问,这就使远程管理拨号连接变得很容易了。下面做一个简单的介绍:
1.为了可以通过Web访问Linuxconf,我们必须打开这个功能,键入linuxconf,如果是第一运行会需要你确认一下。Linuxconf的各项管理功能按树形结构组织,我们需要作如下的选择:Config→Networking→Misc→Linuxconf network access,在出现的对话框中填写可通过Web访问的主机:
[X] Enable network access
Log access [X] in /var/log/htmlaccess.log
network or host 192.168.0.11
netmask(opt) 255.255.255.255
这里我们只允许192.168.0.11的工作站可以通过Web访问网关上的Linuxconf,你还可以增加其他可以访问的主机的IP地址。退出Linuxconf时请选择Activate the changes,以便设置生效。
2.在192.168.0.11上使用浏览器访问网关(http://192.168.0.1:98)可以看到Linuxconf的Web界面,点击start,在弹出的认证对话框中输入root用户和密码。
3.选择Networking→PPP/SLIP/PLIP,单击Add,选PPP,点Accept,根据你的ISP填写登录信息,例如:
Phone number 169
Modem port /dev/ttyS0/dev/ttyS1/dev/ttyS2
[ ]Use PAP authentication
Login name 169
Password 169
单击Accept。至此,你的拨号网络就设置完成了。
4.回到Linuxconf首页,选择Control panel→
Control PPP/SLIP/PLIP links→PPP0,此时点击yes,
将开始拨号,并连接到Internet,使整个局域网可以开始
访问Internet。
5.关闭连接只要回到PPP/SLIP/PLIP connection
Control页,选择ppp0,在提示是否中断连接时选择yes即可。