http://sery.blog.ccidnet.com/blog/ccid/uid_3587/dirid_1.html---佩服田逸
一招一式攻克linux之一
第一招 安装linux
关于windows与linux谁优谁劣的问题一直争论不休,也许,你在windows的世界中得心应手,但是,你也应该关注一下linux。这不仅仅是可以体验linux的强大功能,而且对于薪金的提升更有益处。我个人的观点是:服务器、还有那些为了节省成本而使用计算机做网关设备(路由器,防火墙,ids)尽可能的使用linux作为操作平台,桌面系统或者远程控制端(监控远程服务器)使用windows作为操作平台,这样折中一下,就很好了。对于很多人来说,他们对于linux依然很茫然,尽管他们曾经做过一些尝试。这可能是他们想努力的把linux当成桌面环境来使用或者在安装 linux是遇到麻烦而最终放弃努力。是的,我们使用windows作为日常工具也成习惯(我们用word编写项目方案,用 internet explorer浏览网页等等),如果一旦把系统换成linux,不知所措也是理所当然的。
首先应该解决一些认识上的误区:linux应该被用于服务器方面,linux的安装配置确实比windows要困难和复杂,但也没有想像的那么糟糕。克服困难的途径就是Do it yourself at once ---立马行动。笔者从事系统管理工作已经多年,对linux也有所涉猎,不敢说多有心得,权做抛砖引玉之用,把一些体会在此与大家交流。
要使用linux来为我们工作,第一步要做的事情就是安装linux到机器上,可是还是有很多尝试安装是失败的,以至于动摇了再次尝试的信心。希望初学者跟我一招一式的操作,定可顺利进行。
安装准备
1、 一套正版的redhat linux 9发行套件(大概68元)。
2、 一个专门用来安装linux系统的硬盘。很多失败和顾忌都源于这儿,欲在装有windows系统并且有用户数据的硬盘上安装linux ,对于生手来说,能放开手脚?
3、 一台基于intel 奔腾处理器或AMD处理器的pc或服务器。不要用intel 塞扬的处理器,这玩意性能差。
4、 一快流行的网卡或干脆花200多元买一块3COM网卡。
5、 一个读盘能力强的光盘驱动器。
6、 如果用服务器来安装linux,并且硬盘是SCSI接口的话,准备好随机附带的安装工具盘,可能 linux安装过程中需要SCSI控制器的驱动程序。
7、 足够的耐性。
一、从光盘安装Linux
开始安装
激动人心的时刻从这里开始,这里先进行最直接、最便捷的安装方法:从光盘安装,后面再介绍一种高级的安装方法。
1、 机器加电启动,进入BIOS设置引导设备为CD-ROM(与从光盘安装windows类似),第一张光盘放入光驱,系统开始从linux光盘引导,引导成功后出现redhat linux 9 的安装启动界面,屏幕显示提示信息和boot:提示符,按回车进入图形安装方式。
2、 选择安装语言,建议选 English,如果选择中文,那么在以后安装某些应用软件(如Sybase, Oracle)时出现乱码,从而影响软件的正常安装—比如你不能分辨“next”按钮是那一个。
3、 选择键盘,鼠标类型,就按“Next”就是。
4、 出现欢迎消息,按“Next”继续吧。
5、 询问是安装新系统还是更新系统?选全新安装,点击“next”。
6、 询问安装类型:工作站(workstation),服务器(server)还是定制安装(custom)?选中服务器(server),按“Next”继续。安装程序将所有的硬盘数据清除(如果存在的话),而后自动分区,把所有的硬盘空间分配给linux使用。Linux分区是一个让人迷惑的技术问题,用服务器(server)安装方式可让初学者顺利绕过这个麻烦。当然作为一名系统管理员,分区的知识仍然是需要牢固掌握的。
7、 安装引导工具LILO或GRUB,选默认值GRUB,按“Next”继续。
8、 配置网络。需要根据本网的实际情况填写主机名(hostname),IP地址,子网掩码,默认网关,DNS的IP地址。默认网关是一个很重要的参数,它的作用是要网关设备(通常是路由器)发送通告,表明自己在本网的存在。这类似与部队收发室的情形:我们要往外寄信,首先把信送到收发室(默认网关),收发室自己决定怎样处理信件;从外面寄来的信件,首先也被送到收发室(默认网关),然后收发室就会把信件转发到收信人那里。如果指定的默认网关不正确,就没法与外面的网络通信—收发室的人不认识你,那么你既不能发信,又不能收信。当然,即便在这儿填写错了,安装完后我们仍然有机会更改这些错误的,所以也不用过于担心。这一步本来的默认选择是自动获取IP地址,建议舍弃默认值。值得注意的是,如果这一步没有出现“network device”(网络设备)接口 “eth0”这样的状况,那么不幸的事情发生了:系统不识别硬件(系统不包含该网卡的驱动或者没有加载设备模块),这也是我推荐使用3COM网卡而不用杂牌网卡的原因。
9、 设置时区。用鼠标点一下世界地图上的中国某个区域就行,然后按“Next”继续。
10、 设置root口令。设置复杂的口令。
11、 添加用户,给该用户设置口令。按“Next”继续。
12、 选择欲安装的包。除了默认选中的包外,把x window system和图形化的浏览器工具选上。这对以后的操作非常有帮助。按“Next”继续。
13、 开始安装。点击“Next”。从这里开始很长一段时间,我们唯一可做的事情是等待和更换光盘。这个过程中,安装程序将从光盘上把相关文件复制到硬盘,创建文件系统并把我们选中的软件包安装在系统中。
14、 等待中......
15、 创建引导盘。既然有光盘就免了吧。可能有的软驱早退役了呢!
16、 选择显卡。系统回自动检测到显卡,按“Next”继续。
17、 选择显示器。鼠标点击“Next”就是了。
18、 选择定制X配制。实际上就是设置颜色和分辨率,选800*600后,按“Next”继续。
19、 选择用户登录方式。默认值是图形方式,选择文本登录方式。按“Next”继续。
20、 安装完毕。出现祝贺窗口。能顺利完成安装,当然是值得庆贺的事情。只有成功地完成linux安装,才可能进一步激发我们对linux的兴趣。鼠标点击“Next”,光盘从光驱中弹出,系统重启,安装完成。
21、 安装成功确认。系统重启,直到出现 login:,大功告成,接下来就是登录和使用linux了。
意外事故
有一些条件会阻止我们顺利安装,这些障碍是需要绕过或克服的。尽管我在前面安装准备部分为克服这些麻烦做过提示,可是同样的事情还是在发生。一种情形是,安装系统硬件检测过程找不到硬盘;这种情况主要发生在一些杂牌服务器/白牌服务器上,它的SCSI控制器不被识别所致,解决是使用随机安装光盘。另一种情况是安装过程出现文件错误,这是由于不能正确地从光盘复制数据/文件所致;所以选择一个好的光驱和正版的Redht linux 9套件/复制品 也是十分重要的。使用旧的版本安装在较新配置的机器也是一个让你发生意外的因素,比如/boot分区大小不能超过1024扇区,或者不能识别显卡等,别保守,用新的版本吧!
二、高级安装:PXE安装 Linux
前面介绍了从CD-ROM安装Linux这种最便捷、最直接的操作方法,但是,如果一旦遭遇需要同时安装linux系统到多台计算机上,那么我们应该选择一种更高效的安装方式。PXE是其中的一种选择。
PEX—Pre-boot Execution Environment协议可以使计算机通过网络引导启动。把安装盘的内容复制到某台服务器,欲安装linux的计算机通过网络实现多机同时安装。下面是基本原理图:
这个过程与以前称作“无盘工作站”的模式十分类似。说理论不太有趣,那我们就拿刚才用光盘安装好的那台Linux做安装服务器,同时充当TFTP和DHCP服务器的角色,另拨一台符合安装条件的机器(“安装准备”所列条款)通过PEX方式来完成linux的安装。不过这还需要一个先决条件,就是网卡一定要支持从网络启动这个功能—3COM 3C509 系列网卡可以看到一个与主板BIOS形状相似的ROM芯片。下面我们分几步来完成整个安装。
(一) 配置安装服务器
1、 以root登录安装服务器,用命令 rpm –qa | grep tftp 查看是否安装了tftp软件包,如果没有,安装一下(安装软件的方法将在后面的文章中详细介绍)。
2、 修改tftp的配置文件,使tftp服务可以随linux开机启动(开机启动这个服务不是必须的)。用命令vi /etc/xinetd.d/tftp 将文件/etc/xinetd.d/tftp其中的一句 disable=yes 改成 disable=no。
3、 准备内核、PEX配置文件以及linux根文件系统。分成两个步骤:①准备PEX配置文件—创建目录/tftpboot/pxelinux.cfg,然后复制第1张安装光盘/isolinux目录里的文件isolinux.cfg和*.msg到目录/tftpboot/pexlinux.cfg,把文件/tftpboot/pxelinux.cfg/isolinux.cfg改名为/tftpboot/isolinux.cfg/default;复制文件/usr/lib/syslinux/pxelinux.0到目录/tftpboot。②准备内核和根文件系统—复制第1张安装光盘/images/pxeboot目录里的两个文件vmlinuz(内核)和initrd.img(根文件系统)到目录/ tftpboot中。
/tftpboot
pxelinux.0 pxelinux.cfg vmlinuz initrd.img
default(isolinux.cfg) /tftpboot目录示意图 |
4、 配置dhcp服务器。使用命令 vi /etc/dhcpd.conf 修改文件/etc/dhcpd.conf,把下面两行插入到文件中,而后保存:
filename “pxelinix.0” next-sever 192.168.100.100 //本安装服务器的ip地址,即tftp服务器的ip地址 |
5、分别启动dhcp和tftp服务。用命令 service dhcpd start 启动dhcp服务,用service xinetd restart 启动tftp服务。
(二) 准备ftp服务器
还是用这台安装服务器做ftp服务器。在RedHat linux 9上配置ftp服务器是非常简单的事情:添加一个系统账号和启用ftp服务就完事了。
localhost# useradd sery //添加用户sery localhost# passwd sery //给用户sery设置登录密码
|
localhost# start vsftpd start //启动ftp服务 |
但这只是一个空的ftp服务器,为了符合我们的安装任务,需要把3张安装光盘的所有目录/文件复制到sery用户的ftp 的指定目录。以root权限建立目录 mkdir /home/sery/linuxsetup,然后把RedHat 9的三张光盘按光盘的根目录拷贝文件和目录到目录home/sery/linuxsetup,在拷贝第二和第三张光盘是会提示目录里有相同的文件夹或文件,问是否覆盖,回答yes即可,复制完成后重启一下ftp, # service vsftpd restart。
(三) 安装linux
启动要安装linux的计算机,通过更改CMOS的值设置机器从PXE引导,如果网络与前面的dhcp、和tftp都正常工作的话,几秒钟时间就会出现我们一直期待的boot:提示符,输入命令 linux askmethod回车……设置ip地址的获取方式为DHCP,……选择安装源为FTP,屏幕提示输入ftp服务器的ip地址(手动输入 192.168.100.100),选中复选框 “非匿名用户”,输入用户名“sery”密码“******”和安装文件目录“/linuxsetup”,按“Next”继续。接下来的过程与从光盘安装基本一致,只是没有图形安装界面而已。经历比从光盘安装少很多的时间完成整个安装。
一招一式攻克linux之二
第二招 基本配置,基本操作,必须掌握的命令
通过第一招的实践,我们已经可以顺利的安装好linux操作系统,这仅仅是工作的一小部分,现在最迫不及待的事情就是使用这个系统。打开安装好linux操作系统计算机的电源,让机器正常引导,待系统引导完毕,我们的第一个操作---登录开始了;在这一步,能执行的任务就是输入用户名root和初始安装时设定的密码,一旦输入无误,便可取得操作整个计算机的所有权限,开始了挑战Linux的艰难之旅。
超级用户账号密码
为安全起见,需要定期更改超级用户root的密码。这个操作十分简单,在shell提示符#后输入 passwd回车,然后两次输入新密码即可。退出root登录,然后再次登录,检验密码修改是否正确。然而不幸的事情还是偶尔会发生,刚才更改的密码记不清楚了,root用户登录不了,急人啦,难道还要重装linux操作系统?如果你还想尝试一遍安装操作,本是无可厚非的,但这并不是一个好主意,特别是在硬盘上存储很多重要数据的情形下。请参照下面的操作来解决这个问题:
1、 手动重启系统:按计算机复位键或先关闭计算机在开启。
2、 当引系统到达“引导加载程序(选择欲启动的操作系统)”GRUB时(redhat 9在安装的时候,我们默认安装的引导程序是 GRUB),按键盘字母“e”键,如果硬盘上安装多个操作系统的话,还需要用箭头选中linux 启动条目。将看到如下几行文本(为节省篇幅,多余的文本省略了)
root (hd0,4) kernel /boot/vmlinuz-2.4.20-8 ro root=LABLE/ hdc=ide-scsi initrd /boot/initrd-2.4.20-8.img |
3、 把 “kernel /boot/vmlinuz-2.4.20-8 ro root=LABLE/ hdc=ide-scsi” 改成 “kernel /boot/vmlinuz-2.4.28 single root=LABLE/ hdc=ide-scsi”后按回车键,返回编辑屏幕。
4、 按“b”键使用上面更改后的选项引导计算机,这样计算机就进入单用户模式(运行级别1)而不用输入用户名和密码登录。
5、 输入命令passwd回车,两次输入新口令,然后小心保存。关于口令设置的建议有很多,可以根据自己的情况设置复杂口令。
6、 再次重启计算机,这时便可顺利使用新密码进入系统了。
这个操作对于管理员来讲,是十分有用的,但是如果这个服务器运行的是关键应用,那么应当把它锁在机柜里,因为不是公司聘用的非管理员也能够替你执行这个操作,很危险的。
用户账号
有句名言叫“linux就是网络”,这就意味着linux系统不是系统管理员一个人把玩的,有太多的理由让更多的人来使用这个资源。刚安装完的linux系统,只有一个用户root;没有任何责任让其他仅需使用一部分功能的人来共享root账号和密码。既然如此,给要用计算机资源的人开设账号吧。
1、 开设账号:在命令提示符输入 #useradd sery 就可以成功的添加账号sery,用命令#passwd sery 来给账号sery 设置密码。通过这种方式添加的账号的主目录将是/home/sery, sery用户的环境变量.bash_profile在目录 /home/sery中。也可以指定用户的主目录,例如我们要安装数据库软件sybase ASE,需要指定它的主目录为/opt/sybase,通过输入命令#useradd –d /opt/sybase sybse 就可以了,这样sybase用户的环境变量路径也变成 /opt/sybase/.bash_profile。可以把一些用户添加到一个组了,以满足特定的功能。上面开设的两个账号,默认产生两个组sery和sybase。
2、 更改账号:某天,公司的sery离职了,由新来的tieny接替他的工作,可以用命令#usermod –l tieny –m –d /home/tieny sery来实现。当然还应当把口令也改一下。
3、 删除账号:sery由于工作不力,被老板开除了,那么作为系统管理员应当把他的账号删除,先删除账号#userdel sery,然后还要删除sery用户的主目录/home/sery。
需要注意的是,上述的账号操作,只有具备管理员权限的用户(比如root)才可以进行的,普通用户仅仅能更改自己的密码而已。
文本编辑器vi
要使用Unix/linux来完成工作,你没有办法来回避使用文本编辑器这个工具。在unix/linux的世界里,vi是赫赫有名的,ibm的AIX、SUN的Solaris、SCO UNIX、RedHat Linux等等,没有一个不用vi 这个编辑工具的。因此,作为unix/linux系统管理员,必须熟练掌握这个基本技能。
vi文本编辑器打开以后,有两种模式:命令模式和输入(或者编辑)模式。在使用过程中,这两种模式是需要来回相互切换的,初学者对此往往感到迷惑,下面举一个例子来说明一下:
我们在此要把计算机的主机名改成sery,那么就用vi编辑器修改配置文件/etc/hosts文件。输入命令 #vi /etc/hosts 回车,立刻进入vi的命令模式。在这种模式下,可以进行查找、保存文件等操作,按字母“i”键切换到编辑模式---屏幕底部显示“Insert”,然后光标定位,输入相关的字符;输入完毕并检查无误后,按“Esc”键切换到命令模式,接着输入“:”加wq回车就把刚才的输入保存在文件/etc/hosts里。整个过程总结一下流程就是:vi filename 打开文件---切换到编辑模式(“i”)----输入文本----切换到命令模式(“Esc” ,“:”)----保存文件(wq)。
[root@sybase root]# vi /etc/hosts
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost //按i切换编辑模式
202.108.93.200 sery //这行是加上去的 //按Esc键回到命令模式,再输入“:” :wq //保存文件退出 |
有时,文件修改后不想保存它,则在命令模式下输入“:q!”,如果只是打开文件而没有做任何修改,在命令模式下输入“:q”就可以了。有一个技巧还是需要掌握的,那就是在文件中查找字符。编辑一个小的文件(字符数不多)用光标定位就可以完成修改,但是如果要编辑的一个文件较大,例如修改Apache的配置文件,根据实际应用,我们仅需对/etc/httpd/conf/httpd.conf做少许修改就可以了,假如用光标定位的方法来做这个事情,恐怕是一件很费时的事,这时,查找定位这个功能就派上用场了。查找是在命令模式下进行的,这一点要记牢。在apache的配置文件里,我们要修改根文档的位置,首先使用#vi /etc/httpd/conf/httpd.conf打开文件进入命令模式,然后输入“?DocumentRoot”很快就可定位输入点,接着按“i”切换到编辑模式,按要求修改文本,而后切换到命令模式保存退出。查找方式也是很灵活的,根据当前光标所在的位置,既可以向后查找,有可以向前查找,不过向前查找开始字符是“/”而不是“?”。vi的功能特别多,在此无法一一列举,不过笔者介绍的方法已经足以对付日常的工作,随着时间的推移,你同样会逐步掌握更多的 vi 使用技能。随着linux版本不断的升级,vi也越来越便于使用,例如在linux桌面环境下,可以用鼠标选定文本,然后使用复制功能来简化操作。
配置网络参数
如果linux服务器不连入网络,除了供管理员测试而外,再没有别的实际意义,因此把linux服务器连入网络就是必须的了。在第一招安装linux时,我们已经把网络的一些参数手动输入了,但是有时还得在实际应用中更改某些参数。网络参数主要包括:IP地址、子网掩码、默认网关和指定dns服务器。IP地址、子网掩码、默认网关由文件/etc/sysconfig/network-scripts/ifcfg-eth0来指定。用编辑器 vi 打开/etc/sysconfig/network-scripts/ifcfg-eth0,修改对应的值,我本人习惯把默认网关加在这个文件里,即在这个文件里插入一行“GATEWAY=X.X.X.X”。默认网关是个非常重要的设置,如果设置错误,linux服务器就只能访问同一网段的主机而不能与其他网段的计算机互访尽管其他的网络参数设置完全无误。我曾有意无意的犯过这个错误,结果每次都是一样让人沮丧。在讲授网络的课程里,默认网关被定义成一个三层设备,讲得通俗一点就是路由器,它的作用是连接不同网段/子网的通信,它记录与它某一端口直连的同一网段的机器mac与ip地址对应值(称为ARP)。路由器/网关不会自动获得同一网段主机的mac-ip值,只有通过手动指定默认网关把主机的mac-ip值通告给网关。指定dns服务器地址可以让linux服务器以域名的方式访问互联网上的其他机器。指定域名服务器地址过程很简单,只需用vi编辑文件/etc/resolve.conf,输入 nameserver 202.106.0.20 保存退出。需要特别注意的是,不要把指定dns服务器与设定本linux服务器为dns服务器搞混了,这是两个完全不同的东西:前者为客户端,后者为服务器端。
还有一种特殊情况,在只有一个网络设备的条件下,我们需要设置几个IP地址,比如基于IP地址的虚拟主机。这种操作称为设备别名。eth0的第一个别名是/etc/sysconfig/network-scripts/ifcfg-eth0:1,用编辑器vi参照/etc/sysconfig/network-scripts/ifcfg-eth0的格式输入网络参数即可。
在系统提示符下,用命令#ifconfig eth0 200.200.200.200 255.255.255.248 up也可指定或修改网络设备的网络参数。但是这种修改方式是动态进行的,系统重启以后就无效了。以命令#route add default gw X.X.X.X 添加的默认网关也是同样的效果。
修改网络参数后,要使修改立即生效,不需要重启计算机,重新启动网络服务就可以了。在RedHat linux 9以后的版本,只要输入命令#service network restart即可,然后用命令#ifconfig –a来检验修改的结果。
修改网络参数需要管理员权限才能进行。
文件系统和原始设备
在这里介绍文件系统和原始设备( raw device)的目的主要是为将来安装大型数据库oracle或sybase奠定一些基础,因为这些数据库可以使用文件系统或原始设备作为逻辑存储区域。
文件系统是一种存储数据的方法,采用分层目录结构来存储文件,由一个根目录和许多子目录、文件组成(IBM AIX 5L系统管理技术定义)。Redhat linux 9主要包括以下一些目录:
1、/bin:linux通用命令。
2、/dev:系统设备文件。
3、/etc:管理配置文件。
4、/home:各用户的目录。
5、/mnt:挂接设备的位置。
6、/root:根用户的主目录。
7、/sbin:系统管理命令和守护进程。
8、/tmp:临时文件目录。
9、/var:应用程序使用的数据目录,如系统日志文件目录、匿名ftp目录等。
10、/usr:手动安装程序的目录。
对于文件系统的目录及其目录下的文件,我们可以直接进行访问,例如在/tmp下创建目录/tmp/test。
原始设备指不是由基础操作系统可以管理的磁盘,这句话不太好理解。给linux服务器添加一个硬盘,创建分区,但是不能直接用基本命令对这个分区进行操作,比如直接在上面创建目录,只有通过挂接才可以进行磁盘I/O操作。例子的命令:#mount /dev/sdb1 /mnt/dsk2, cd /mnt/dsk2,在这个目录下就可以创建文件等基本操作了。Sybase等数据库可以直接指定原始设备为存储空间,其目的是使数据的修改立即写入磁盘。
运行级别
RedHat linux 有0-6等几种运行级别。与solaris和AIX的运行级别的定义差异较大。按照前面安装linux的设定,系统启动后进入的运行级别是3。要切换到别的运行环境只需输入#init
1、 运行级别0:关机操作。
2、 运行级别1:单用户维护模式。这种模式只能是用户root,上文我们更改遗忘的 root 密码就是在这种模式下进行的。另外,有时文件系统损坏时进行修复,也要在这种模式下进行。运行级别1相当与MS windows 2000的安全模式。
3、 运行级别2:多用户模式。所有配置文件系统被挂装,但NFS资源不可用。运行级别2与MS windows 2000的带网络的安全模式有些类似。
4、 运行级别3:这是linux服务器的正常模式,系统资源完全可用。
5、 运行级别4:用户自定义。
6、 运行级别5:多用户带网络服务加图形界面(init 3加图形)。这相当于MS windows的正常模式。如果没有安装xwindow就不能启用这个级别,用命令#startx也可从运行级别3切换到运行级别5。
7、 运行级别6:重新启动计算机。
在一般情况下,我们需要linux服务器工作在运行级别3下,偶尔为了操作方便会使用5这个级别。Linux还有另外一些运行级别,但不多用。熟练掌握上述几个运行级别对于系统维护是很有帮助的。
远程操作linux服务器
linux服务器基本配置完成后,需要把它撤离测试台,也许要把它放在隔自己办公室很远的idc机房,或者由于同事无法忍受机器巨大的噪音而必须把它放在某个隔离的小房间的机柜里。我们更愿意坐在自己的办公桌前,用桌面系统或笔记本来远程控制和操作放在在某个地方的linux服务器,然后惬意的喝一杯咖啡。
telnet曾作为最主要的远程管理工具,由于其存在安全隐患而逐渐失宠,从RedHat linux 7.1开始,默认情况下 telnet 服务是不启用的。安全shell包(ssh)由于它提供对数据的加密传输,具备较高的安全特性,因此越来越多的系统管理员正在在使用ssh来管理远程的 linux服务器。
要使用ssh服务,应当保证openssh-server软件包被安装,一般情况下,ssh服务器被配置成自动启动,在 linux服务器端,不必对ssh做任何设置,只需保证它被安装和启动就可以了。RedHat linux 允许root用户远程登录,而RedFlag linux则在默认情况下不允许root 用户远程登录。可通过修改文件 /etc/sshd/sshd_config,“PermitRootLogin no”表示不允许root用户远程登录,“PermitRootLogin yes”表示允许root用户远程登陆。我本人习惯使用root远程登录。
1、 从linux连接:输入命令#ssh <远程linux服务器的ip地址或域名>,回车后输入 root密码就可以得到root的shell环境,与直接操作linux服务器一样。
2、 从windows连接:有多款用来连接linux服务器的远程管理工具,比较有名的有SecureCRT、NetTerm、XManager、Putty等。SecureCRT是个不错的工具,它不仅支持ssh,还支持文件上传功能。Windows下配置SecureCRT是比较容易的,在此不做介绍。
一招一式攻克linux之三
第三招 linux下软件的安装
在linux系统上安装软件是不可避免的事情,尽管我们在安装操作系统时已经默认安装了一些应用软件如apache、vsftpd等。为了让linux服务器按我们的意图工作,我们可能需要购买、下载或自行开发相关的应用程序,然后把它正确的安装到linux服务器系统里。相对于windows的应用程序而言,linux应用软件的安装方法要繁杂一些,因为windows软件安装工作的大部分操作就是用鼠标点击“下一步”或“确定”,然而linux应用软件的安装确是五花八门,毫无定势。即便如此,linux应用软件的安装还是有章可循的,在本节里,我将向大家总结几种常用的linux应用软件的安装之法。
安装前的准备:要安装linux应用程序,需要把安装程序或安装包复制到linux服务器的硬盘上,然后再执行安装。如果欲安装的应用程序需要从网站下载,那么最好先用windows的机器下载,然后用远程管理工具SecureCRT把软件压缩包传输到linux服务器的硬盘。
一、 RMP包的安装
Rpm包是一种为产生软件套件有RedHat 开发的软件包格式。它可用于许多GUN/linux发行版本上,例如RedFlag linux。安装RPM形式的软件包很简单,下面以一个安装实例来说明:
1、 命令行下安装。这里我们安装一个基于web的远程管理工具webmin.先检查包文件webmin-1.110-noarch.rpm,确保根用户具有执行权限,然后执行命令 # rpm –ivh webmin-1.110-noarch.rpm ,按照提示就可以顺利完成安装。
2、 图形方式下安装。这与安装windows的应用程序相当,用鼠标双击欲安装的RPM包webmin-1.110.noarch.rpm图标,然后根据提示也可顺利完成安装。另外一个安装方法是启用RPM包管理器,然后选取欲安装的RPM包,这种方式也是很方便的。
有时候,我们并不能顺利的进行RPM包的安装,其中一个最大的障碍就是包的依赖关系,换言之,这个包的安装还需要另外的包被安装到系统。一个经验是在安装linux操作系统的时候,尽可能多的安装一些包,比如gcc、gcc+等。如果不怕麻烦,可以选择安装所有的包。还有一个避免措施是安装较新的linux发行版本,因为新版本默认安装包含更多的库和编译器(情况也不完全如此,有的软件包可能需要旧版本的库或编译器)。另外一个引起安装失败的原因是RPM数据库损坏,这是一种不太常见的故障,可以通过修复RPM数据库来解决这个问题-输入命令# rm –f /var/lib/rpm/_db.* 删除RPM数据库,再执行命令 # rpm –vv - -rebuilddb来重建rpm数据库。
RPM包格式的软件另外一个方便之处是软件升级,当有新的版本时,可以直接升级旧的版本。在命令行下,执行 # rpm –Uvh
命令 # rpm –e <软件包> -nodeps 用来删除一个已安装的软件包,查看某个软件是否被安装到系统,用命令# rpm –qa | grep <软件包> 察看某个软件包是否被安装在linux 服务器上。
二、 SRMP包的安装
SRMP这种安装方式应用场合不是太多。欲安装的软件包没有二进制版本或者想按照自己的意愿来安装软件包的时候,就需要使用源代码包来进行。按下面的步骤就可以容易的完成SRPM包的安装:
1、 下载或拷贝SRPM到硬盘。这儿笔者以cpio-2.5-6.src.rpm为例,把这个文件拷贝目录/tmp/upload下。
2、 安装文件cpio-2.5-6.src.rpm,以根用户(root)执行命令 # rpm –ivh cpio-2.5-6.src.rpm, 完成后在目录/usr/src/redhat/SPEC生成文件cpio.spec.
3、 进入目录/usr/src/redhat/SPEC,运行命令 # rpm –bb cpio.spec,执行完毕后在目录/usr/src/redhat/RPMS/i386下生成文件cpio-2.5-6.rpm.
三、 Gzip/tar软件包的安装
这是linux下最普遍的安装方式。以个人的理解是gzip/tar包似乎比rpm包容易获取,以为很大一部分软件都是以gzip/tar的形式提供下载的。以下面的基本步骤来完成 gzip/tar 软件的安装:
1、 从网络下载或从光盘复制gzip/tar文件到硬盘某个目录。在这里以php-5.0.4.tar.gz为例,笔者把文件php-5.0.4.tar.gz复制到目录/root/upload,修改文件属性 # chmod 700 php-5.0.4.tar.gz。
2、 运行命令 # tar –zxvf php-5.0.4.tar.gz 解压完成后生成目录php-5.0.4,相关的目录和文件都在php-5.0.4下。
3、 进入目录php-5.0.4,察看文件INSTALL获得在linux平台下的安装方法。
4、 运行命令 # ./configure --prefix=/usr/local/php 配置安装环境,参数--prefix=/usr/php的作用是为php的安装指定目录,编译过程是一个异常复杂的行为,也是很灵活的一个功能,比如可以使用 --with-apxs=/usr/local/apache/bin/apxs让php与apache整合起来。配置过程中可以使用很多的参数值,这相对与ms-windows来讲就自由多了。
5、 编译和安装。配置成功完成后,就可以进行编译安装,通常是用命令 # make 和 # make install。
6、 清理安装的临时文件和卸载文件。清除临时文件 # make clear , 卸载软件 # make uninstall 或者删除安装目录 /usr/local/php.
四、 其他类型的安装方法
第一类:二进制文件。只需直接执行文件就行了,如j2sdk-1.4.2-01-linux-i586-rpm.bin,运行命令# ./j2sdk-1.4.2-01-linux-i586-rpm.bin(需要执行权限),然后接着往下完成安装。这个例子运行后生成文件j2sdk-1.4.2-01-linux-i586-rpm,参照标准的rpm包的方式完成安装。
第二类:带安装脚本的压缩包。把包解压后,运行目录里的安装脚本进行安装。这里举两个例子——webmin和Sybase ASE 12.5_3,从网上下载webmin-1.240.tar.gz 和 ase1253esd1xe_linux.tar.gz , 然后分别解压 # tar --zxvf webmin-1.240.tar.gz , 进入目录webmin-1.240 , 通过阅读README文件得知安装方法是运行安装脚本 # ./setup.sh,按照给出的提示便可完成安装;运行命令 # tar –zxvf w ase1253esdlxe_linux.tar.gz 后,生成安装脚本setup.sh和一大堆目录和文件,不过Sybase没有给出INSTALL或README文件,这里就是运行# ./setup.sh进行安装。
没有办法把所有的软件安装方法都列举出来,但是一般而言,软件的开发者都会给出安装方法——通过阅读README或INSTALL文件获得。对于初学者而言,使用rpm包可能要容易一些,但是,如果要真正地掌握linux,体验开放系统的自由和随心所欲,源码安装是不可回避的。
安装软件是系统管理员的日常工作,绝大多数软件的安装还是很容易的,只要你耐心的阅读README或INSTALL文件就可完成安装工作,至于象Oracle、Sybase那样的大型软件,对于初学者就是一场艰难之旅,这就需要我们花更多的时间来熟悉linux和软件本身,等到可以顺利的安装这些大型软件的时候,你就是一名合格的linux系统管理员了。
一招一式攻克linux之四
第四招 linux下的文件服务器
对于一个真实的运行环境而言,配置和启用文件服务器都是很有必要的。把重要的数据集中存储和管理,其安全性显然比分布存储要可靠得多。为此,建议系统管理员配制和启用文件服务器作为基本的管理策略。
根据使用的方式来看,可以分为3种类别的文件服务器:ftp服务器(ftp/tftp)、 Samba服务器、NFS服务器。ftp的客户可以是任意平台,samba是专门针对windows客户,而NFS则是面向linux/unix用户的。下面是三种服务器的对比情况:
服务器名称 |
用户客户端平台 |
使用范围 |
服务端口 |
FTP |
Windows/linux/unix/macOS等 |
发布网站,文件共享 |
Tcp/21 |
Samba |
Windows |
文件共享(网上邻居) |
Tcp/445,tcp/139 |
NFS |
Linux/unix |
网站发布,文件共享(mount) |
Tcp/2049 |
接下来我们就逐个来配置和运行这些服务器。
NFS服务器
NFS是SUN Microsystem公司开发的网络文件系统,它是一种基于远程过程调用(RPC)的分布式文件系统架构。与Samba相比较,NFS的数据吞吐能力更强。
1、 用命令 # rpm –qa | grep nfs检查软件包NFS是否安装 ,如果输出没有输出,表明没有被安装,请自行安装之。
2、 配置NFS服务器。用任何文本编辑器配置文件/etc/exports,来确定需要给客户共享的目录。它的基本格式为 Directory Host(options) # comments ,这3个字段/列要在一行,directory与host(options)之间要有间隙,# comments 可有可无。主机选项主要是给与挂接用户什么样的权限。目录directory表示要共享出去的目录,值得注意的是,在启用NFS服务以前,系统管理员应该仔细一些,比如不小心共享了根目录/,并且给与用户读写权限,这是十分糟糕的问题。因此,尽可能少的共享目录和赋予较小的访问权限。主机名host是一个很灵活的项目,可以是单个的主机名称(由/etc/hosts得到),主机ip地址,由域名服务器解析的主机名称,IP网络---网络号和子网掩码中间用“/”连接,NIC等。下面列举一个例子。
/home/sery sery(r,w) #把目录/home/sery共享给主机sery,并且主机对目录#/home/sery有读写权限 /tmp 192.168.100.18(ro) #主机192.168.100.18对目录/tmp具备只读共#享权限 /media/cdrom 192.168.100.0/255.255.255.0(r,o) #整个网络有读取挂接在NFS #服务器上的光驱光盘的读取权限 |
3、 启用NFS服务。分两步:首先启用portmap,然后启用NFS服务。# service portmap start;
# service nfs start。其中portmap的功能是启用远程过程调用,有时启用NFS不能成功,不妨检查一下portmap服务是否启动(# ps aux | grep portmap)。
4、 在客户端挂接NFS共享出来的目录。先在客户端创建一个挂接点,如 # mkdir /mnt/nfs ,而后使用命令把nfs服务器共享出来的目录挂接上,以第2步那个共享为例,我们挂接目录 /tmp , # mount –t nfs 192.168.100.100:/tmp /mnt/nfs //假定nfs服务器的ip地址是192.168.100.100。
5、 访问NFS共享资源。接上步,改变文件目录 # cd /mnt/nfs就方便地实现了对nfs服务器目录/tmp的远程访问。
6、 卸载NFS文件系统。在客户端执行命令 # umount /mnt/nfs 就卸下了第4步挂接的NFS文件系统。
7、 其他事项。前面我们描述了在客户段用手工挂接NFS文件系统的操作,有的场合可能需要自动实现对NFS的挂接操作;修改文件/etc/fstab,把挂接项插入进去就可以了。对一个有较多连接的NFS服务器而言,有这样一个问题---用户在使用完挂接的文件系统后,并不会总记得卸载掉NFS挂接,这必然会增大NFS服务器的维护工作量以及白白占用有限的系统和网络资源;解决这个问题的办法是使用自动挂接器(automounter)。关于自动挂接器属于性能调优的范畴,在此不做描述。
Samba服务器
这个世界既非只有linux/unix,也不是由microsoft windows 独霸天下的格局。也许出于linux/unix与windows既竞争又共存的事实,人们开发了 linux给windows用户提供文件共享的工具Samba,这应该算得上linux的开放精神吧!
1、 检查是否安装samba软件包。# rpm –qa | grep smb ,如果没有则自行安装samba。
2、 修改配置文件/etc/samba/smb.conf。早期的linux版本的配置文件smb.conf的安全选项“security=share”,这个默认值是个安全隐患,不过现在流行的linux版本的安全选项的默认值是“security=user”。如果只想用户对他的目录拥有只读权限,就把选项“writeable=yes”改成“read only=yes”。其他的选项根据自己的要求更改即可。对于一般的应用而言,基本上不用修改这个文件。
3、 添加系统账户。由于smb的访问是使用系统账号进行的,因此添加账号是必不可少的。这个比较简单,用命令 # useradd sery , # passwd sery,就可以依次添加若干系统账号。
4、 建立Samba用户密码文件。虽然samba的用户是系统用户,但出于安全考虑,samba用户的密码并非创建系统用户时设定的用户密码。为了生成smb所需的密码,应该进行下面的操作:
# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd # smbpasswd sery //为系统用户设置smb口令 # chown root.root /etc/samba/smbpasswd # chmod 600 /etc/samba/smbpasswd //不准别的用户访问 |
5、 启用Samba服务器。我比较喜欢用 # service smb start 这种方式。
6、 检查服务是否正常启动。# service smb status 或者 # ps aux | grep smb。
7、 windows客户端访问 Samba服务器共享目录。在windows环境下,右键点击“网上邻居”图标,然后左击“搜索计算机”,把Samba服务器的IP地址填写在“计算机名”搜索栏,点击立即搜索。找到后双击图标,然后输入在Samba服务器上预先设定的用户名和密码,就能合法访问Samba服务器设定的共享资源。为了方便使用,可以把Samba服务器提供的共享目录映射成本地驱动器。
8、 其他。上述配置的samba服务器,用户的访问共享目录是系统账号的主目录。要想把共享目录设置到其他位置,修改Samba 的配置文件/etc/samba/smb.conf文件即可。
FTP服务器
在linux 环境下,有三个主要的FTP服务器:vsftpd、proftpd和wu-ftpd。因为安全方面的原因,vsftpd目前已经牢牢的占据了主导地位。从字面上我们就可以理解vsftpd所具备的主要特征---very secure(非常安全之ftp)。资料表明:1、使用ASCII方式下载文件,在1G以太网上的下载速度可以达到86M/s。2、vsftpd可以支持15000个并发用户的访问。
1、 检查是否安装vsftp包。# rpm –qa | grep vsftpd。如果没有则安装它。
2、 修改配置文件。Vsftpd的配置文件为/etc/vsftpd/vsftpd.conf,如果不打算提供匿名访问的话,需要修改配置文件/etc/vsftpd/vsftpd.conf的项“anonymous_enable=Yes”为“anonymous_enable=No”。
3、 启用vsftpd服务。#service vsftpd start。
4、 客户端连接访问。可以是专用的ftp客户端工具,也可以使用浏览器。用工具访问vsftpd服务器的速度要比用浏览器快很多。
5、 vsftpd服务器的用户。Vsftpd服务器支持三种类型的拥护:本地用户(拥有系统账号)、虚拟用户(guest)、匿名账号;系统管理员应该根据安全需求来确定vsftpd服务器的用户访问策略。
TFTP服务器
Tftp服务器主要用于远程系统引导或远程备份象CISCO这样的网络设备的配置文件,例如tftp服务器与DHCP、FTP服务器相配合,就可以成为一组linux安装服务器,以利于进行大规模的网络安装linux操作系统。
与上文提及的几种服务器不同,tftp服务器是由超级守护进程xinetd运行的。这使的tftp服务器的配置操作比独立运行守护进程的服务器(如vsftpd)简单很多。一般情况下,只要修改文件/etc/xinetd.d/tftp,把“disable =yes” 改成 “disable =no”,而后保存重新启动超级守护进程xinetd , # service xinetd restart 。
通过上面的实践,尽管我们已经能够顺利的完成各种文件服务器的搭建和运行,也基本上可以满足基本的用户服务需求,也许在实际的工作中,可能有更多的性能或安全要求。一个明显的例子就是,如果一个用户的服务器使用的磁盘空间没有做任何限制,那么他完全有可能把他从internet下载的连续剧上传到他自己的文件服务器目录,从而把有限空间的硬盘塞满。另外一个就是目录和文件的权限问题,特别是以本地账号(系统账号)访问文件服务器的情况,如果授权不当,将给系统管理带来极大的麻烦。
Linux所倡导的自由精神也同样在这些服务器的配置操作中得以体现。可以通过修改这些服务器的配置文件来满足特定的需求,而且这些修改是非常灵活的。比如vsftpd服务器的配置文件/etc/vsftpd/vsftpd.conf就有很多项目可以修改。
附表:几种文件服务器的维护
服务器名称
|
启动脚本
|
守护进程
|
配置文件
|
NFS |
/etc/init.d/nfs /etc/init.d/nfslock |
/usr/sbin/rpc.nfsd /usr/sbin/rpc.mountd |
/etc/exports |
Samba |
/etc/init.d/smb /etc/init.d/winbind |
/usr/sbin/smbd /usr/sbin/nmbd |
/etc/samba/smb.conf |
vsftpd |
/etc/xinetd.d/vsftpd |
/usr/sbin/vsftpd |
/etc/vsftpd/vsftpd.conf |
一招一式攻克linux之五
Web服务器Apache
相信使用过计算机的人,都应该有过访问web服务器的经历。在网站浏览新闻、登录邮件服务器收发邮件、通过网络购物、以浏览器方式配置防火墙等等,无一例外都有一个web服务器在为访问者提供服务。尽管有别的方式来实现对设备或服务的访问(如配置卫星调制解调器),但以web方式提供访问的策略依然是最受欢迎的,因为它更直观,也更方便。也是因为这样,是的web服务器得以更广泛的流行。
Apache是linux主流的服务器,为linux的迅速繁荣立下汗马功劳。根据资料显示,截至2005年12月,在internet上,Apache服务器以70.98%的绝对优势雄居web服务器之首。在这节内容中,我们就话花些时间来讨论linux下大名鼎鼎的web服务器Apache。请初学者注意,不要花费心思去搜寻名字为apache这样的软件包,它现在的名字是httpd。
Apache 服务器的安装
有两种安装apache服务器的机会:安装linux操作系统的时候选择安装web服务器和安装完系统后安装apache服务器。如果是在安装linux操作系统期间没有安装apache,这就需要使用包文件来安装。一个运行着的系统,你怎么知道它装没装apache服务器?用下面这个命令来检查 # rpm –qa | grep httpd ,如果没有输出,则表明没有安装。下图是某个安装了Apache服务器输出的一个输出范例。
提示:如果是以源码安装的apache服务器,则此种方法无效,需要用find工具查找httpd文件是否存在。
1、RPM包的安装。Linux的安装光盘和互联网上,都可以得到apache的RPM安装包,然后把安装包复制到硬盘,并切换到安装包文件所在的目录。本案以httpd-2.0.52-9.ent.rpm为例,执行命令 # rpm –ivh httpd-2.0.52-9.ent.rpm ,然后再执行 # rpm –ivh httpd-manual-2.0.52-9.ent.rpm 把手册也安装上去。
2、源码安装。到网站www.apache.org下载欲安装的版本,笔者喜欢尝试最新的版本,当前的最新有效版本为httpd-2.2.0.tar.gz 。在httpd-2.2.0.tar.gz 文件所在的当前目录解压文件 # tar zxvf httpd-2.2.0.tar.gz ,然后切换目录到 httpd-2.2.0 ,进行配置 # cd httpd-2.2.0.tar.gz ; ./configure --prefix=/usr/local/apache ,顺利完成这步后,接着进行编译安装 # make;make install 。其中,配置这一过程,使用了选项“--prefix=/usr/local/apache”来指定apache的安装目录,使apache服务器所需的大部分文件都被复制在这个目录里。实际上,配置是一个很灵活的选择,根据需要可以添加更多的选项,来支持更多的功能。由于这里打算先讲述基本功能,其它选项将在后面的应用中逐步增加。
配置文件
Apache的配置文件是httpd.conf,一般在/etc/http/conf或/usr/local/apache/conf目录,以rpm包形式安装的apache的配置文件的位置是/etc/httpd/conf/httpd.conf。对 apache服务器进行得最多的操作恐怕就是在不时更改这个文件的内容。当然,如果只是运行简单的静态网页,也可以不用对它做任何更改。
打开配置文件httpd.conf,可以获悉根文档的目录位置。前面安装的apache的根文档位置是/usr/local/apache/htdocs(rpm包安装的apache的根文档位置是/var/www/html),欲运行自己的网站,需要把做好的网页文件和目录复制到apache的根文档才可以。当初,我在配置apache服务器的时候,在这一步费了不少周折。
上传网页文件及目录
上传网页文件及目录的最佳方式是启用ftp服务。关于怎样安装、配置、启用ftp服务在这里不再介绍。创建一系统用户,使该用户对目录/usr/local/apache/htdocs具有读写权限或者该用户的主目录为/user/local/apache/htdocs。在这里我们创建一用户,使其主目录为apache的根文档目录。# useradd –d /usr/local/apache/htdocs webuser //添加的用户为webuser,
# passwd webuser //再给该用户设置一个访问密码。这样就可以很方便的修改或上传网页文件和目录了。有的人认为,用ssh客户端工具也可以实现文件的上传,但这是不方便的,因为ssh客户端工具只可以传送文件而不能上传目录。
启用/关闭apache服务
上面的步骤都准备好以后,就可以启用这个网站服务器了。启用方法如下:
# /usr/local/apache/bin/apachctl start //源码安装的启动方式 #/usr/local/apache/bin/apachectl stop |
# service httpd start //rpm包安装的启动方式 # service httpd stop |
如果不出意外,apache服务器将如我们所期待的那样运行起来,我们只要在某台能访问apache服务器的计算机浏览器里输入apache服务器的IP地址或者预先解析好的域名,网站的主页就会出现在浏览器里。在apache服务器端,通过输入命令 # ps -aux | grep httpd 检查apache服务器是否正在运行。到此,一个具备基本功能的apache服务器诞生了。
虚拟主机
有时候,我们可能需要用一个apache服务器来做多个web服务器,比如运行几个不同的网站,这样就可以大大地节省开支。
使用虚拟主机大致有以下几个步骤:
1、 确定使用虚拟主机的方式。虚拟主机有基于域名、IP、端口等几种形式,应该根据自己的实际情况来决定。
2、 修改配置文件/etc/httpd/conf/httpd.conf或 / usr/local/apache/conf/httpd.conf.在这个文件里,已经给出了如何更改的范例,它是以注释方式出现的。只要按照范例的格式添加需要的内容即可。然后保存退出配置文件。
3、 域名解析(基于域名的虚拟主机)。这一步需要在域名服务器上进行。
4、 启用/关闭虚拟主机。启用/关闭apache守护进程即可,但这将关闭所有的web服务。能否单独关闭某个虚拟主机,我本人没这方面的经验。
接下来,我就给出以个虚拟主机的实例。先描述一下需求:一台服务器,要求运行一个以PHP为脚本的网站,另外还要用它来做网络流量监控(需要web服务)。在这里,我们采用二进制源码包的方式来安装配置apache虚拟服务器,以便于对apache服务器有更深刻的理解。
(一)安装apache服务器。从www.apache.org下载包httpd-2.2.0.tar.gz到目录/root,然后执行操作
# tar zxvf httpd-2.2.0.tar.gz //包解压 # cd # tar zxvf httpd-2.2.0. #./configure --prefix=/usr/local/apache --enable-module=most --enable-shared=max # make # make install |
到这儿,apache就算安装好了,先测试一下,运行命令 # /usr/local/apache/bin/apachectl start ,然后在与之联网的计算机的浏览器里输入运行apache服务的计算机的IP地址,出现测试页面表明配置一切正常。
(二)安装PHP。下载包php-4.3.11.tar.gz到目录/root,然后执行下面的操作
# tar –zxvf php-4.3.11.tar.gz //解压文件 #./configure -–prefix=/usr/local/php -–with-apxs2=/usr/local/apache/bin/apxs //正常//完成后会在/usr/local/apache/modules 里生成文件 libphp4.so,并且会在//apache的配置文件httpd.conf里加上一行 LoadModule php4_module //modules/libphp4.so # make # make install #cp php.ini-dist /usr/local/lib/php.ini //拷贝文件
|
完成后看是否真在目录/usr/local/apache/modules生成文件libphp4.so,再打开配置文件httpd.conf中看 LoadModule php4_module modules/libphp4.so是否被自动追加。
(三)修改apache配置文件/usr/local/apache/conf/httpd.conf。加入行
TypeAdd application /x-httpd-php .php4 到307行的位置,当然其他位置也是可以的。请特别注意:.php4前面有一个空格。我第一次配置php整合apache的时候就犯了这个错误,用了好几天的时间才弄明白的。Php前面那个“.”(小黑点)一定不要写漏了,会有什么后果,请读者自己去尝试一下。
(四)启动一下apache服务器。找几个php脚本的网页文件,把它复制到apache指定的根文档目录/usr/local/apache/htdocs,然后在与之联网的计算机的浏览器中输入apache所在机器的URL(形如 http://192.168.100.10/test.php),来检验一下配置是否成功。
(五)创建虚拟服务器。Apache/2.2.0与以前的版本有些差异,它是以包含文件的方式来加载用户定义的虚拟主机配置,前面的版本定义虚拟主机就在httpd.conf文件中。我们还是先在主配置文件中把虚拟主机的配置文件 /usr/local/apache/conf/extra/httpd-vhosts.conf 包含进来;具体的操作就是把行 #Include conf/extra/httpd-vhosts.conf 的注释去掉,使之成为Include conf/extra/httpd-vhosts.conf,这一行在httpd.conf的行号是394。然后保存后退出。接着我们打开文件/usr/local/apache/conf/extra/httpd-vhosts.conf,其默认状态如下:
# ServerAdmin [email protected] DocumentRoot /www/docs/dummy-host.example.com ServerName dummy-host.example.com ServerAlias www.dummy-host.example.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common
|
等我们先安装配置mrtg,然后再回过头来修改文件/usr/local/apache/conf/extra/httpd-vhosts.conf。
(六)启用交换机的snmp功能。要监控连接在交换机每个端口的服务器的网络流量,必须启用交换机的snmp,这样就不必更改被监控的服务器的任何设置。关于怎样启用交换机的snmp,请参照相关文档。
(七)安装和配置mrtg。把软件包下载到硬盘,解压后直接安装就是。配置mrtg有点复杂,在这里仅仅给出方法,具体意思就不做说明,请大家自己去查手册。
#./cfgmaker --global "WorkDir: /usr/local/mrtg/html" --global "icondir: /mrtg" --global "language: chinese" --global "Options[_]: growright,bits" --show-op-down --ifref=nr --ifdesc=descr --output=/etc/mrtg/mrtg.cfg [email protected]>/dev/null //是一个整行,交换机的snmp的 //community的值是public #./ indexmaker -t "title" -o /usr/local/mrtg/html/index.html /etc/mrtg/mrtg.cfg |
(八)修改虚拟主机配置文件。需要指定根文档目录、服务器名称这几项。
NameVirtualHost *
ServerAdmin [email protected] //假定域名为sery.com DocumentRoot /usr/local/mrtg/html ServerName mrtg.sery.com ErrorLog /usr/local/apache/logs/error_log CustomLog /usr/local/apache/logs/access_log combined DirectoryIndex index.html index.php
|
保存后退出。如果要对虚拟主机的访问进行用户验证,还需要在apache的主配置文件对虚拟机的根文档目录进行相关的处理。把下面的行插入到apache的主配置文件httpd.conf中。
AuthName "mrtg AuthType Basic AuthUserFile /usr/local/apache/.mrtg //带点是为了使文件的属性为隐藏 require valid-user
|
保存后退出。然后运行命令 # /usr/local/apache/bin/htpasswd –c /usr/local/apache/.mrtg sery
按照提示设定用户sery的访问密码。
(九)做域名解析。在域名服务器上解析主机mrtg.sery.com.
(十)启用apache服务。用指令 # ps –aux | grep httpd 检查apache是否正常运行,然后在另外的计算机的浏览器里输入apache服务器的URL,如输入www.sery.com则应该访问到主配置文件设定的网页,如果输入mrtg.sery.com则访问上面设定的虚拟机页面,并且需要输入正确的用户名和密码才能访问。
总结
通过上面的实践,我们可以得出这样一个结论:apache服务器功能设定的主要操作就是修改配置文件—主配置文件httpd.con及包含配置文件。当然,apache的配置不仅仅是上文所描述的那些,可以说是非常丰富,也是非常灵活的,限于篇幅,不再详叙。至于要让apache随系统启动,可以把守护进程/usr/local/apache/bin/httpd&加在文件/etc/rc.local里。
偏方:为了在同一环境下使用更多的apache服务,可以安装多个apache到不同的目录,安装目录在安装过程中的配置操作 ./configure – prefix=<安装目录> 制定,所有apache的配置原则都是一致的。所有配置完成后,把他们全部启动起来。关于配置多个虚拟主机与安装多个apache服务,究竟有多大的差别,望各位读者自己去做评判。
一招一式攻克linux之六
Linux域名服务
域名服务是互连网上一个十分重要的服务,也是internet能够迅速普及的一个重要原因。域名解析服务解决了用户记忆IP地址的麻烦,因为记住有意义的主机名比记住IP地址要容易得多,例如主机名www.ibm.com与IP地址 129.42.17.99,我相信www.ibm.com更加容易被记住。
域名服务的功能是一种将主机名转换成IP地址的一种机制,因为计算机之间的通讯是不能直接识别主机名,只能识别IP地址。有多种把主机名转换成IP地址的方法,但是在Internet上,是用域名服务器(domain name server)来处理成千上万个主机和IP地址的转换。
申请域名空间
中国的域名管理机构是中国国家互连网中心(www.cnnic.net.cn),从2002年12月16日起,国家互连网中心不再直接面对最终用户提供CN域名注册相关服务,域名注册服务将转由CNNIC认证的域名注册服务机构提供。在注册域名时,最好选择本地的域名注册服务机构。
注册域名成功后,需要注册商为自己的域名空间解析一个或多个主机,大部分的域名注册服务商会分配给用户帐号,允许用户在自己的域名空间做解析操作。为了自己建立域名服务器,最好申请一段全球唯一单播IP地址。
安装域名服务器BIND
大部分linux发行版都附带Bind安装包,先运行命令 # rpm –qa | grep bind ,看是否安装域名服务软件bind.如果没有安装的话,可以用linux的安装光盘,找到rpm安装包后手动安装。正确安装成功后,会生成一些相应的配置文件、守护进程及启动脚本;如:在目录/etc下有named.conf, rndc.key, rndc.conf, /etc/rc.d目录下的启动脚本named,以及 /var 下的区域文件named.ca、named.local文件。也可以下载bind的源码包来安装。
配置域名服务器
配置域名服务器似乎比配置其他的服务要麻烦一些,因为除了修改配置文件外,还需要自己动手编写在配置文件里定义的区域文件,而其他一些服务程序仅仅是更改一下配置文件。在配置文件中定义的区域越多,需要手动创建的区域文件也越多。
在未做配置之前,让我们先熟悉一下配置文件named.conf的默认状态值。
options { directory “/var/named”; //定义区域文件所在的目录 };
zone “.” IN { //顶级域名服务器区域文件名称 type hint; file “named.ca”; };
zone “localhost” IN { //本机地址正向解析 type master; //DNS服务器的类型分主与辅助两种 file “localhost.zone”; allow-update {none}; };
zone “0.0.127.in-addr.arpa IN { //本机地址反向解析 type master; allow-update{none}; file “named.local”; }; |
在实际的配置过程中,只需在named.conf文件里,照“zone{};”代码块的格式添加相关的行,是不是很容易呢?当然,根据具体的需要,还可以在named.conf文件中加入其他代码快,比如转发器 “forwarder {};”.现在,假设申请了一个域名空间sery.com,一段可用的全球唯一单播IP地址,并且在域名注册服务商的服务器上解析出一台主机ns.sery.com,其IP地址为202.108.99.222(假设的,勿对号入座),接下来就可以着手来配置了。
先把安装了域名解析服务的机器IP设置成202.108.99.222,然后修改配置文件/etc/named.conf,内容如下:
//默认的代码块如上,此处省略以减少篇幅 zone “sery.com” IN { //正向解析 type master; file “named.sery.com”; };
zone “99.108.202-addr.arpa” IN { //反向解析 type master; file “ip.sery.com”; };
include “/etc/rndc.key”; |
保存文件然后退出。然后参照默认的区域文件/var/named/localhost.zone的样式手动创建在/etc/named.conf中定义的区域文件named.sery.com及ip.sery.com文件。localhost.zone文件的内容如下:
$TTL 86400 //解析的地址在数据库中缓存时间 $ORIGIN localhost @ ld IN SOA @ root ( 20060101 //序列号 28800 //刷新时间 7200 //重试时间 3600000 //过期时间 3h //保存时间 ) ld IN NS @ ld IN A 127.0.0.1 |
用vi编辑器把文件/var/named/named.sery.com改成下列式样:
$TTL 86400 @ IN SOA sery.com. root.sery.com. ( 20060101 28800 144000 3600000 86400 ) ;Name servers IN NS ns.sery.com. //主DNS IN NS ns1.sery.com. //辅DNS ;mail server IN MX mail.sery.com.
ns IN A 202.108.99.222 ns1 IN A 202.108.99.200 www IN A 202.108.99.201 mail IN A 202.108.99.202 ftp IN A 202.108.99.203 |
再创建反向解析文件 # vi /var/named/ip.sery.com:
$TTL 86400 @ IN SOA 99.108.22-addr.arpa. root.sery.com. ( 20060101 28800 144000 3600000 86400 ) IN NS ns.sery.com. IN NS ns1.sery.com. IN MX mail.sery.com. 200 IN PTR ns1.sery.com. 201 IN PTR www.sery.com. 202 IN PTR mail.sery.com. 203 IN PTR ftp.sery.com. 222 IN PTR ns.sery.com |
到这个步骤,一个具备基本功能的域名解析服务器就创建成功了。一个不可忽视的问题是在域名空间和主机名的后面都有一个代表顶级域的点“.”,很多配置任务不能成功的原因就是把这个“.”给丢掉了。出于安全考虑,最好给配置文件和区域文件加上访问权限,只允许超级用户有访问权限。即 # chmod 700 /etc/named.conf , # chmod –R 777 /var/named/.也可以把区域文件用 # tar cvf named.tar /etc/named 打包后把它备份到安全的地方,这个方案对于充当多域解析或要解析大量主机的服务器很有好处,因为在发生故障或迁移服务器时恢复DNS服务将大大节省时间。
在比较重要的网络环境中,可能需要服务不间断的运行,一个单独的DNS无法保障网络服务不间断的提供,这需要配备一个或多个辅助域名服务器.辅助域名服务器需要单独的服务器来担当.与主域名服务器的配置文件相比,只需少许的变化.接前面的例子,我们把另外一台linux 服务器的IP地址设置成202.108.99.200,修改配置文件/etc/named.conf:
options { directory “/var/named”; };
zone “.” IN { type hint; file “named.ca”; };
zone “localhost” IN { type master; file “localhost.zone”; allow-update {none}; };
zone “0.0.127.in-addr.arpa IN { type master; allow-update{none}; file “named.local”; }; zone “sery.com” IN { type slave; file “named.sery.com”; master { 202.108.99.222;}; };
zone “99.108.202-addr.arpa” IN { type slave; file “ip.sery.com”; master {202.108.99.222;}; };
include “/etc/rndc.key”; |
修改完配置文件后,把主服务器上创建的区域文件拷贝到辅助服务器的/var/name目录下.
DNS服务的启动和关闭
由于DNS服务需要持续运行,在大部分情况下,都是把它作为系统服务自动运行的.要确保相应的运行级别目录有启动运行脚本.运行命令 # service named start 启动DNS服务,命令 # service named stop 停止DNS 服务.
DNS服务的验证
有很多种方法检验DNS服务器配置的正确性,最简单的方法是nslookup,我通常使用从外地的机器访问用DNS服务解析的主机.比如我让上海的兄弟ping 我解析的主机.
额外的话题
1、 关于多域的DNS解析配置.一个域名服务器可以提供多域解析服务,需要的操作是在配置文件定义区域,然后单独创建定义的每个区域文件。
2、 主机域名与IP地址并非一一对应的关系
3、 DNS对于负载均衡的作用。通过别名的定义可以实现简单的网络访问的负载均衡。
一招一式攻克linux之七
Linux数据库服务器
数据库是一项十分重要的网络服务,它被广泛地应用在internet网站、搜索引擎、电子商务等诸多领域。在开源社区,MySQL以其开放源代码、性能高效而稳定、多用户多线程等特性获得“世界最受欢迎的开放源代码数据库”,本文将以MySQL为例,介绍linux数据库的安装、配置和使用。
MySQL的安装
RedHat 大部分发行版的安装光盘都附带MySQL安装程序,RedHat AS 4 内置的MySQL版本是MySQL 4.1.10.可以在安装linux操作系统时选择安装MySQL数据库,也可以在操作系统运行中安装MySQL数据库。经验表明,在安装操作系统的时候选择安装MySQL数据库要比操作系统运行中(以rpm包形式的话)要容易的多,因为以rpm包安装很可能出现包依赖或软件冲突的问题,而解决这些附加的依赖包,真的不是一件令人愉快的事情。用命令# rpm –qa | grep mysql 查看系统是否安装MySQL,如果输出没有内容,表明MySQL没有被安装。接下来,我们以两种方式来安装MySQL数据库服务器。
1、 rpm包方式安装。至少需要以下几个RPM包文件:
a. mysql-server-4.1.7-4.RHEL4.1.rpm (mysql 数据库主程序).
b. mysql-devel-4.1.7-4.RHEL4.1.rpm (mysql 使用的库和头文件).
c. mysql-4.1.7-4.RHEL.rpm (mysql客户端程序)。
把上面这几个文件复制到硬盘的目录(比如/root),以root帐号执行命令 # rpm –ivh mysql-devel-4.1.7-4.RHEL4.1.rpm ; rpm –ivh mysql-server-4.1.7-4.RHEL4.1.rpm ; rpm –ivh mysql-4.1.7-4.RHEL4.1.rpm ,即可完成安装,如果不幸出现安装失败的事件,多半是由于包依赖引起的,请按错误提示信息安装所需的依赖包,然后再执行MySQL数据库的安装。
2、源码包的安装方式。依照版本的不同,二进制源码包的安装方式也是差异极大的。先从MySQL的官方网站下载所需的稳定二进制源码包,运行命令 # tar zxvf mysql-standard-5.0.18-linux-i686-glibc23.tar.gz ,通过阅读文件README及INSTALL获得安装MySQL的方法。在这里,笔者使用的是mysql-standard-5.0.18-linux-i686-glibc23.tar.gz,其他版本的安装方法请参照其解压后的README和INSTALL文件的说明。按照INSTALL文档,执行以下步骤来完成安装:
(1)把解压后的目录及文件移动到目录/usr/local .#mv mysql-standard-5.0.18-linux-i686-glibc23 /usr/local .
(2)创建连接文件# ln –s /usr/local/ mysql-standard-5.0.18-linux-i686-glibc23 /usr/local/mysql
(3)切换目录 # cd /usr/local/mysql 。
(4)创建用户 # useradd mysql.
(5)执行脚本 # scripts/mysql_install_db --user=mysql 初始化数据库。
(6)更改目录属组和权限 # chown -R root . ; chown -R mysql data ; chgrp -R mysql .
MySQL数据库服务器的启动及关闭
1、以RPM包安装的MySQL数据库服务器的启动:执行命令 # service mysqld start 。如果需要MySQL数据库服务随系统开机运行,执行命令 # chkconfig –add mysqld 就把mysqld添加到相应的运行级别里。执行命令 # service mysqld stop 关闭数据库服务。为确认mysqld是否运行,执行命令 # ps –aux | grep mysqld 查看一下。
2、以二进制源码包安装的MySQL数据库的启动:执行命令 # /usr/local/mysql/bin/mysql_safe –user=mysql & .为了让MySQL服务开机运行,通过编辑文件 /etc/rc.local ,把行/usr/local/mysql/bin/mysql_safe –user=mysql&追加进来。关闭mysqld则以杀进程的方式来完成。
MySQL的配置
安装完MySQL数据库服务后,仍然需要对某些配置做适当的修改才能满足实际的需求。首当其冲的是修改mysql管理员帐号root(注意:与系统帐号root是两码事),执行命令 # mysqladmin –u root password d%te6*h 设定密码为” d%te6*h”。另外一个可以操作的地方是MySQL的配置文件my.cnf,其内容如下:
[root@sery etc]# cat -n my.cnf
1 [mysqld]
2 datadir=/var/lib/mysql
3 socket=/var/lib/mysql/mysql.sock
4 # Default to using old password format for compatibility with mysql 3.x
5 # clients (those using the mysqlclient10 compatibility package).
6 old_passwords=1
7
8 [mysql.server]
9 user=mysql
10 basedir=/var/lib
11
12 [mysqld_safe]
13 err-log=/var/log/mysqld.log
14 pid-file=/var/run/mysqld/mysqld.pid
配置文件给出3种启动MySQL服务的方法,根据自己的实际需求修改配置文件my.cnf,比如修改数据目录 datadir 的值。以二进制源码安装的MySQL数据库,其运行需要的配置由运行脚本 mysqld_safe指定,如须更改则需要修改这个脚本文件。
管理MySQL
大致有三种远程管理MySQL数据库的方法:登录系统进行管理、使用客户端工具管理、基于浏览器方式(phpMyAdmin)。登录系统管理是指以securecrt这样的工具,用系统帐号通过SSH协议连接MySQL数据库所在的服务器,然后以系统用户执行命令 # mysql –u root –p 来连接数据库,进行相关的操作。第三方开发了许多基于windows的mysql客户端工具,这些工具大多提供图形方式的管理形式,操作起来非常直观和方便。基于浏览器管理是最方便的了,因为它不需要安装客户端,操作也很直观,用的人也是很多的。当然,作为linux系统管理员,是应该掌握用mysql命令行来管理MySQL数据库。接下来,笔者为大家介绍mysql和phpMyAdmin。
1、mysql:以用户mysql登录系统,执行命令 # /usr/local/mysql/bin/mysql –u root –p 回车,输入正确的密码,回车后出现下面的输出,表明mysql客户端已经与MySQL数据库正常连接,在提示符 mysql > 输入相关的sql语句进行各种操作。
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 3 to server version: 5.0.18-standard
Type 'help;' or '/h' for help. Type '/c' to clear the buffer.
mysql>
2、phpMyAdmin:从网站http://prdownloads.sourceforge.net下载软件phpadmin-2.6.4的二进制源码包 phpmyadmin-2.6.4-pl4.tar.gz,执行命令# tar zxvf phpmyadmin-2.6.4-pl4.tar.gz解压后,把目录及文件移动到apache服务器的根文档所在的目录#mv phpmyadmin-2.6.4-pl4 /var/www/html ,接着修改phpmyadmin的配置文件config.inc.php, 把行“$cfg[‘Servers’][$i][‘password’]=’’’’ 改成“$cfg[‘Servers’][$i][‘password’]=’’ d%te6*h’’.保存文件,再另一计算机的浏览器的地址栏输入 http://
MySQL数据库的基本操作
1、 数据库的操作。(1)创建数据库:MySQL创建数据库的SQL 语法为:create database < 数据库名称>,例如要创建数据库dangan,输入命令 mysql > create database dangan;(注意是以分号结束的),执行完毕后会在 /usr/local/mysql/data或/var/lib/mysql 生成目录 dangan。用命令 mysql > show databases; 查看已经创建好的数据库。(2)使用数据库。用命令 mysql > use <数据库名称> ; 来使用已经创建的库。(3)删除已创建的库:mysql > drop database <数据库名称>; 操作完成后,在/usr/local/mysql/data或/var/lib/mysql里与删除数据库同名的目录被删除。
Mysql > create database dangan; //数据库名区分大小写,命令不区分,//“create database” 与 “CREATE //DATABASE” 等同
Mysql > use dangan; //使用数据库dangan
Database changed //回显
Mysql > drop database dangan; //删除数据库dangan
2、表的操作。从文件系统看,表是某个数据库目录所属的文件,在一个数据库里创建一个表,那么就会在数据库目录生成几个与表名相同而后缀不同的文件。(1)创建表:创建表的语法为 create table <表名>(字段1,字段2…..),表创建完成后,输入 describe <表名> 查看刚创建的表的结构。(2)修改表:主要的一些操作有添加、删除或者修改表的字段,创建或撤消索引等,其语法格式为 alter table <表名> 更改动作1 [更改动作2….],更改动作包括add,drop,change,alter及modify等关键字。
3、记录的操作。记录是表中存储的数据,通过SQL的数据操纵语言(DDL)进行插入、删除和修改表中的记录。(1)插入记录:基本格式为insert into <表名> (字段1,字段2…) values(字段1的值,字段2的值….)。(2)删除记录:基本语法为delete from <表名> where <条件表达式>。(3)修改记录:基本语句为update <表名> set 字段名1=字段值1 [,字段名2=字段值2…] where 条件表达式。
4、创建和删除用户。Mysql数据库的用户记录存储在表mysql.user中,创建一个用户就是向mysql.user表添加一条记录,删除用户即是从该表删除一条记录。
5、设置用户权限。为安全起见,对数据库对象的访问必须授权进行。在MySQL中,常使用GRANT语句授予用户访问权限。Grant的语句格式为 grant 权限表 [(字段表)] ON 数据库名.表名。
数据库的备份和恢复
笔者认为,给数据库备份应该是系统管理员的一项基本职责。有两种备份MySQL数据库的方法(第三方备份软件除外):直接复制和使用mysql备份工具mysqldump。
1、直接复制。对于版本号高于3.23的mysql数据库,备份时直接复制数据库目录及其下面的文件。恢复时只须把备份的数据复制到原来的目录,随后启动mysql数据库,备份数据就自动恢复了。值得注意的是,在复制数据的过程中,可能会产生目录或文件权限变更的情况,因此在恢复操作前应先核实一下复制过来的目录和文件的权限及属主(属主应该是mysql而不是root等)。
2、Mysqldamp.是专门用来备份mysql数据库的工具,执行命令 # ./mysqldump –opt dangan –u root –p > /backup/dangan.sql 把前文创建的数据库备份到目录/backup。执行命令# ./mysql –u root –p < /data/dangan.sql 就很容易的把备份的数据库恢复了。也可以单独对数据库的表做单独的备份及恢复操作。
一招一式攻克linux之八
Linux 网关服务
在网络互联的应用环境,网关起了非常重要的作用。在internet上,由路由器这样的专用设备来担当网关的职责。对于一些应用要求不是太高或者资金紧张而不愿购买昂贵的路由器的机构,由linux来充当网关无疑是个聪明的选择,实践证明,基于linux部署的网关同样有着很好的性能。
用 linux可以轻松地实现网络地址转换(NAT)、动态主机配置协议服务(DHCP)、虚拟专用网络服务(VPN)和防火墙(Firewall)等基本网络网关服务.而完成这些任务仅需一台pc外加一套linux发行套件,是不是很省钱呢?
从功能上看,网关是几个网络互联的中间设备,因此作为网关的计算机,起码应该具备两个以上的网络接口;一个接口连接外部网络(ISP接入),另外一个接口连接自己的内部网络。一个需要注意的问题是,在这个计算机上使用的网卡应该能被linux所支持,所以建议使用比较流行的、质量比较好的网卡。物理部件都准备好后,开始安装操作系统。网关操作系统的安装与一般的linux应用服务器有些差别,在安装过程中,选择server (服务器) 方式,安装非常少的一些软件,也不需要xwindow,安装界面也使用文本形式进行,按照自己硬盘的大小和实际情况划分一下分区,要不了几分钟就可以安装完成。以root帐号登录系统,检查网络参数是否设置正确。为了方便起见,在这里指定外网网卡的名称为eth0,内网网卡为eth1.如果网络参数没有被正确的设置,请修改文件 /etc/sysconfig/network-scripts/ifcfg-eth0和/etc/sysconfig/network-scripts/ifcfg-eth1,假定eth0的ip地址为 202.107.100.22 netmask 255.255.255.0 gateway 202.107.100.29 ,eth1的 IP地址为 192.168.1.1 ,netmask 255.255.255.0。然后运行命令 # ntsysv ,关闭一些不必要的服务,比如sendmail等。
网络地址转换(NAT)服务
众所周知,因为IPv4地址的资源短缺,internet接入服务商(ISP)分给用户的全球唯一单播地址非常有限,为了让大量没有全球唯一单播地址的内部网络的主机访问互联网,通常的做法就是在自己的内部网络使用网络保留地址(私有网段如192.168.1.0/24这样的网络地址段),然后通过连接网关,在网关上启用网络地址转换功能就实现了整个网络访问internet的功能。NAT分两种类型-源地址转换(SNAT)和目的地址转换(DNAT)。源地址转换用于内部网络主机访问internet,目的地址转换(DNAT)用于internet上的主机访问网关内的内部主机(使用的是保留地址)。可以在网关上同时实现SNAT和DNAT。
1、源地址转换SNAT。分两步进行:
(1)启用内核的ip转发功能。通过修改文件 /etc/sysctl.conf文件,把 “net.ipv4.ip_forward = 0改成 net.ipv4.ip_forward = 1”,运行命令 # sysctl –p 使修改立即生效。
(2)编写一个源地址转换脚本/root/sant.sh,使其包含 “/iptables –t nat –A POSTROUTING –o eth0 –j SNAT –to 202.107.100.22 “行,保存脚本然后给与执行权限,然后执行这个脚本 # /root/snat.sh.
到这里一个具备基本功能的地址转换网关就做成了,我们在内网主机把默认网关设置成网关的内网网卡IP地址192.168.1.1,如果一切正常的话,内网的用户就能访问internet上的资源了。当然,不能每次都手动执行一遍脚本 /root/snat.sh,最好把 /root/snat.sh写在脚本/etc/rc.d/rc.local里,这样只要一开机就可以启动脚本/root/snat.sh的源地址转换功能。
2、目的地址转换DNAt.分两步进行:
(1)启用内核ip转发功能。方法与SNAT相同,不再叙述。
(2)编写一个目的地址转换脚本/root/dnat.sh。其内容如下:
# !/bin/bash
iptables –t nat –A PREROUTING –p tcp –d 202.107.100.22 –dport 80 –j DNAT --to 192.168.1.101:80
iptables –t nat –A PREROUTING –p tcp –d 202.107.100.22 –dport 25 –j DNAT --to 192.168.1.102:25
iptables –t nat –A PREROUTING –p tcp –d 202.107.100.22 –dport 110 –j DNAT --to 192.168.1.101:110
保存该脚本并给与执行权限,就可以从internet访问在内往只有保留地址的各种网络服务。以把这个脚本写入 /etc/rc.d/rc.local,使它随系统一起自动运行。
动态主机配置协议-DHCP
系统管理员使用DHCP服务,可以大大简化客户计算机设定ip地址的工作,因为启用动态主机配置协议(DHCP),服务器会自动地为联网的客户端计算机分配IP地址、子网掩码、默认网关、域名解析服务(DNS)等入网所必需的参数值。这同时也减轻了网络管理员管理和维护的负担。当然,并不是所有场合都使用DHCP服务,比如服务器就应该手动设定静态网络参数。一个比较恰当的方案是在一个网络中同时使用DHCP和静态网络参数设定。
DHCP的设定主要发生在服务器端,客户端基本上不用做设置。下面分3步来部署DHCP服务:
1、安装DHCP。默认的情况下,linux自动安装DHCP服务。用 # rpm –qa | grep dhcp 检查 DHCP是否被正确安装到系统中,如果没有安装,则下载rpm包或二进制源码包安装。这里假定下载的是rpm包 dhcp-3.0.1-12_EL.rpm,运行命令 # rpm –ivh dhcp-3.0.1-12_EL.rpm安装dhcp。DHCP服务需要读取配置文件dhcpd.conf才能正常提供服务的,但是安装完成dhcp后并没有现成的dhcpd.conf这个配置文件,这需要我们手动来创建文件 /etc/dhcpd.conf.
2、配置DHCP。在安装dhcp 的同时会安装一个范本文件/usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample,把这个范本文件复制到目录/etc下,并改名成dhcpd.conf。其操作方法是 # cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf.照着这个范本的模式修改就不易出错。Dhcpd.conf的基本格式如下:
选项/参数
声明{
选项/参数
}
接下来是我的一个dhcp配置文件的实例:
ddns-update-style interim; //动态dns更新类型,这项必选
ignore client-updates; //忽略客户端更新DNS纪录
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.80 192.168.1.200; //可分配给客户端的 ip地址范围
option routers 192.168.1.1; //指定默认路由,可以有多个,中间用逗号隔开
option subnet-mask 255.255.255.0;
option domain-name-servers 202.106.0.20;
default-lease-time 86400; //缺省租期为24小时
max-lease-time 172800; //最大租期为48小时,可以更改这个值
}
上面的配置只是一个网段实施DHCP的情形,在稍大一点的网络应用环境,可能有多个网段需要DHCP服务,可以在每个网段内架设一个DHCP服务器,但这决不是一个好的决策;实际的操作就是用一台DHCP服务器来为多个子网分配ip地址。下面是一个为3个子网提供DHCP地址分配的样例:
ddns-update-style interim;
ignore client-updates;
shared-network public {
option subnet-mask 255.255.255.0;
option domain-name-servers 202.108.0.20;
default-lease-time 86400;
max-release-time 172800;
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.80 192.168.1.200;
option routers 192.168.1.1;
}
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.20 192.168.2.220;
option routers 192.168.2.1;
}
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.10 192.168.3.250;
option routers 192.168.3.1;
}
}
3、启用DHCP服务。执行命令 # service dhcpd start 就启动了dhcp服务器。如果是以2进制源码包形式安装的话,请执行相应安装目录下的守护进程。
对于给多个网段提供DHCP服务的情形,需要在内部的路由上设置ip地址求助功能,具体的设置请参照各路由器厂商的资料,在此不做说明。使用dhcp方式获取ip地址的客户端设置很简单,windows的用户选TCP/IP协议属性“自动获取IP地址”即可。
虚拟专用网络(VPN)
虚拟专用网是借助公共网络internet来连接在不同地理位置的本地网络,网络间的访问就像本地访问一般。由于VPN在传输数据的过程中对数据进行了加密,尽管这些数据在公共网络上传输,其安全性还是很高的。这几年带VPN功能的硬件设备还是卖得很欢的,有些防火墙厂商还拿它的VPN功能作卖点呢。在这里我们不关注硬件VPN,只讲linux下的VPN.
1、安装VPN 包。需要dkms-2.0.10-2.fc5.noarch.rpm, kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm , ppp-2.4.3-9.2.i586.rpm 和 pptpd-1.3.1-0.i386.rpm这几个rpm包。然后分别执行命令 # rpm –ivh dkms-2.0.10-2.fc5.noarch.rpm ; rpm –ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm ; rpm –ivh ppp-2.4.3-9.2.i586.rpm ; rpm –ivh pptpd-1.3.1-0.i386.rpm 完成安装。
2、配置VPN服务。有两个文件需要修改:主配置文件/etc/pptpd.conf 和VPN用户帐号文件/etc/ppp/chap-sescrets。主配置文件需要设置VPN服务器的本地地址和分配给客户端的地址段,因此只需在主配置文件中手动追加localip和remoteip两行就算完成配置任务。帐号文件保存VPN客户端拨入需要的验证信息,其格式是:
用户名 服务 密码 分配给用户的口令
其中用户名,密码,分配给用户的IP地址要用双引号括起来,“服务”一般是pptpd。作为参照,下面给出一个pptpd.conf及chap-secrets的实例:
# more /etc/pptpd.conf
localip 192.168.1.20
remoteip 192.168.1.201-220
# more /etc/ppp/chap-screts
“sery” pptpd “gshdh7%” “*”
“public” pptpd “gy76423@e” “192.168.1.202”
3、客户端的配置。使用windows的网络连接向导,只要选择“通过ineternet连接到专用网络(V)”,一步步下去即可配置完成。注意:VPN服务器的IP要填写全球唯一单播地址,即网关服务器的eth0的地址。
4、启用VPN服务。再启用VPN之前确认内核的IP转发功能已经打开,然后执行命令 # service pptpd start 启用VPN等待远程用户接入。
防火墙(firewall)
Linux自带包过滤防火墙netfilter/iptables,它可以检查数据包的源和目的ip、源和目的端口、通讯协议、数据包的顺序、 TCP先后顺序、头标记(SYN、ACK等)状态等,功能十分强大。在安装linux过程中,向导一般会提示用户开启防火墙,但这可能不能满足实际的应用需求,建议关闭默认的防火墙功能,然后自己订制符合需求的规则,写成一个脚本,然后运行这个脚本,以取得更好的安全性能。
Iptables的语法确实让人生畏的,让我们先来简化一下,可以把它归纳成如下的格式:
Iptables [–t 表] -命令 匹配 操作
iptables内置3个表:filter、 nat 、mangle.实际上常用的是表filter和nat,其中nat已在前面部分实现过了。命令选项常用的有 F-刷新规则、A-添加规则、P-默认策略等几项。匹配选项包括源/目的地址、源/目的端口、协议类型以及端口号等。动作选项主要包括ACCEPT-接受收据包、DROP-丢弃数据包、REJECT-拒绝数据包、SNAT-源地址转换、DNAT-目的地址转换、MASQUERADE-ip伪装等。当表的类型是filter时,通常可以省略掉这一项。
一个好的防火墙规则应该是注重策略的,在自己订制的防火墙规则脚本中,应该遵循刷新/清除规则-添加默认策略-订制用户访问策略这样的顺序,业内的术语称作“先关门后开窗”,先禁止所有的访问许可,然后根据实际需求逐个开放访问权限。所以,一般防火墙脚本的前部分可以套用下面的格式:
# !/bin/bash
# refresh rules
Iptables –F INPUT
Iptables –F OUTPUT
Iptables –F FORDWARD //启用前先清除所有规则
# default rules
Iptables –P INPUT DROP //先禁止
Iptables –P FORWARD DROP
Iptables –P OUTPUT DROP
# proof DoS etc
Iptables –A FORWARD –p tcp –syn –m limit –j ACCEPT
Iptables –A FORWARD –p tcp –tcp-flag SYN,ACK,FIN,RST –m limit
Iptables –A FORWARD –f –m --limit 50/s –limit-burst 50 –j ACCEPT
# enable loopback
Iptables –A INPUT –i lo –p all
# enable lan user access firewall
Iptables –A INPUT –i eth1 –j ACCEPT
Iptables –A OUTPUT –o eth1 –j ACCEPT
Iptables –A FORWARD –i eth1 –j ACCEPT
Iptables –A FORWARD –i eth1 –j ACCEPT
# add user access rules
………….
接着就是逐个开放用户的访问权限:
# enable lan user access website in internet
Iptables –A OUTPUT –o eth0 -p tcp -d any/0 --dport 80 -j ACCEPT
Iptables –A INTPUT -i eth0 -p tcp -s any/0 --sport 80 -j ACCEPT
。。。。。。。
脚本写完保存后,给与执行权限然后执行。用局域网内的机器访问internet,检查设置的防火墙是否生效,是否符合我们本来的意图。要让这个防火墙脚本随系统开机启动,可以把这个脚本以行的方式写入/etc/rc.d/rc.local文件。