当前位置: 首页 > 新闻 > 信息荟萃
编号:5556
鸟哥的Linux私房菜服务器架设篇第三版带目录.pdf
http://www.100md.com 2020年11月14日
第1页
第9页
第19页
第26页
第46页
第421页

    参见附件(17516KB,945页)。

     《鸟哥的Linux私房菜:服务器架设篇(第3版)》内容简介:您已有Linux基础,想要进一步学习服务器架设?还想了解如何维护与管理您的服务器?本书是您最佳的选择。

    内容简介

    目前有关Linux架站的书籍大多只教导读者如何架设服务器,很少针对服务器的维护与管理,以及发生问题时的应对策略加以说明,以至于一旦服务器遭受攻击,眼见的就是一场手忙脚乱。因此,作者先从系统基础以及网络基础讲起,再谈到网络攻击与防火墙防护主机后,才进入服务器的架设。

    本书共分为四篇

    第一篇,服务器搭建前的进修专区,主要介绍架设服务器之前必须具备的基本知识,看完这一篇,不论您的Linux是以何种方式进行Internet连接,都将不成问题;

    第二篇,主机的简易安全防护措施,这一篇鸟哥将告诉您如何保护您的主机,以及如何养成良好的操作习惯,使您的主机能够百毒不侵,安然渡过一次次的考验;

    第三篇,局域网内常见服务器的搭建,介绍内部网络经常使用的远程连接服务(SSH、VNC、XRDP),网络参数设置服务(DHCP、NTP),网络磁盘服务(Samba、NFS、iSCSI),以及代理服务器等服务。其中SSH密钥系统,对于异地备份更是相当有帮助,您不能错过;

    第四篇,常见因特网服务器的搭建,介绍DNS、WWW、FTP及Mail Server等常见的服务。

    作者简介

    鸟哥,“台湾成功大学”环境工程系博士,在就读期间由于研究需要,接触到Linux操作系统,叉因实验室交接传承的需要而搭建了“鸟哥的Linux私房菜”网站(俗称鸟站),因个人喜好碎碎念(琐碎熏复)的特质,因此,鸟站文章风格就此成形。曾任台湾多家知名Linux教育中心讲师,目前于台湾昆山科技大学资讯传播系教授Linux相关课程。专长是Linux操作系统、网站规划与维护、网络安全,兴趣是写作与阅读,研究方向是网络整合应用。

    谁适合这本书

    这本书既然是深入讨论服务器搭建的规划、流程、技巧与维护等工作,那么比较基础的 Linux 操作与相关的 Shell 语法,在这本书里就不可能谈论得很多,毕竟,《鸟哥的Linux私房菜——基础学习篇》已经完成了,没有必要在这本书里重复提及,所以,当您尝试阅读这本书的时候,请注意,您最好已经具备了 Linux 操作系统的相关知识,以及BASH Shell的相关技巧。还有,必须了解一些 Unix-Like 的工作流程,例如日志文件的产生与存储的位置、服务的启动与关闭方式、计划任务的使用方法以及其他相关的事项。也就是说,如果您从未接触过 Linux ,那么建议您由《鸟哥的 Linux 私房菜——基础学习篇》开始 Linux 的探索历程,否则,这本书对您而言,可能会比较难以理解。

    另外,很多时候本书会提到一些简单的概念而不是僵化的流程,尤其是每个人对于站点的要求都不相同,也就是说,每个人的站点其实都是带有个人风格的,因此僵化的流程并没有太大的意义,只要能够依据这些简单的概念来进行站点的架设就可以了。鸟哥认为,您的主机设置应该不会有太大的问题。怕的是什么呢?没有碰过 Linux,却想直接参考服务器搭建的程序来完成站点架设的朋友,这些朋友最容易忽略后续的维护与管理工作,这也容易造成站点不稳定或者是造成被网络黑客 (Cracker) 入侵的主要原因。

    这本书的主要目的是引导用户进入 Linux 强大的网络功能世界,书内的范例都是鸟哥自己实际测试过没有问题才写出来的。不过,毕竟每个人的网络环境与操作习惯不同, 因此,鸟哥不敢说书内的范例一定可以在您的系统上操作成功,然而,书内会提到一些基本概念,只要理解这些基本概念,并且对于 Linux 的操作熟悉,相信您一定可以利用书中的范例来开发出适合您自己的服务器设置。不过,对于没有碰过 Linux 的朋友,还是建议从头学起,至于为什么一定要从头学起,本书在第1章内会仔细进行说明喔。

    鸟哥的Linux私房菜服务器架设篇第三版截图

    net.qiang@hotmail.com

    鸟哥的 Linux 私房菜 -- 服务器架设篇

    特别强调

    底下这些文件主要是针对在 Linux 上的网络服务器来书写架设方式的,鸟哥主要以使用 RPMYUM 作为

    软件安装的 CentOS 为基础系统。 CentOS 是属于 Red Hat Enterprise Linux (RHEL) 的操作系统,所

    以理论上 RHEL, CentOS, Fedora 等版本都适用的啦! 为什么要使用默认的软件管理方式来安装所有的

    服务器程序呢?这是因为大多数的 Linux 开发商都会有所谓的在线升级系统, 包括 CentOSFedora 的

    yum ,以及 SuSE 的 YOU ,还有 Debian 的 apt 等等, 因为有在线『自动升级』,所以当然会比您自

    己手动使用 Tarball 的安装方式来的方便且安全! 因为你的系统上头所有的数据可以在第一时间内 『自

    动』修补完毕嘛!

    要架设好一部 Linux 服务器实在很简单,只要按照鸟哥网站上的步骤,一步一步的慢慢设定下去, 铁

    定可以完成您所需要的设定的!但是,要维护好一部 Linux 主机,却是很困难的!您必须要熟悉 Linux

    的系统架构、网络的基本知识如协议、IP、路由、DNS 等等的基础知识才行!

    无论如何,您要开始『服务器架设篇』之前,请务必先读完『Linux 基础篇』的文章才行! 否则几乎就

    如同上面提到的,维护这样的一部 Linux 主机,是很花时间的!没有这个认知,那就不要架站吧!免得

    毒害其他的战友吶!

    在架站的过程当中,无论出现任何问题,第一个步骤就是察看登录档 (log file),那是克服问题的地方!

    net.qiang@hotmail.com

    第一部份:架站前的进修专区

    架站需要很强的 Linux 基础概念以及基础网络知识,否则的话,当网络断断续续

    的时候,您永远也不会知道是哪里出问题! 而当某个服务器软件出问题的时候,您永

    远也不晓得是发生了什么事情!老人家说『对症下药才有效』, 随便吃药是不可能『无

    病强身』的!因此,对于网络服务器来说最重要的基础档案权限、程序之启动关闭与管

    理、 Bash shell 之操作与 script 、使用者账号的管理等等,您都必须要具备最基础

    的认知才行,否则,服务器真的不好碰!

    在这一篇当中,鸟哥会介绍一下架设服务器之前你必须要具备的基础观念,以及重

    要的网络基础, 当然啦,一大堆的网络指令是需要熟悉的。这些网络指令不是要你背

    起来, 而是希望在你需要的时候可以很快速的查阅到如何使用的说! 无论如何,请您

    务必在架站前『读过 Linux 基础篇』及『 读过网络基础篇』的文章,否则大家很难跟

    您讨论呢! 这个部分鸟哥放在最前面,希望大家『务必』要查看这些资料啊!

    net.qiang@hotmail.com

    作者序

    最近更新日期:20110818

    作者序:

    服务器的架设并不容易,除了需要了解每个服务器的工作原理与目的之外,还得要

    熟悉网络以及基础系统管理操作等等。 不过目前有太多的书籍以及设定参考范例在教

    导大家如何架设一个可以用的服务器,但这些范例却没有就服务器的维护与管理, 还

    有发生问题时应该要如何处理的流程作个解释。因此,架设服务器是很容易的,不过,被攻击也是很常见的啊! 所以,笔者在这本书里面就从系统基础以及网络基础讲起,再谈谈网络攻击后以及防火墙防护主机后,才进入架设服务器的章节。

    这本书是以 CentOS 6 为范例来介绍的,这个版本的 Linux 有很多与以前不一样

    的服务设定,常常会让人找不到熟悉的配置文件位置。 而且笔者使用 SELinux 默认启

    动的模式来进行服务器的设定,加入 SELinux 后,整个服务器的设定就显的有些难度

    哩! 此外,以前没有用过的 NetworkManager 服务也来凑一脚,所以老是会让人搞到

    满脑子混乱~笔者光是重复测试之前版本与此版本的对应, 就花去不少的时间呢!希

    望这样的测试结果,能够帮大家降低自行试误的过程,早点设定好您的服务器。

    这次第三版的改版幅度不算太大,主要是将前面几章网络安全的部分文章统合,加

    入了第二版被拿掉的代理服务器章节, 减少邮件服务器的进阶内容 (说实在的,邮件

    服务器的架设真的可以不用学太多了!),并加入了相当重要的 iSCSI 这种磁盘提供者

    的仿真器!同时将 vsftpd 加入了 SSL 的加密支持!并且将服务器常用在内部网络或

    因特网作个区分, 以方便使用者了解该服务常用于哪些实务上。这些分类都是笔者近

    期来在学校作专题研究时的一些观察后,所做的分析。 希望能够对读着们有些帮助。

    谁适合这本书:

    这本书既然是谈论比较深入的架站规划、流程、技巧与维护等工作,那么比较基础

    的 Linux 操作与相关的 Shell 语法,在这本书里面就不可能谈论的很多,毕竟, Linux

    基础篇 已经完成了,没有必要在这本书里面再次的重复提及的。 所以,当您尝试阅读

    这本书的时候,请注意,您最好已经具备有 Linux 操作系统的相关知识,以及文字接

    口 (BASH Shell) 的相关技巧,还有,必需要能够了解一些 Unix-Like 的工作流程,例如登录文件的产生与放置的地点、服务的启动与关闭方式、 工作排程的使用方法、以及其他种种相关的事项。也就是说,如果您从未接触过 Linux ,那么建议您由『鸟

    哥的 Linux 私房菜 -- 基础学习篇』开始 Linux 的探索历程,否则,这本书对您而言,可能会过于难以理解。 net.qiang@hotmail.com

    另外,这本书的内容很多时候会提到一些简单的概念而不是僵化的流程, 尤其每

    个人对于网站的要求都不相同,也就是说,每个人的网站其实都是带有个人风格的, 因

    此僵化的流程并没有太大的意义~只要能够依据这些简单的概念来进行网站的架设,鸟

    哥认为, 您的主机设定应该都不会有太大的问题。怕的是什么呢?都没有碰过 Linux ,却想直接参考架站的程序来完成网站的架设的朋友,这些朋友最容易忽略后续的维护与

    管理了! 这也容易造成网站的不稳定或者是造成被网络怪客 (Cracker) 入侵的问题啊!

    这本书主要的目的是引导用户进入 Linux 强大的网络功能的世界, 书内的范例都

    是鸟哥自己实际测试过没有问题才写上来的,不过,毕竟每个人的网络环境与操作习惯

    都不相同, 因此,鸟哥不敢说我书内的范例一定可以在您的系统上操作成功的! 然而,书内都会提到一些基本概念的问题,只要理解这些基本的概念,并且对于 Linux 的操

    作熟悉,相信您一定可以利用书内的范例来开发出适合您自己的服务器设定的!不过,对于没有碰过 Linux 的朋友,还是建议从头学起,至于为什么一定得从头学起,在本

    书的第一章内会仔细谈论喔。

    章节安排:

    本书在章节的规划上面,主要分为四大部分,分别是『网络基础篇』、『主机的简

    易防火措施篇』、『区网常见服务器架设篇』 与『因特网服务器篇』,前两篇的所有

    内容是很基础的网络概念与实际网络设定,包括很重要的网络自我检测以及防火墙设定

    等, 与您的服务器能不能运作有很大的关系!所以,您在开始服务器的架设之前,请

    务必将前面两篇共十章先念过一遍才好吶!

    在『网络基础篇』当中,我们会介绍简易的网络基础,这包含了硬件的选择与布线。

    此外,还有在 Linux 上面连上 Internet 的方法,以及在 Linux 发生无法连接因特网

    的问题时,简易的查验方法。看完了这一篇之后,您的 Linux 不论以何种方式来进行

    Internet 的连接,就应该都不成问题啰,而且,鸟哥希望看完这一篇之后,您可以了

    解 Linux 的网络问题,并自行解决喔!

    在『主机的简易防火措施篇』中,我们会简单的介绍 Linux 的强大网络功能下,可能会发生的网络入侵问题。接下来,了解了问题后,当然就是需要来解决他啰!所以,我们会就 TCPIP, port, 套件漏洞的修补与防火墙等来推敲一下,该如何做好 Linux

    主机的防备呢? 『没有永远安全的主机』是正确的言论,所以, 即使您的主机只是一

    个小小的网站,也千万不能忽略这个防火墙的认识喔!

    在『区网常见服务器架设篇』当中,我们会介绍内部网络经常使用的远程联机服务

    (ssh, vnc, xrdp)、网络参数设定服务 (dhcp, ntp)、网络驱动器服务 (samba, nfs,iscsi),以代理服务器等服务。 这些章节虽然跳着看是没有问题的,不过,鸟哥建议

    十一章的联机服务器得要花些时间瞧瞧,尤其是 ssh 的密钥系统, 对于异地备援是相

    当有帮助的! net.qiang@hotmail.com

    在『在因特网服务器篇』当中,我们会介绍 DNS, WWW, FTP 及 mail server 等常

    见的服务。 在因特网上面要使用较好记的主机名来联机,就得要透过 DNS 系统,因此,这个 DNS 服务器相当重要!在这一版的 DNS 加入了 view 的简单概念,可以适用于区

    网内的主机联网,可以参考看看。

    章节的安排主要仍然是由浅入深来进行编排的,因此,还是希望读者们可以由前面

    慢慢的往下看, 不要着急的直接翻到后面去抄一些架设流程喔!而且,几乎每一章节

    后面都会具有一些简单的课后练习题, 这些练习题有的是鸟哥参加过的考试内容,有

    的是鸟哥想到的一些数据,很适合大家思考喔!不要错过这些练习题的训练喔!

    感谢:

    感谢自由软件社群志工们的软件开发,让我们能有这么棒的操作系统来建置服务器!

    也要感谢读者们的回馈,让鸟哥能够在 Linux 服务器的原理与设定方面有更深入的了

    解。感谢 Study Area 酷学园伙伴们的支持,包括 netman 大大、酷学园板主群、 鸟

    园讨论板主群、以及参加实体活动的诸位朋友。感谢昆山科大资传系张世熙主任与各位

    老师、伙伴们对不才小弟在研究方面的支持! 更要感谢鸟哥的学生们,有你们的帮忙,让鸟哥可以有较多的时间玩些服务器测试与文章的撰写!

    最后,亲爱的鸟嫂,谢谢你多年来的付出,尤其这两年帮我们家添了两个可爱的宝

    贝:宸宸与轩轩! 希望鸟窝一家,以及所有的朋友们平安、幸福!

    鸟哥 20110818

    另外,关于本书的戡误信息,请参考:

    · http:linux.vbird.orgbook

    20030714:第一次完成日期!

    20030918:加入一些说明,尤其是各个服务器的简介。a

    20070301:取消各个服务器的简介,太占篇幅了!修改初版序的内容,增加再版序的

    部分。

    20070301:初版序我将他拿到 这里

    20110818:二版序移动到这里

    net.qiang@hotmail.com

    第一章、架设服务器前的准备工作

    最近更新日期:20110714

    很多朋友因为自身或服务单位的需求,总是有架设各种网络服务器的时刻,这个时候大多数的前辈都会

    推荐他们使用 Linux 做为服务器架设的操作系统。但因为这些朋友很多都没有受过 Linux 操作系统操

    作方面的训练,因此总觉得反正都是操作系统,所以 Linux 应该也跟 Windows 差不多吧!那么就硬着

    头皮使用图形接口去设定好众多的服务器,也有可能参考网络上一些文章, 即使是透过文字接口去设定,也能够很轻松的作好服务器的架设。问题是,这样的一部服务器是很容易被绑架的, 而且,如果网络不

    通,你如何自行将问题克服 (trouble shooting)?难道出问题只能无语问苍天?所以啰, 除非你只是

    暂时需要架设网络服务器,可以请朋友或其他信息公司帮你忙,如果你本身就是信息方面的服务提供商,那鸟哥建议你在进行服务器实务设定之前,看一看这篇,试试看你到底有没有具备网络服务器的设定技

    能了呢?

    1.1 前言: Linux 有啥功能

    1.1.1 只想用 Linux 架设服务器需要啥能力?

    1.1.2 架设服务器难不难呢?

    1.2 基本架设服务器流程

    1.2.1 网络服务器成功联机的分析

    1.2.2 一个常见的服务器设定案例分析

    1.2.2-1 了解网络基础

    1.2.2-2 服务器本身的安装规划与架站目的的搭配:全新安装

    1.2.2-3 服务器本身的基本操作系统操作:建立账号, 修改权限, Quota, LVM

    1.2.2-4 服务器内部的资源管理与防火墙规划

    1.2.2-5 服务器软件设定:学习设定技巧与开机是否自动执行

    1.2.2-6 细部权限与 SELinux

    1.2.3 系统安全与备份处理

    1.3 自我评估是否已经具有架设服务器的能力

    1.4 本章习题

    1.5 针对本文的建议:http:phorum.vbird.orgviewtopic.php?t=23676

    1.1 前言: Linux 有啥功能

    很多刚接触 Linux 的朋友常常会问的一句话就是:『我学 Linux 就是为了架设服

    务器,既然只是为了架设服务器,为什么我还要学习 Linux 的其他功能?例如:例行

    性工作排程、Bash Shell ,又干嘛去认识所有的登录档等等,我又用不到!此外,既

    然有好用的 Web 接口的 Server 设定软件,可以简单的将网站架设起来,为什么我还

    要去学习 vim 手动的编辑一些配置文件?干嘛还需要去理解服务器的工作的原理?』

    上面这些话对于刚刚学会架设网站的人来说,真是替他们道出了一个新手的心声啊!不

    过,对于任何一个曾经有过架设公开网站的朋友来说,上面这些话,真的是会害死人!

    为什么呢?底下我们就来分析一下。 net.qiang@hotmail.com

    1.1.1 只想用 Linux 架设服务器需要啥能力?

    如果有人问你:『Linux 最强大的功能是什么』?大概大家都会回答『是网络功能

    啊!』,接下来,如果对方再问:『所以学 Linux 就是为了架设服务器啰?』呵呵!

    这个问题可就见仁见智啰!说穿了, Linux 其实就是一套非常稳定的操作系统,任何

    工作只要能在 Linux 这个操作系统上面跑,那他就是 Linux 可以达成的功能之一啰!

    所以 Linux 的作用实在不止于网络服务器的架设吶。

    举例来说,在 Linux 上面开发跨平台的数值模式 (model) 诸如大型的大气仿真模

    式,由于 Linux 的稳定与完善的资源分配功能,使得在 Linux 上面开发出来的程序运

    作的又快又稳定。此外,诸如 KDE, GNOME 等漂亮的图形接口,搭配诸如 Open Office

    等办公室软件,Linux 立刻摇身一变而成为优秀的办公室桌面计算机了 (Desktop)。此

    外, Google 制作出专门给手机系统用的 Android 也是以 Linux 为底开发的。所以说,千万不要小看了 Linux 的多样功能吶。

    不过,不管怎么说, Linux 的强大网络功能确实是造成 Linux 能够在服务器领域

    内占有一席之地的重要项目。 既然如此,我们就好好的来探索一下 Linux 的网络世界

    吧!首先, Linux 到底可以达成哪些网络功能呢?这可就多着咯!不论是 WWW, Mail,FTP, DNS, 或者是 DHCP, NAT 与 Router 等等,Linux 系统都可以达到,而且,只要

    一部 Linux 就能够达到上面所有的功能了!当然,那是在不考虑网络安全与效能的情

    况下,你可以使用一部 Linux 主机来达成所有的网络功能。

    但是你得要知道,『架站容易维护难』啊!更深一层来说,『维护还好、除错更难

    啊!』架设一个网站有什么难的?即使你完全没有摸过 Linux ,只要参考鸟哥的书籍

    或者是网站,而且一步一步照着做,包准你一个下午就可以架设完成五个以上的网络服

    务了!所以说, 架设服务器有什么难的?但要晓得的是,这样的一个网站,多则三天,少则数小时,立刻就会被入侵了! 此外,被入侵之后,或许可以藉由一些工具来帮你

    将 root 的密码救回来,可惜的是, 这样的一个网站还是有被做为中继站的危险存在

    的!

    另外,如果你使用工具 (例如 Webmin) 却怎么也架设不起来某个网站时,要怎么

    解决?如果你不懂该 Server 的运作原理与 Linux 系统的除错讯息,那么难道只能无

    语问苍天?不要怀疑这种情况的可能性, 参考一下各大论坛上面的留言就可以很清楚

    的知道这种情况的存在有越来越明显的趋势呢!

    所以说,架设服务器之前还是有一些基本的技能需要学会的!而且这些技能是『一

    旦学会之后,真正是终身受用啊!』只要花一个学期 (三~六个月) 就能学会一辈子可

    以使用的技能,这个学习的投资报酬率真是太高了! 所以,一开始的学习不要觉得苦,那真的是值得的喔!^_^ net.qiang@hotmail.com

    Tips:

    举例来说,鸟哥在 2003 ~ 2005 年跑去当兵了,当兵期间很少碰

    Linux 啦!等到退伍后接到的第一个班要带 Linux 国际证照时,几

    乎所有的指令都在看不起鸟哥 @_@~不过,懂得学习的方法的鸟哥,透过 man 啦,透过 google 啦, 透过以前学习的一些概念啦,遇

    到问题几乎都可以在一分钟内解决,同学也不会有突然不知所云的

    困扰!你说, 这样是不是很好呢?

    Linux 不是很好学,根据鸟哥过去教学的经验,很多同学在学 Linux 时真是非常的痛

    苦,不过学完之后, 以前在 Windows 上面遇到的困难却也自然而然的迎刃而解!因为

    Linux 训练我们时,是要我们去解决一个发现的问题, 这过程需要很多基础知识的培

    养,所以学完他之后,你会觉得很多事情都变的很简单而单纯。但如果使用 Windows 的

    懒人方案,很多问题就不可能了解为啥会发生与为啥可以这样处理了!我们会在下一节

    分析一下架设服务器的流程, 也会提供相对应的你应该要会的 Linux 技能喔!

    1.1.2 架设服务器难不难呢?

    不管是 Windows 还是 Linux ,要架设好一部堪称完美的服务器,『基本功课』还

    是得做的,这包括了:

    1. 基础网络的基本概念,以方便进行联网与设定及除错;

    2. 熟悉操作系统的简易操作:包括登录分析、账号管理、文书编辑器的使用等

    等的技巧;

    3. 信息安全方面:包括防火墙与软件更新方面的相关知识等等;

    4. 该服务器协议所需软件的基本安装、设定、除错等,才有办法实作。

    而且,每一个项目里面所需要学习的技巧可多着呢!『什么?要学的东西那么多啊!』

    是啊! 所以,不要以为信息管理人员整天闲闲没事干的吶,大家可是天天在出卖知识

    的,同时, 还得天天应付随时可能会发生的各种漏洞与网络攻击手法呢!真不是人干

    的工作~~

    这么说的话,架设服务器真的是挺难的喔!事实上,架设服务器其实蛮简单的哩!

    咦!~怎么又说架设服务器简单了? 不是说架设服务器难吗?呵呵!其实『架设服务

    器很难』是由于朋友们学习的角度有点偏差的原因啦! 还记得当初进入理工学院的时

    候,天天在念的东西是基础物理、基础化学、工程数学与流体力学等基础科目, 这些

    科目花了我们一至两学期的时间,而且内容还很难吶~都是一大堆的理论背不完。 怪

    了?我们进理工学院是为了求取更高深的知识,那么这些基础知识学了有什么用吶?

    呵呵!更高深的知识都是建构在这些基本科目的理论上面的,所以 万一你基础的科目

    没有读好,那么专业科目里面提到的基本理论怎么可能听的懂?

    这样说应该就不难了解了吧!没错!认识操作系统与该操作系统的基本操作,还有

    那个重要的网络基础, 就是我们在架设服务器前的『基础科目』啦!所以说,在进入 net.qiang@hotmail.com

    Linux 的服务器世界之前,真的不能够略过网络基础的相关知识,同时, Linux 系统

    的基本技能也必需要能够理解吶!

    好了,或许你还是对于 Linux 系统里面『什么是很重要的知识』不甚了解, 果真

    如此的话,那么我们就举个简单的例子来说明一下啰!底下列出一般的架设服务器流程,我们由架设服务器的流程当中,来看一看什么是重要的 Linux 相关技能吧! ^_^。

    Tips:

    在这一章当中,鸟哥不再就 linux 基础指令进行解析,因为在 『鸟

    哥的 Linux 私房菜 -- 基础学习篇』里面已经详细的介绍过了! 如

    果持续的介绍指令,简直是浪费篇幅~所以底下仅介绍一个 Linux

    基础学习重要性的分析喔!

    1.2 基本架设服务器流程

    虽然不同的服务器提供的服务并不相同,而且每种服务的原理也不见得都一样,不

    过,每种服务器由规划、架设到后续的安全维护, 其实整个流程是大同小异的。什么?

    你不相信啊?为了让你相信,那我们就来一项一项的分析看看吧!

    1.2.1 网络服务器成功联机的分析

    底下我们就整个服务器的简易架设流程当中来分析一下,以了解为什么了解操作系

    统的基础对于网站维护是相当重要的呢?首先,到底我们是如何联机到服务器的? 联

    机到服务器又取得啥咚咚?我们先以底下这张图示来作个简单的说明好了: net.qiang@hotmail.com

    图 1.2-1、网络联机至服务器所需经过的各项环节

    先来理解一下,到底我们联机到服务器想要得到什么?举例来说,你联机到

    Youtube 想要看影片,所以对方就提供影片串流数据给你; 你连到 Yahoo 想要看新闻,所以对方就提供新闻的文本文件给你;你联机到无名小站想要看美女,对方就传图档给

    你;你联机 Facebook 想要去种田,对方就参考你之前留下来的记录,从数据库里面将

    你的记录拿出来传给你。看到没有,你联机到服务器,重点在取得对方的数据, 而一

    般数据的存在就是使用档案啰!那你有没有权限取得?最终与该文件系统的设定有关啦!

    上图显示的是:首先,客户端到服务器的网络要能够通,等到客户端到达服务器后,会先由服务器的防火墙判断该联机能否放行, 等到放行之后才能使用到服务器软件的

    功能。而该功能又得要通过 SELinux 这个细部权限设定的项目后,才能够读取到文件

    系统。 但能不能读到文件系统呢?这又跟文件系统的权限 (rwx) 有关啦!上述的每个

    部分都要能够成功,否则就无法顺利读取数据啰。

    所以,根据上面的流程我们大概可以将整个联机分为几个部分,包括:网络、服务

    器本身、内部防火墙软件设定、各项服务配置文件、细部权限的 SELinux 以及最终最

    重要的档案权限。底下就分几个细项来谈谈啰。

    1. 网络:了解网络基础知识与所需服务之通讯协议

    既然要架设服务器,首先当然得要了解一下因特网。因为不管是哪种操作系统,若想要与因特网联机,这个网络基础就得了解。 举例来说,『网域』是经常会

    谈到的概念,当你发现一个设定为 192.168.1.0255.255.255.0 时,晓得那是

    什么鬼东西吗? 如果不知道的话,呵呵!绝对无法设定好网站的啦!另外,为

    何你需要服务器?当然是想要达成某项网络服务。 举例来说,传输档案可以用

    FTP,那 WWW 可以传递档案吗?网芳可以传递吗?各有何用处?哪个比较方便?

    对于客户或老板来说,我们所设定的服务能否满足他们的需求等等,这都需要了

    解,否则你将一头雾水啊! 因此这部份你就得要了解: net.qiang@hotmail.com

    o 基本的网络基础知识:包括以太网络硬件与协议、TCPIP、网络联机

    所需参数等;

    o 各网络服务所对应的通讯协议原理,以及各通讯协议所需对应的软件。

    2. 服务器本身:了解架网络服务器之目的以配合主机的安装规划

    想要架设服务器吗?那...架什么服务器?这个服务器要不要对 Internet 开放?

    这个服务要不要针对客户提供相关账号? 要不要针对不同的客户账号进行例如

    磁盘容量、可活动空间与可用系统资源进行限制?如果要进行各项资源的限制,那服务器操作系统应该要如何安装与设定?问题很多吧!所以,先了解你要的服

    务器服务目的之后,后续的规划才能陆续出炉。 不过,如果架站只是为了『练

    功』而已,呵呵!那就不需要考虑太多了~

    3. 服务器本身:了解操作系统的基本操作

    网络服务软件是需要建置在操作系统上面的,所以基本的操作系统操作就得要了

    解才行啊!包括软件如何安装与移除? 如何让系统进行例行的工作管理?如何

    依据服务器服务之目的规划文件系统?如何让文件系统具有未来扩充性 (LVM

    之类)? 系统如何管理各项服务之启动?系统的开机流程为何?系统出错时,该

    如何进行快速复原等等,这都需要了解的呢!

    4. 内部防火墙设定:管理系统的可分享资源

    一部主机可以拥有多种服务器软件的运作,而很多 Linux distributions 出厂

    的默认值就已经开放很多服务给 Internet 使用了,不过这些服务可能并不是你

    想要开放的呢。我们在了解网络基础与所需服务的目的之后, 接下来就是透过

    防火墙来规范可以使用本服务器服务的用户,以让系统在使用上拥有较佳的控管

    情况。 此外,不管你的防火墙系统设定的再怎么严格, 只要是你要开放的服务,那防火墙对于该服务就没有保护的效果。因此,那个重要的在线更新软件机制就

    一定要定期进行!否则你的系统将会非常非常的不安全!

    5. 服务器软件设定:学习设定技巧与开机是否自动执行

    刚刚第一点就提到我们得要知道每种服务所能达成的功能,如此一来才能够架设

    你所需要的服务的网站。 那你所需要的服务是由哪个软件达成的?同一个服务

    可否有不同的软件?每种软件可以达成的目的是否相同? 依据所需要的功能如

    何设定你的服务器软件?架设过程中如果出现错误,你该如何观察与除错? 可

    否定期的分析服务器相关的登录信息,以方便了解该服务器的使用情况与错误发

    生的原因? 能否通知多个用户进行联机测试,以取得较佳的服务器设定值?所

    以这里你可能就得要知道:

    o 软件如何安装、如何查询相关配置文件所在位置;

    o 服务器软件如何设定? net.qiang@hotmail.com

    o 服务器软件如何启动?如何设定自动开机启动?如何观察启动的埠

    口?

    o 服务器软件激活失败如何除错?如何观察登录档?如何透过登录档

    进行除错?

    o 透过客户端进行联机测试,如果失败该如何处理?联机失败的原因是

    服务器还是防火墙?

    o 服务器的设定修改是否有建立日志?登录档是否有定期分析?

    o 服务器所提供或分享的数据有无定期备份?如何定期自动备份或异

    地备份?

    6. 细部权限设定:包括 SELinux 与档案权限

    等到你的服务器全部设定妥当,最后你所提供的档案数据权限却是给了『 000 』

    的权限分数, 那鸟哥很肯定的说,大家都无法读到你所提供的数据啊...!此外,新的 distributions 都建议你要启动 SELinux ,那是什么咚咚? 如果你的数

    据放置于非正规的目录,那该如何处理 SELinux 的问题?又如何让档案具有保

    密性或共享性 (档案权限概念与 ACL 等) 等等,这也都是需要厘清的观念喔!

    上述的服务器架设流程中,其实除了第 5 点之外,其他步骤在各服务器设定都需

    要了解啊!而且都是一样的东西说! 因此,这些基础如果学会了,最终,你只要知道

    第 5 点里面那个软件的基础设定,你的服务器一下子就可以设定完成啦! 这样说,你

    是否开始觉得基础学习很重要啊! ^_^

    1.2.2 一个常见的服务器设定案例分析

    上面讲完后或许你还是不很清楚到底这些技能如何串起来?鸟哥这里提供一个简

    单的案例来分析一下好了, 这样你应该就比较容易清楚的知道为何需要学习这些咚咚。

    · 网络环境:假设你的环境里面 (不管是家里还是宿舍) 共有五部计算机,这

    五部计算机需要串接在一起,且都可以对外联机;

    · 对外网络:你的环境只有一个对外的联机方式,这里假设是台湾较流行的

    ADSL 或 10M 的光纤这种透过电话线拨接的类型;

    · 额外服务:你想要让这五部计算机都可以上网,而且其中还有一部可以做为

    网络驱动器机,提供同学或家人作为数据备份与分享之用;

    · 服务器管理:由于你可能需要进行远程管理,因此你这部服务器得要开放联

    机机制,以让远程计算机可以联机到这部主机来进行维护;

    · 防火墙管理:因为担心这部做为档案分享服务器的系统被攻击,因此你需要

    针对 IP 来源进行登入权力的控制;

    · 账号管理:另外,由于同学的数据有隐密与共享之分,因此你还得要提供每

    个同学个别的账号, 且每个账号都有磁盘容量的使用限制; net.qiang@hotmail.com

    · 后端分析:最后,由于担心系统出问题所以你得要让系统自动定期分析磁盘

    使用量、登录文件参数信息等等。

    在上述的环境中,你要考虑的东西有哪些呢?依据本小节一开始谈到的六个步骤来

    分析的话,你可能需要底下这些咚咚喔!

    1.2.2-1 了解网络基础

    · 硬件规划

    我们想要将五部计算机串接在一块,但是却又只有一个可以对外的联机,此时就得

    要购买集线器 (hub) 或者是交换器 (switch) 来串接所有的计算机了。但是这两者有

    何不同?为何 switch 比较贵?我们知道网络线被称为 RJ-45 的网络线, 但网络线材

    竟然有等级之分,这个等级要怎么分辨?不同等级的线材速度有没有差异?等到这些硬

    件基础了解之后, 你才能够针对你的环境来进行联机的设计。这部份我们等到下一章

    再来介绍。

    · 联机规划

    由于只有一条对外联机而已,因此通常我们就建议你可以用如下的方式来串接你的

    网络:

    图 1.2-2、硬件的网络联机示意图

    透过 IP 分享器,我们的五部计算机就都能够上网了。此时你得要注意,能否上网

    与 Internet 有关,Internet 就是那有名的 TCPIP 通讯协议,而想要了解网络就得

    要知道啥是 OSI 七层协定。我们也知道能连上 Internet 与所谓的 IP 有关,那么我

    们内部这五部计算机所取得的 IP 能不能拿来架站?也就是说, IP 有没有不同种类?

    如果 IP 分享器突然挂了,那你的这五部计算机能不能联机玩魔兽?这就考虑你的网络

    参数设定问题了!

    · 网络基础 net.qiang@hotmail.com

    如果你的同学或家人跑来跟你说,网络不通哩!你直觉会是什么?硬件问题?软件

    问题?还是啥莫名其妙的问题? 如果你不懂网络基础的 IP 相关参数,包括路由设定

    以及领域名系统 (DNS) 的话,肯定不知道怎么进行联机测试的。 所以啰,此时你就会

    被骂说:『怎么都不懂还想要管理我们家网络』...那时不是很糗吗?所以要学好一些

    嘛! 这部份就很复杂了,包括 TCPIP, Network IP, Netmask IP, Broadcast IP,Gateway, DNS IP 等等,都需要理解喔!

    了解了这些原理之后,你才能够进行除错 (debug) 的工作,否则,错误一出,你

    可能就会被骂的臭头的! 最常见的错误中,举例来说,如果你的主机明明就可以使用

    ping 这个指令去接触远方的主机 (ping IP),但是就是无法使用 ping hostname 去接

    触远方的主机,请问,这个原因是什么呢?了解网络基础的朋友一看就知道几乎是 DNS

    出问题了,不晓得的朋友就是想破头也得不到答案。既然知道出问题的地方,就能够针

    对该问题去处理嘛!

    网络基础会影响到你的网络设定是否正确,这真的很重要吶,因为,如果你的网络

    不通,那么即使服务器架设成功了, 别人可以看的到吗?所以说,要架站,真的得对

    网络基础的部分下一些功夫才行的。关于网络基础这部份我们在基础篇并没有谈过, 所

    以我们会在下一章网络基础时再详加说明喔!

    1.2.2-2 服务器本身的安装规划与架站目的的搭配

    如同图 1.2-2 所示,Server 端是在那五部计算机之中,而且 Server 必须要提供

    针对不同账号给予网络驱动器机,我们这边会提供网芳 (SAMBA) 这个服务,因为他可

    以在 LinuxWindows 之间通用之故。 且由于需要提供账号给使用者,以及想到未来的

    磁盘扩充情况,因此我们想要将 home 独立出来,且使用 LVM 这个管理模式, 并搭

    配 Quota 机制来控制每个账号的磁盘使用量。

    所以说,你得知道 Linux 目录下的 FHS (Filesystem Hierarchy Standard) 的规

    范,否则分割槽给到错误的目录,会造成无法开机!那为什么要将 home 独立放入一

    个分割槽? 那是因为 quota 仅支持 filesystem 而不支持单一目录啊!好了,如果给

    你一部全新的主机,那你该如何安装你的系统呢?

    实作题-全新安装:

    请到昆山科大 (http:ftp.ksu.edu.twFTPCentOS), 义守大学

    (http:ftp.isu.edu.twpubLinuxCentOS) 或国家高速网络中心

    (http:ftp.twaren.netLinuxCentOS ) 下载最新的 Linux 映像档来刻录

    (201107 可下载最新版为 CentOS 6.0),并且依据上述的需求安装好你的 Linux

    系统 (最重要的其实就是那个分割而已,其他的动作可以在安装完成后再说)。

    答:

    由于 Linux 的安装我们已经在基础篇内的第四章介绍过了,这里我们不再使

    用图形接口来说明, 仅使用文字说明来介绍你在每个项目应该处理的动作而已。 net.qiang@hotmail.com

    此外,由读者们的响应发现,学习者经常只有一部主机, 因此,这里我们建议你

    使用 Virtualbox (http:www.virtualbox.org) 来仿真出一部实体主机,以安

    装你的测试环境。并请注意, 这部主机将会使用在本书的各个章节测试中。

    Virtualbox 的安装与设定请自行参考其官网上面的 Documentation 介绍,这里不

    再赘言。只是需要注意的是, 若 (1)需要架设网站来上网,建议网络使用桥接模

    式 (bridge) ,且网络卡类型使用 Intel 的桌面计算机类型即可。 (2)由于我们

    未来会教导 NAT 服务器,因此最好有两张网卡,一张使用 bridge 一张使用内网

    (intnet) 较佳。 而 (3)磁盘配置建议使用 SATA 类型,且容量请给予 25GB 以上。

    (4)内存至少该给予 512MB 以上,最好有 1GB 来测试。 其他的请参考官网文件,或者使用默认配置即可。当然啦,如果你有独立的实体机器来安装,那就更好了!

    不需理会这一小段文字的说明喔。

    默认配置如下:

    · 分割表请依如下方式进行:

    o : 2GB

    o boot: 200MB

    o usr : 4GB

    o var : 2GB

    o tmp : 1GB

    o swap : 1GB

    o home: 5GB,并且使用 LVM 模式建置

    o 其他容量请保留,未来再来进行额外练习!

    · 软件挑选时,请选择『 basic server 』项目即可;

    · 信息安全部分,防火墙选择启动,SELinux 选择强制 (Enforce);

    · 假设 IP 分享器有自动分配 IP 的功能,所以网络参数先选择 DHCP 即

    可,未来再自己修改。

    实际流程大致如下 (鸟哥以 CentOS 6.0 为例说明)

    1. 由于我们使用光驱开机来安装系统,因此得先进入 BIOS ,选择光驱开

    机,并且将 CentOS 6.x 的 DVD 放入光驱中;

    2. 在启动安装的画面中,选择『Install or upgrade an existing system』

    来安装新系统;

    3. 出现『 Disc Found 』字样,此时建议可以选择『 Skip 』即可略过;

    4. 在欢迎画面以鼠标点选『 Next 』;

    5. 语系数据可以选择『Chinese(Traditional)(中文(正体))』;

    6. 键盘格式保留『美式英文』即可;

    7. 安装包含的装置类型,直接选择默认的『基本储存装置』即可;

    8. 因为我们是全新的硬盘,因此会出现一个找不到分割表的错误,此时选

    择『重新初始化』即可;

    9. 进入网络主机名的设定,先保留『localhost.localdomain』即可。 同

    画面中还有一个『配置网络』的选项,我们先不要动他!等未来谈到网络设 net.qiang@hotmail.com

    定再来处理即可;

    10. 进入时区选择,请选择『亚洲台北』即可;

    11. 出现 root 密码制作,这里我们先设定为『 centos 』吧! 这个密码

    太简单,系统会出现警告,你选择『照样使用』即可。你也可以自行设定其

    他密码;

    12. 出现哪一类型安装的模式,因为我们有自己的分割考虑,所以,请选择

    『建立自定义分割格式』来处理喔!

    13. 在出现分割画面中,先点选『sda』项目,然后点选『建立』的按钮,在出现的窗口中, 再点选『标准分割区』项目,然后点『建立』。 在最后

    的窗口中填写挂载点、容量等信息后,最终按下『确定』即可。最终画面有

    点像这样:

    图 1.2-3、分割的参数下达示意图

    14. 依据前面的分割规划,持续进行上述的动作,将所有的分割都处理完毕,除了 home 之外。

    15. 由于 home 想要使用 LVM 的方式来建立文件系统,因此点选『建立』

    后,选择『LVM 实体卷册』项目,按下建立,在出现的分割窗口中容量填写

    5GB,示意图有点像这样: net.qiang@hotmail.com

    图 1.2-4、分割出 LVM 分割槽的方式

    接下来回到原本的分割画面后,按下『建立』并选择『LVM 卷册群组』项目,在出现的窗口中,卷册组名填写『server』,并且在右下方的逻辑卷册部分

    按下『新增』, 又会额外出现一个窗口,此时就填入 home 的相关参数啦!

    注意,逻辑卷册我们这里设定为 myhome 喔! 画面有点像底下这样:

    net.qiang@hotmail.com

    图 1.2-5、建立最终的 LVM 的 LV 与 home

    回到原本的分割画面,最终的显示有点像底下这样,然后请按下『下一步』

    继续。 但由于新建分割需要格式化,所以又会出现一个警告窗口!没问题

    的,选择『格式化』以及『将变更写至磁盘』吧!

    图 1.2-6、分割的最终结果 net.qiang@hotmail.com

    16. 出现启动加载程序作业,都使用默认值即可,请按『下一步』;

    17. 出现安装类型,因为我们主机的角色为服务器,因此选择『Basic

    Server』项目! 其他项目保留默认,然后按下『下一步』就开始进行安装

    程序啰!

    18. 经过一段时间的等待,出现重新启动后,你就重新启动吧!喔!要记得

    将 DVD 拿出来喔!(怪异的是,鸟哥第一次安装后, 竟然发现电源管理有

    问题,得在 kernel 处增加 noapic 才能顺利开机呢!)

    19. 装好并重新启动后,就会进入 runlevel 3 的纯文本界面!因为是服务

    器嘛!

    1.2.2-3 服务器本身的基本操作系统操作

    既然我们这部主机得要提供不同账号来使用他们自己的网络驱动器,因此还需要建

    立账号啊,使用磁盘配额 (quota) 等等的。 那么你会不会建立账号呢?你会不会建置

    共享目录呢?你能不能处理每个账号的 Quota 配额呢?如果 home 的容量不足了,你会不会放大 home 的容量呢?有没有办法将系统的磁盘使用情况定期的发送邮件给

    管理员呢?这些都是基本的维护行为喔! 我们底下就以几个实际例子来练习看看你的

    基础能力吧!

    例题-大量建置账号:

    假设我的五个朋友账号分别是 vbirduser{1,2,3,4,5},且这五个朋友未来想要

    共享一个目录,因此应该要加入同一个群组,假设这个群组为 vbirdgroup,且这五

    个账号的密码均为 password 。那该如何建置这五个账号?

    答:

    你可以写一支脚本程序来进行上述的工作喔!

    [root@localhost ~] mkdir bin

    [root@localhost ~] cd rootbin

    [root@localhost bin] vim useradd.sh

    !binbash

    groupadd vbirdgroup

    for username in vbirduser1 vbirduser2 vbirduser3 vbirduser4 vbirduser5

    do

    useradd -G vbirdgroup username

    echo password | passwd --stdin username

    done

    [root@localhost bin] sh useradd.sh

    [root@localhost bin] id vbirduser1

    uid=501(vbirduser1) gid=502(vbirduser1) net.qiang@hotmail.com

    groups=502(vbirduser1),501(vbirdgroup)

    context=root:system_r:unconfined_t:SystemLow-SystemHigh

    最后利用 id 这个指令来查询看看,是否群组的支持是对的啊!

    例题-共享目录的权限:

    这五个朋友的共享目录建置于 homevbirdgroup 这个目录,这个目录只能给

    这五个人使用,且每个人均可于该目录内进行任何动作!若有其他人则无法使用 (没

    有权限),那该如何建置这个目录的权限呢?

    答:

    考虑到共享目录,因此目录需要有 SGID 的权限才行!否则个别群组数据会让

    这五个人彼此间无法修改对方的数据的。因此需要这样做:

    [root@localhost ~] mkdir homevbirdgroup

    [root@localhost ~] chgrp vbirdgroup homevbirdgroup

    [root@localhost ~] chmod 2770 homevbirdgroup

    [root@localhost ~] ll -d homevbirdgroup

    drwxrws---. 2 root vbirdgroup 4096 2011-07-14 14:49 homevbirdgroup

    上面特殊字体的部分就是你需要注意的部分啰!特别注意那个权限的 s 功

    能喔!

    例题-Quota 实作:

    假设这五个用户均需要进行磁盘配额限制,每个用户的配额为 2GB (hard) 以

    及 1.8GB (soft),该如何处理?

    答:

    这一题实作比较难,因为必须要包括文件系统的支持、quota 数据文件建置、quota 启动、建立用户 quota 信息等过程。整个过程在基础篇有讲过了,这里很快

    速的带领大家进行一次吧!

    1. 启动 filesystem 的 Quota 支持

    [root@localhost ~] vim etcfstab

    UUID=01acf085-69e5-4474-bbc6-dc366646b5c8 ext4 defaults 1 1

    UUID=eb5986d8-2179-4952-bffd-eba31fb063ed boot ext4 defaults 1 2

    devmapperserver-myhome home ext4

    defaults,usrquota,grpquota 1 2

    UUID=605e815f-2740-4c0e-9ad9-14e069417226 tmp ext4 defaults 1 2....(底下省略)....

    因为是要处理用户的磁盘,所以找到的是 home 这个目录来处理的啊!

    另外,CentOS 6.x 以后,默认使用 UUID 的磁盘代号而非使用文件名。

    不过,你还是能使用类似 devsda1 之类的档名啦!

    [root@localhost ~] umount home; mount -a

    [root@localhost ~] mount | grep home

    devmapperserver-myhome on home type ext4 (rw,usrquota,grpquota) net.qiang@hotmail.com

    做完使用 mount 去检查一下 home 所在的 filesystem 有没有上述的字

    眼!

    2. 制作 Quota 数据文件,并启动 Quota 支持

    [root@localhost ~] quotacheck -avug

    quotacheck: Scanning devmapperserver-myhome [home] done....(底下省略)....

    会出现一些错误的警告信息,但那是正常的!出现上述的字样就对了!

    [root@localhost ~] quotaon -avug

    devmapperserver-myhome [home]: group quotas turned on

    devmapperserver-myhome [home]: user quotas turned on

    3. 制作 Quota 数据给用户

    [root@localhost ~] edquota -u vbirduser1

    Disk quotas for user vbirduser1 (uid 500):

    Filesystem blocks soft hard inodes soft

    hard

    devmapperserver-myhome 20 1800000 2000000 5 0

    0

    因为 Quota 的单位是 KB ,所以这里要补上好多 0 啊!看的眼睛都花了!

    [root@localhost ~] edquota -p vbirduser1 vbirduser2

    持续作几次,将 vbirduser{3,4,5} 通通补上去!

    [root@localhost ~] repquota -au

    Report for user quotas on device devmapperserver-myhome

    Block grace time: 7days; Inode grace time: 7days

    Block limits File limits

    User used soft hard grace used soft hard

    grace

    ----------------------------------------------------------------------

    root -- 24 0 0 3 0 0

    vbirduser1 -- 20 1800000 2000000 5 0 0

    vbirduser2 -- 20 1800000 2000000 5 0 0

    vbirduser3 -- 20 1800000 2000000 5 0 0

    vbirduser4 -- 20 1800000 2000000 5 0 0

    vbirduser5 -- 20 1800000 2000000 5 0 0

    看到没?上述的结果就是有发现到设定的 Quota 值啰!整个流程就是这样!

    例题-文件系统的放大 (LVM):

    纯粹假设的,我们的 home 不够用了,你想要将 home 放大到 7GB 可不可行 net.qiang@hotmail.com

    啊?

    答:

    因为当初就担心这个问题,所以 home 已经是 LVM 的方式来管理了。此时我

    们要来瞧瞧 VG 够不够用,如果够用的话,那就可以继续进行。如果不够用呢?我

    们就得要从 PV 着手啰!整个流程可以是这样来观察的。

    1. 先看看 VG 的量够不够用:

    [root@localhost ~] vgdisplay--- Volume group ---

    VG Name server

    System ID

    Format lvm2....(中间省略)....

    VG Size 4.88 GiB <==只有区区 5G左右

    PE Size 4.00 MiB

    Total PE 1249

    Alloc PE Size 1249 4.88 GiB

    Free PE Size 0 0 <==完全没有剩余的容量了!

    VG UUID SvAEou-2quf-Z1Tr-Wsdz-2UY8-Cmfm-Ni0Oaf

    真惨!已经没有多余的 VG 容量可以使用了!因此,我们得要增加 PV 才行。

    2. 开始制作出所需要的 partition 吧!作为 PV 用的!

    [root@localhost ~] fdisk devsda <==详细流程我不写了!自己瞧

    Command (m for help): p

    Device Boot Start End Blocks Id System....(中间省略)....

    devsda8 1812 1939 1024000 83 Linux <==最后一

    个磁柱

    Command (m for help): n

    First cylinder (1173-3264, default 1173): 1940 <==上面查到的号码加 1

    Last cylinder, +cylinders or +size{K,M,G} (1940-3264, default 3264):

    +2G

    Command (m for help): t

    Partition number (1-9): 9

    Hex code (type L to list codes): 8e

    Command (m for help): p

    Device Boot Start End Blocks Id System

    devsda9 1940 2201 2104515 8e Linux LVM <==得到

    devsda9

    net.qiang@hotmail.com

    Command (m for help): w

    [root@localhost ~] partprobe <==在虚拟机上面得要 reboot 才行!

    3. 将 devsda9 加入 PV,并将该 PV 加入 server 这个 VG 吧

    [root@localhost ~] pvcreate devsda9

    [root@localhost ~] vgextend server devsda9

    [root@localhost ~] vgdisplay....(前面省略)....

    VG Size 6.88 GiB <==这个 VG 最大就是 6.88G 啦....(中间省略)....

    Free PE Size 513 2.00 GiB <==有多出 2GB 的容量可用了!

    4. 准备加大 home,开始前,还是先观察一下才增加 LV 容量较好!

    [root@localhost ~] lvdisplay--- Logical volume ---

    LV Name devservermyhome <==这是 LV 的名字!

    VG Name server....(中间省略)....

    LV Size 4.88 GiB <==只有 5GB 左右,需要增加 2GB 啰....(底下省略)....

    看起来,是需要增加容量啰!我们使用 lvresize 来扩大容量吧!

    [root@localhost ~] lvresize -L 6.88G devservermyhome

    Rounding up size to full physical extent 6.88 GiB

    Extending logical volume myhome to 6.88 GiB <==处理完毕啰!

    Logical volume myhome successfully resized

    看来确实是扩大到 6.88GB 啰!开始处理文件系统吧!

    5. 扩大文件系统

    [root@localhost ~] resize2fs devservermyhome

    resize2fs 1.41.12 (17-May-2010)

    Filesystem at devservermyhome is mounted on home; on-line resizing

    required

    old desc_blocks = 1, new_desc_blocks = 1

    Performing an on-line resize of devservermyhome to 1804288 (4k)

    blocks.

    The filesystem on devservermyhome is now 1804288 blocks long.

    [root@localhost ~] df -h

    文件系统 Size Used Avail Use% 挂载点

    devmapperserver-myhome

    6.8G 140M 6.4G 3% home net.qiang@hotmail.com....(其他省略)....

    可以看到文件系统确实有放大到 6.8G 喔!这样了解了吗?

    做完上面的实作之后,现在你晓得为什么在基础篇的时候,我们一直强调一些有的

    没有的了吧?因为那些东西在这里都用的上! 如果本章这些题目你都不会,甚至连为

    什么要作这些东西都不懂的话,那得赶紧回去阅读基础篇,不要再念下去了! 会非常

    非常辛苦的呦!

    1.2.2-4 服务器内部的资源管理与防火墙规划

    你可知道本章第一个实作题安装好了你的 Linux 之后,系统到底开放了多少服务

    呢?这些服务有没有对外面的世界开放监听? 这些服务有没有漏洞或者是能不能进行

    网络在线更新?这些服务如果没有要用到,能不能关闭?此外, 这些服务能不能仅开

    放给部分的来源使用而不是对整个 Internet 开放?这都是需要了解的呢。 底下我们

    就以几个小案例来让你了解一下,到底哪些数据是你必须要熟悉的呢?

    例题-不同 runlevel 的服务控管:

    在目前的 runlevel 之下,取得预设启动的服务有哪些呢?此外,我的系统目

    前不想启动自动网络挂载 (autofs) 机制,我不想要启动该服务的话,该如何处理?

    答:

    默认的 runlevel 可以使用 runlevel 这个指令来处理,那我们预设使用 3 号

    的 runlevel,因此你可以这样做:

    [root@localhost ~] LANG=C chkconfig --list | grep '3:on'

    上面指令的输出讯息中,会有 autofs 服务是在启动的状态,如果想要关闭他,可

    以这样做:

    [root@localhost ~] chkconfig autofs off

    [root@localhost ~] etcinit.dautofs stop

    上面提到的仅只是有启动的服务,如果我想要了解到启动监听 TCPUDP 封包的服

    务 (网络封包格式下章会谈到),那该如何处理? 可以参考底下这个练习题喔!

    例题-查询启动在网络监听的服务

    我想要检查目前我这部主机启动在网络端口口监听的服务有哪些,并且关闭不

    要的程序,该如何进行?

    答: net.qiang@hotmail.com

    网络监听的端口口分析,可以使用如下的方式分析到:

    [root@localhost ~] netstat -tulnp

    Active Internet connections (only servers)

    Proto Recv-Q Send-Q Local Address Foreign Address State

    PIDProgram name

    tcp 0 0 0.0.0.0:111 0.0.0.0: LISTEN

    1005rpcbind

    tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN

    1224sshd

    tcp 0 0 127.0.0.1:25 0.0.0.0: LISTEN

    1300master

    tcp 0 0 0.0.0.0:35363 0.0.0.0: LISTEN

    1023rpc.statd

    tcp 0 0 :::111 ::: LISTEN

    1005rpcbind

    tcp 0 0 :::22 ::: LISTEN

    1224sshd

    tcp 0 0 ::1:25 ::: LISTEN

    1300master

    tcp 0 0 :::36985 ::: LISTEN

    1023rpc.statd

    udp 0 0 0.0.0.0:5353 0.0.0.0:

    1108avahi-daemon:

    udp 0 0 0.0.0.0:58474 0.0.0.0:

    1108avahi-daemon:....(底下省略)....

    现在假设我想要关闭 avahi-daemon 这个服务以移除该服务启动的埠口时,应该要

    如同上题一样,利用 etcinit.dxxx stop 关闭,再使用 chkconfig 去处理开机

    不启动的行为!不过,因为启动的服务名称与实际指令可能不一样,我们在 netstat

    上面看到的 program 项目是实际软件执行文件,可能与 etcinit.d 底下的服务

    档名不同,因此可能需要使用 grep 去撷取数据,或者透过那好棒的 [tab] 按键去

    取得相关的服务档名才行。

    [root@localhost ~] etcinit.davahi-daemon stop

    [root@localhost ~] chkconfig avahi-daemon off

    我们常常会开玩笑说,如果对外开放的软件没有更新,那防火墙不过是个屁!所以

    啦,软件更新是相当重要的。 在 CentOS 内,我们已经有 yum 来进行在线更新了,你

    当然可以自己利用更改配置文件来指定 yum 要去查询的映像站 (mirror site),不过

    这里鸟哥建议使用预设的设定值即可,因为系统会主动的判断较近的映像站 (虽然常常

    会误判), 不需要人工微调啦! net.qiang@hotmail.com

    例题-利用 yum 进行系统更新

    假设你的网络已经通了,目前你想要处理全系统更新,同时需要每天凌晨 2:15

    自动进行全系统更新,该如何作?

    答:

    全系统更新使用 yum update 即可。但是由于 yum update 需要使用者手动输

    入 y 去确认真的要安装,因此在 crontab 里头处理相关任务时,就得要使用 yum -y

    update 了!

    [root@localhost ~] yum -y update

    第一次作会进行非常之久!因为系统真的有些数据要更新嘛!还是得等待的!

    [root@localhost ~] vim etccrontab

    15 2 root usrbinyum -y update

    不过这里还是要额外提醒各位喔,如果你的系统有更新过核心 (kernel) 这个软件,务必要重新启动啊!因为核心是在开机时加载的,一经载入就无法在这次的操作中

    更改版本的。

    那个 crontab 档案的处理,以及 crontab -e 的指令应用,内容的写法字段不太

    一样,请自行参考基础篇的说明去加强学习喔!

    在通过了上述的各项设定后,我们的 Linux 系统应该是比较稳定些了,再接着下

    来,我们要开始来设定资源的保护了! 例如 ssh 这个远程可登入的服务得要限制住可

    登入的 IP 来源,以及制订防火墙规则流程等。 这部份则是本教学文件后续要着重介

    绍的部分,留待后面章节再来谈吧!

    Tips:

    程序设计师所撰写的程序并非十全十美的,所以,总是可能有些地

    方没有设计好,因此就造成所谓的『程序漏洞』啰。 程序漏洞所造

    成的问题有大有小,小问题可能是造成主机的当机,大问题则可能

    造成主机的机密数据外流, 或者主机的操控权被 cracker 取得。

    在现今网络发达的年代,程序的漏洞问题是造成主机被攻击、入侵

    的最主要因素之一了。 因此,快速、有效的针对程序漏洞进行修补,是一个很重要的维护课题。

    1.2.2-5 服务器软件设定:学习设定技巧与开机是否自动执行

    这部份就是整个服务器架设篇的重要内容了!前一小节也曾谈过,在服务器架设部

    分你得要熟悉相当多的信息, 否则未来维护会显的很麻烦。我们以本章提到的大前提

    为例,我们想要提供一个网络驱动器机,那么网络驱动器机使用的机制有哪些呢? 常

    见的除了网页形式的分享磁盘之外,还有常见的网芳以及 Linux 的 NFS 方式 (后面章

    节都会继续谈到)。 net.qiang@hotmail.com

    由于假设局域网络内的操作系统大部分是 Windows 好了,因此网芳应该是个比较

    合理的磁盘分享选择。 那么网芳到底启动了多少个埠口?是如何持续提供网芳数据的?

    提供的账号有没有限制?提供的权限该如何设定? 是否可规定谁可登入某些特定目录?

    针对网芳服务的埠口该如何设定防火墙?如果系统出错该如何查询错误信息? 这个网

    芳在 Linux 底下要使用什么服务来达成?这都是需要学习的呢!

    直接告诉你,网芳的制作在 Linux 底下是由 Samba 这套软件来达成的。Samba 的

    详细设定我们会在后续章节介绍。 这里要告诉你的是, 架设一个网芳服务器,你应该

    要会的基础知识有哪些?以及告诉你,你可以背下来的架设流程中, 理论上应该要经

    过哪些步骤的过程,这样对你未来处理服务器设定时,才会有点帮助啊!

    1. 软件安装与查询

    刚刚我们已经知道网芳需要安装的是 Samba 这套软件,那么该如何查询有没有

    安装呢?如果没有安装又该如何安装呢? 那就来处理处理。

    例题:

    查出你的系统底下有没有 samba 这套软件,若无,请自行查询与安装该软件

    答:

    已安装的软件可以使用 rpm 去察看看,尚未安装的则使用 yum 功能。所以可

    以这样进行看看:

    [root@localhost ~] rpm -qa | grep -i samba

    samba-common-3.5.4-68.el6_0.2.x86_64

    samba-client-3.5.4-68.el6_0.2.x86_64

    samba-winbind-clients-3.5.4-68.el6_0.2.x86_64

    看起来 samba 主程序尚未被安装啊!此时就要这样做:

    [root@localhost ~] yum search samba <==先查一下有没有相关的软件

    [root@localhost ~] yum install samba <==找到之后,那就安装吧!

    那么如何找出配置文件呢?因为我们总是需要修改配置文件啊!这样做吧:

    [root@localhost ~] rpm -qc samba samba-common

    etclogrotate.dsamba

    etcpam.dsamba

    etcsambasmbusers

    etcsambalmhosts

    etcsambasmb.conf

    etcsysconfigsamba

    2.

    3. 服务器主设定与相关设定

    这部份可就麻烦了!因为你得要了解到,你到底需要的服务是什么,针对该服务 net.qiang@hotmail.com

    需要设定的项目有哪些? 这些设定需要用到什么指令或配置文件等等。一般来

    说,你得要先察看这个服务的通讯协议是啥,然后了解该如何设定, 接下来编

    辑主配置文件,根据主配置文件的数据去执行相对应的指令来取得正确的环境设

    定。以我们这里的网芳为例, 我们需要设定工作组,然后需要设定可以使用网

    芳的身份为非匿名,接下来就能够开始处理主配置文件。 因此你需要有:

    i. 先使用 vim 去编辑 etcsambasmb.conf 配置文件;

    ii. 利用 useradd 建立所需要的网芳实体用户;

    iii. 利用 smbpasswd 建立可用网芳的实体帐户;

    iv. 利用 testparm 测试一下所有数据语法是否正确;

    v. 检查看看在网芳内分享的目录权限是否正确。

    这些设定都搞定之后,才能够继续进行启动与观察的动作呦!而想要了解更多关

    于 samba 的相关设定技巧与应用, 除了 google 大神之外, usrsharedoc

    内的文件,以及 man 这个好用的家伙都必须要去阅读一番!

    4. 服务器的启动与观察

    在设定妥当之后,接下来当然就是启动该服务器了。一般服务器的启动大多是使

    用 stand alone 的模式, 如果是比较少用的服务,如 telnet ,就比较有可能

    使用到 super daemon 的服务启动类型。我们这里依旧使用 samba 为例, 来瞧

    瞧如何启动他吧!

    例题:

    如何启动 samba 这个服务呢?并且设定好开机就启动他!

    答:

    想要了解如何启动,得要使用 rpm 去找一下软件的启动方式,然后再去处理启

    动的行为啰!

    先查询一下启动的方式为何:

    [root@localhost ~] rpm -ql samba | grep 'etc'

    etclogrotate.dsamba

    etcopenldapschema

    etcopenldapschemasamba.schema

    etcpam.dsamba

    etcrc.dinit.dnmb

    etcrc.dinit.dsmb <==所以说是 stand alone 且档名为 smb, nmb 两

    个!

    etcsambasmbusers

    开始启动他!且设定开机就启动喔!:

    [root@localhost ~] etcinit.dsmb start

    [root@localhost ~] etcinit.dnmb start net.qiang@hotmail.com

    [root@localhost ~] chkconfig smb on

    [root@localhost ~] chkconfig nmb on

    接下来,让我们观察一下有没有启动相关的埠口吧!

    [root@localhost ~] netstat -tlunp | grep '[sn]mbd'

    tcp 0 0 :::139 ::: LISTEN 1484smbd

    tcp 0 0 :::445 ::: LISTEN 1484smbd

    udp 0 0 0.0.0.0:137 0.0.0.0: 1492nmbd

    udp 0 0 0.0.0.0:138 0.0.0.0: 1492nmbd

    最终我们可以看到启动的埠口有 137, 138, 139, 445 喔!

    5.

    6. 客户端的联机测试

    接下来就是要找一部机器做为客户端,然后尝试使用本机器提供的网芳功能啊!

    这样才能够了解设定是对还是错! 相关的客户端联机与服务器提供的服务有关,例如 WWW 服务器就要使用 browser 去测试,网芳当然就得要使用网芳客户端程

    序啰!这部份也是本服务器篇要讲的基本内容啦!

    但是很多时刻,客户端联机测试不成功并非是服务器设定的问题,很多是客户端

    使用方式不对! 包括客户端自己的防火墙没开啦,客户端的账号权限密码等等

    记错啦等等的,问题很大啦! 总体来说:『教育你的 Client 使用者具有最最

    基础的 Linux 账号、群组、档案权限等概念,才是一个彻底解决问题的方法』,但这也是最难的部分...

    7. 错误克服与观察登录档

    一般来说,如果 Linux 上面的服务出现问题时,通常会在屏幕上面直接告诉你

    错误的原因为何,所以你得要注意屏幕讯息。 老实说,屏幕讯息通常就已经告

    诉你该如何处理了。如果还不能处理呢?你可以这样处置看看:

    o 先看看相关登录文件有没有错误讯息,举例来说, samba 除了会在

    varlogmessages 里面列出讯息外, 大部分的讯息应该是摆放在

    varlogsamba 这个目录下的数据,因此你就得先去查阅一番。通常在

    登录文件内的信息, 会比在屏幕上的还要仔细,那你就可以自行处理完

    毕了;

    o 将讯息带入 Google 查询,通常可以解决登录档出现的但是你没有办

    法克服的问题喔!达标率可达 95% 以上吧!

    o 还是不成功,那就到各大讨论区去发问吧!建议到酷学园

    (http:phorum.study-area.org) net.qiang@hotmail.com

    最常出现的其实是 SELinux 的错误啦!此时就得要使用 SELinux 的方法来尝试

    处理啰! 这也是本服务器篇后续会稍微提到的内容。

    经过上面的流程,你就可以知道啦,架设好一部主机需要知道: (1)各个 process 与

    signal 的观念;(2)账号与群组的观念与相关性;(3)档案与目录的权限,这当然包含

    与账号相关的特性; (4)软件管理员的学习;(5)BASH 的语法与 shell scripts 的语

    法,还有那个很重要的 vim 啰!:(6)开机的流程分析,以及记录登录文件的设定与分

    析;(7)还得知道类似 quota 以及连结档等等的概念。要知道的真的很多,而且还是不

    能省略的步骤喔!

    1.2.2-6 细部权限与 SELinux

    如果有些特殊的使用情况时,权限设定就是个很重要的因素。举例来说,我们系统

    上面,现在有 vbirduser{1,2,3,4,5} 以及 student 等账号,而共享目录为

    homevbirdgroup。现在, vbirdgroup 的群组想要让 student 这个用户可以进入该

    共享目录查阅, 但是不能够更改他们原本的数据,你该如何进行呢?你或许可以这样

    想:

    · 让 student 加入 vbirdgroup 群组即可:但如此一来, student 具有

    vbirdgroup 的 rwx 权限,也就可以写入与修改啰, 因此这个方案行不通。

    · 将 homevbirdgroup 的权限改为 2775 即可:如此一来 student 拥有其

    他人的权限 (rx),但如此一来其他所有任何人均拥有 rx 权限,这个方案也行

    不通。

    传统的身份与权限概念就只有上面两种解决方案而已,这下子严重了!我们没有办

    法针对 student 进行权限设定! 此时就得要使用 ACL 啰~同样这个例子,我们就来

    实作一下:

    例题-单一用户、群组的权限设定 ACL

    想要让 student 可以进入 homevbirdgroup 进行查询,但不可写入。同时

    vbirduser5 在 homevbirdgroup 内,不具有任何权限。

    答:

    只能使用 ACL 啰!由于安装时预设格式化就加上 acl 的文件系统功能支持,因此你可以直接处理如下的各项指令。如果你是使用后来新增的 partition 或

    filesystem ,或许得要在 etcfstab 内额外增加 acl 控制参数才行喔!

    [root@localhost ~] useradd student

    [root@localhost ~] passwd student

    [root@localhost ~] setfacl -m u:student:rx homevbirdgroup

    [root@localhost ~] setfacl -m u:vbirduser5:- homevbirdgroup net.qiang@hotmail.com

    [root@localhost ~] getfacl homevbirdgroup

    file: homevbirdgroup

    owner: root

    group: vbirdgroup

    flags: -s-

    user::rwx

    user:vbirduser5:---

    user:student:r-x <==就是这两行,额外的权限参数哩!

    group::rwx

    mask::rwx

    other::---

    [root@localhost ~] ll -d homevbirdgroup

    drwxrws---+ 2 root vbirdgroup 4096 2011-07-14 14:49 homevbirdgroup

    上面说的是正确的权限控制行为。那万一系统管理员不是个东西...不是啦!系统

    管理员并不知道权限的重要性时, 常常会因为某些特殊需求,就将整个目录设定为 777

    的情况!举例来说,如果是一个不怎么想要负责的网管人员, 为了自己方便、大家方

    便,就将 homevbirdgroup 设定为 777 ,这样『大家欢喜』嘛!此时,如果你没有

    加上任何管理机制, 嘿嘿!这个群组成员工作的成果,通通可以被大家所窃取,真是

    要命了!

    为了预防这种心不在焉的管理员,于是就有了 SELinux 这个玩意儿。SELinux 主

    要在控制细部的权限, 他可以针对某些程序要读取的档案来设计 SELinux 类别,当程

    序与档案的类别形态可以相符合时,该档案才能够开始被读取。 如此一来,当你配置

    文件案权限为 777 ,但是因为程序与档案的 SELinux 例行不符,所以没关系的,因为

    该程序还是读不到该档案! 所以我们在图 1.2-1 才会将 SELinux 的图示绘制到

    daemon 与 file permission 中间啊!

    事实上 SELinux 还挺复杂的,但是我们如果仅是想要应用而已,那么 SELinux 的

    处理方式通通可以透过登录档来处置! 所以 SELinux 出现问题的机会非常大,但是解

    决技巧却很简单!就是透过登录档内的说明去作即可。 详细的作法我们在后续章节再

    持续说明吧!

    1.2.3 系统安全与备份处理

    老实说,在鸟哥管理服务器的经验来说,硬件问题要比操作系统与软件问题还来的

    严重,而人的问题又比硬件问题严重! 举例来说,如果你的老板跟你说:『我要的账

    号是 eric ,而且我的密码也要是 eric !这样比较好记嘛!』 你应该要怎么处理呢? net.qiang@hotmail.com

    『果然需要再教育』!教育谁?教育自己啦!是要忍耐还是要说服老板别这样~好讨厌

    的感觉吧!

    因此,在系统安全方面,首要的工作是透过日常生活的社交活动中,慢慢透露一些

    资安方面的困扰, 并提供老板一些制订资安规则方面的信息,这样未来比较好鼓吹资

    安条件的制订。我们就先由严格的密码来建议吧:

    『猜密码』仍是一个不可忽视的入侵手段!例如 SSH 如果对 Internet 开放的话,你又没有将 root 的登入权限关闭,那么对方将可能以 root 尝试登入你的 Linux 主

    机,这个时候对方最重要的步骤就是猜出你 root 的密码了!如果你 root 的密码设定

    成『1234567』哈哈!想不被入侵都很难~ 所以当然需要严格的规范用户密码的设定了!

    那么如何规范严格的密码规则呢?可以藉由 (1)修改 etclogin.defs 档案里面的规

    则,以让用户需要每半年更改一次密码,且密码长度需要长于 8 个字符呢!(2)利用

    etcsecuritylimits.conf 来规范每个使用者的相关权限,让你的 Linux 可以较为

    安全一点点~(3)利用 pam 模块来额外的进行密码的验证工作。

    另外,虽然『防火墙无用论』常常被提及,但是 netfilter (Linux 的核心内建防

    火墙) 其实仍有他存在的必要。 因此你还是得就要你自己的主机环境来设计专属于自

    己的防火墙规则,例如上面提到的 SSH 服务中, 你可以仅针对某个局域网络或某个特

    定 IP 开放联机功能即可啊!

    最后,备份是不可忽略的一环。本节开头就讲到了,鸟哥遇过常常莫名其妙自动重

    开机或系统不稳的,经常都不是被攻击, 而是硬件内部的电子零件老化所造成的系统

    不稳定...此时,异地备援啦、备用机器的接管理等等的,就很重要啰! 而你总不想要

    因为硬盘挂点导致数据『害害去』,所以啰,备份就真他X的重要啰!

    例题:

    系统上比较重要的目录有 etc, home, root, varspoolmail 等,你现在

    想要在每天 2:45am 进行备份,且备份数据存到 backup 内,备份的举动使用

    tar ,那该如何处理?

    答:

    鸟哥通常是使用 shell script 来进行备份数据的汇整,范例如下:

    [root@localhost ~] mkdir rootbin; vim rootbinbackup.sh

    !binbash

    backdir=etc home root varspoolmail

    basedir=backup

    [ ! -d basedir ] mkdir basedir

    backfile=basedirbackup.tar.gz

    tar -zcvf backfile backdir

    [root@localhost ~] vim etccrontab

    45 2 root sh rootbinbackup.sh

    net.qiang@hotmail.com

    无论如何,以现今的网络功能及维护来看,架设一个『功能性强』的主机, 还不

    如架设一个『稳定且安全的主机』比较好一点!因此,对于主机的安全要求就需要严格

    的要求啦!就鸟哥的观点来看, 如果你的主机是用来替你赚钱的,例如某些研究单位

    的大型 Cluster 运算主机, 那么即使架设一个甚至让你觉得很不方便的防火墙系统,都是合理的手段!因为主机被入侵就算了,若数据被窃取,呵呵! 那可不是闹着玩的!

    由上面的整个架站流程来看,由规划到安装、主机设定、账号与档案权限管理、后

    续安全性维护与管理以及重要的备份工作等等, 必需要每个环节都很清楚,才能够设

    定出一个较为稳定而可正常工作的服务器。而上面的每一个工作都涉及到相当多的

    Linux 基础操作与相关的概念,所以说,想要学架站,真的真的不能省略了 Linux 的

    基础学习, 这也是为什么我们一再强调 Linux 新手不要一头栽入想要单纯架设服务器

    的迷思当中吶! 如果你对于上面谈到的几个基础概念不是很清楚的话,那么建议你由

    底下的两个网站学起:

    · http:www.study-area.org

    · http:linux.vbird.org

    1.3 自我评估是否已经具有架站的能力

    网管人员需要什么能力呢?我想,架几个站跟作一个称职的网管人员, 相差是甚

    远的!架站,说真的,是一件很简单的事情,看着书本一步一步的作上去,一定可以成

    功的!但是,很多人都只晓得 『如何架站』却不知到『如何维护一个网站的安全』!

    基本上, 维护一个已经架设好的网站的正常运作,真的要比架设一个网站难的多了!

    你得要随时知道你的系统状况, 随时注意是否有新的软件漏洞而去修补他,随时要注

    意各种服务的登录档案(logfile)以了解系统的运作情况! 得知道发生问题的时候,到

    底问题点是在哪一个!

    比如说当机了,那么你知道当机的原因吗? 即使不知道,也可得需要约略猜得出

    来才行。而,如果安全出了问题,被入侵了,除了 format + 重灌之外,可有办法在不

    移除系统的情况下修补漏洞? 这些都是网管人员需要学习的,而且,通常都是需要经

    验的累积才会知道问题的所在! 此外,保持身心的活力以随时注意在线公布的安全防

    备信息等等!都需要具备的!

    此外,最严重的问题是,网管人员其实最需要的是 『道德感与责任感』!你可要

    晓得你的机器上所有人的隐私都在你的监控之下, 如果你本身就已经有偷窥欲了,可

    知道这有多可怕吗?另外,如果没有责任感的人作为一个网管, 可能会疯掉,因为不

    论何时何地,只要是你监控的主机出了问题,嘿嘿嘿嘿,你一定是第一个被想到的人物,所以,你得随时随地做好可能随时会被召唤回主机跟前的心理准备!

    更可笑的是,如果你服务的人群中, 有几个连开机的时候软盘驱动器塞了一块不

    可开机的软盘,导致无法正常开机, 也都会跟你抱怨说『唉呦!你经手的计算机怎么

    这么烂,动不动就不能开机』的时候, 你得要有容人的雅量,说说冷笑话解解闷吧! net.qiang@hotmail.com

    总之,网管人员并不是只要会架站就可以了, 『道德感』『责任感』还有『耐心』呵

    呵!套一句现在人喜欢说的口头禅『这是一定要的啦!』

    网管人员是什么? 好久以前看到了报纸的一篇报导, 内容大概是说:台湾的网络

    管理人员对于『网络安全性防护』的认知不够,或许是防火墙机制建立不完整, 或者

    是认为黑客不会入侵小型网站,所以在不甚了解的情况下,被所谓的『中东黑客组织』

    所入侵, 然后以台湾被入侵的计算机为跳板,去攻击宾拉登的仇敌美国,然后引起美

    国高度的不满。由于台湾的立场有点得罪不得美国 ( 这边不提及政治因素,反正目前

    的情况是这样。 ) ,所以一接到美国来的抗议信函就很棘手。 这只是一个事件问题,不过这个事件问题也点出了一个重点,就是我们的网络信息可能真的是蛮发达的, 不

    过,管理网络的人员可能在认知的程度上就有点参差不齐了!网络安全是蛮重要的,只

    是, 大家常常会忘记他!个人认为,网管是蛮重要的角色,应该不能等闲视之才对。

    好了,如果你了解了上面鸟哥所想要表达的意念之后,来评估看看你是否适合当一

    个称职的网管人员吧!

    1. 是否具有 Linux 的基础概念:

    这当然包含很多部分,例如账号管理、 BASH、权限的概念、 Process 与 signal 的

    概念、简易的硬件与 Linux 相关性 (如 mount)的认识、登录档案的解析、 daemon

    的认识等等,都需要有一定程度的了解;

    2. 是否具备基础网络知识:

    没有网络知识想要架站,那是天方夜谭!请确认你已经熟悉 IP, Netmask, route,DNS, daemon 与 port, TCP 封包的概念等基本知识;

    3. 是否已经身心活化了:

    网管人员必须要随时注意网站的相关信息,这包括网站软件的漏洞修补、 网络

    上公告的网络安全通报等等,还有,得要每日分析主机的登录文件, 你是否已

    经具备了随时注意这些信息的『耐心』呢?

    4. 是否具有道德感与责任感:

    如果还是具有一点点的偷窥欲,再加油吧!^_^ ,另外,如果老板想要请你『偷

    窥』时,请想尽任何方法,让他理解这么做是多么的可笑~

    当然,一再强调的,架设一个 Linux 服务器是很简单的,但是维护的工作除了身

    心已经活化, 并且还要拥有高标准的道德感,否则.....倒站恐怕是可以预见的一个后

    果.....

    1.4 本章习题

    · 本章所安装的 samba 软件未来还会使用到,因此请先移除 samba 软件,并

    将本章例题中改写的 etccrontab 内容取消 (共两行)。 net.qiang@hotmail.com

    透过 yum remove samba 或 rpm -e samba 均可,然后用 vim etccrontab

    将那两行取消吧!

    · 如果我有一颗硬盘在 A 主机上面安装了 Linux 之后,拿到另一台配备相同

    的 B 主机上面去进行开机,结果竟然无法顺利开机,你认为可能的原因是什么?

    不能开机常常是因为找不到根目录的位置,而根目录找不到通常就是磁盘的

    装置文件名错误所致。目前由于 etcfstab 配合 filesystem 都使用 LABEL

    name ,所以不容易发生这样的情况。但如果你曾经自行手动处理过 etcfstab

    的话,那就必须要注意磁盘的装置文件名了! 透过修改 etcfstab 以及

    bootgrubmenu.lst 或许能够得到方法解决。

    · 一般来说,在 Linux 系统上,用户默认的家目录在那个目录下?另外,新

    增一个使用者时, 该用户默认的家目录内容来自那个目录下?

    在 etcdefaultuseradd 这个档案里面会规范用户的默认家目录以及默

    认家目录的内容,一般来说,用户默认家目录在 home ,至于家目录内的档案

    则复制来源在 etcskel 里面。

    · 我以原始码的方式进行一个软件的安装,但是在分析系统的时候,分析程序

    一直告诉我找不到 cc 这个指令,请问这是什么问题?为何需要 cc ?又,我该

    如何解决这个问题,好让软件可以顺利的被安装在我的 Linux 上面?

    因为是原始码,所以还需要编译程序来将该原始码编译成为可以在你的

    Linux 系统上面跑的 binary 档案,在 Linux 上头默认的编译程序就是 gcc 这

    个编译程序(compiler)。如果你在安装 Linux 的时候,使用 Linux Installer

    默认的软件选择,那通常会没有安装 gcc 以及 make 等软件,此时,请使用 yum

    去处理软件的安装吧!

    · 我发现我的 Linux 系统怪怪的,似乎有什么不知名的程序在内存当中跑,我该如何将这个不知名的程序捉出来,并且将他移除?

    如果要捉出程序(process)的话,可以使用 ps -aux 或者是直接输入 top

    来查询 process 的 ID (PID),找到 PID 号码后,再以 kill -9 PID 来删除该

    程序即可。

    · 我总是无法编辑某个档案,你认为应该是什么问题造成的?那又要怎么解

    决?

    无法编辑某个档案,可以先使用 file 这个指令来查询一下该档案的格式,例如想察看 etcshadow 的格式,可以下达: 『file etcshadow』,如果是

    文本文件,却还是无法编辑,那么最可能发生的原因就是『权限』的问题了。可

    以使用 ls -l filename 察看档案权限,再以 chmod 或 chown 来修订该档案的

    权限。此外,该档案也可能含有隐藏属性,可以使用 lsattr filename 查阅,再以 chattr 来修订隐藏属性。 net.qiang@hotmail.com

    · 你认为一个称职的网管人员应该具备什么能力?

    能力需求相当高,如了(1)操作系统的基础知识(不论是

    LinuxUnixMACMS);(2)网络基础的知识;(3)个别 Internet Services 的运

    作知识之外,还需要(4)身心保持在备战状态,以及(5)具有相当高程度的道德感、责任感与使命感。

    · 我要关掉 cron 这个服务,应该怎么关掉他?如果正常的方法无法关闭这个

    服务,可以使用什么方法来关闭?

    因为 cron 是一个 stand alone 的服务,所以可以使用

    etcrc.dinit.dcron stop 来关闭;如果还是无法正常关闭,可以使用 ps

    -aux | grep cron 捉出该程序的 PID ,然后以 kill -9 PID 来关闭。

    · 如果一开机就要执行某个程序,应该要将该程序写入那个档案里面?

    可以直接在 etcrc.drc[run-level].d 里面加入 S 开头的档案,不过,更简单的作法是直接将该程序写入 etcrc.drc.local ,不过,请注意该程序

    必须要具有可执行的权限,且 rc.local 也必须要是可执行喔!

    20030730:第一次完成日期!

    20030819:加入了课后练习,如果你无法回答上面的问题.....不要怀疑,赶紧回去

    参考 Linux 基础篇!

    20030906:加入课后练习的参考用解答

    20060207:将原本的旧文移到此处

    20060606:将 SATA 接口的硬盘代号再次做个修订!目前 SATA 的格式有分两种呢!

    20070102:将一些排版重整,将一些日期方面的数据重整,将课后练习补上来

    20100507:将 CentOS 4.x 为底的旧文章移动到 此处

    20100722:重新设计服务器安装流程,并且在每个基础数据都加上练习!尤其是全新

    安装一部 server 以供使用!

    20110714:将原本基于 CentOS 5.x 为底的旧文章移动到此处

    20110714:将安装与设定的数据通通改为 CentOS 6.x 的版本啰!更新真困扰~@_@

    net.qiang@hotmail.com

    第二章、基础网络概念

    最近更新日期:20110715

    你的服务器是放在网络网络上面来提供服务的,所以,如果没有网络或者是网络不通,那么你的服务器

    当然是英雄无用武之地啦! 此外,服务器上面的网络服务都是用来达成某项因特网的通讯协议,以提供

    相对应的服务而已。所以啰, 你当然得要知道这个最基础的网络概念,否则,当服务器的服务出现问题

    时,你该如何解决啊?您说对吧! 这部份最重要的是 TCPIP 与 OSI 七层协议的相关概念了,这部份

    难的很~难的很~ 在这一章中,鸟哥以较为口语的方式来介绍这些基础网络架构,希望能带给朋友们快

    速了解网络是啥。 当然,想要更了解网络相关功能的话,文末的参考资料可以参考看看喔! ^_^

    2.1 网络是个什么玩意儿

    2.1.1 什么是网络

    2.1.2 计算机网络组成组件

    2.1.3 计算机网络区域范围

    2.1.4 计算机网络协议: OSI 七层协定

    2.1.5 计算机网络协议: TCPIP

    2.2 TCPIP 的链结层相关协议

    2.2.1 广域网使用的设备

    2.2.2 局域网络使用的设备-以太网络, 速度与标准, RJ45接头 (跳线并行线)

    2.2.3 以太网络的传输协议:CSMACD

    2.2.4 MAC 的封装格式

    2.2.5 MTU 最大传输单位

    2.2.6 集线器、交换器与相关机制

    2.3 TCPIP 的网络层相关封包与数据

    2.3.1 IP 封包的封装

    2.3.2 IP 地址的组成与分级:网域, IP 与门牌关连, 分级 (Class A, B, C)

    2.3.3 IP 的种类与取得方式: loopback, IP 的取得方式

    2.3.4 Netmask, 子网与 CIDR (Classless Interdomain Routing)

    2.3.5 路由概念

    2.3.6 观察主机路由: route

    2.3.7 IP 与 MAC:链结层的 ARP 与 RARP 协定:arp

    2.3.8 ICMP 协定

    2.4 TCPIP 的传输层相关封包与数据

    2.4.1 可靠联机的 TCP 协议:通讯端口口, 特权埠口 (Privileged Ports),Socket Pair

    2.4.2 TCP 的三向交握

    2.4.3 非连接导向的 UDP 协议

    2.4.4 网络防火墙与 OSI 七层协议

    2.5 连上 Internet 前的准备事项

    2.5.1 用 IP 上网?主机名上网?DNS 系统?

    2.5.2 一组可以连上 Internet 的必要网络参数

    2.6 重点回顾 net.qiang@hotmail.com

    2.7 本章习题

    2.8 参考数据与延伸阅读

    2.9 针对本文的建议:http:phorum.vbird.orgviewtopic.php?t=25884

    2.1 网络是个什么玩意儿

    全世界的人种有很多,人类使用的语言种类也多的很。那如果你想要跟外国人沟通

    时,除了比手划脚之外,你要如何跟对方讲话? 大概只有两种方式啰,一种是强迫他

    学中文,一种则是我们学他的语言,这样才能沟通啊。在目前世界上的强势语言还是属

    于英语系国家, 所以啰,不管是啥人种,只要学好英文,那么大家都讲英文,彼此就

    能够沟通了。希望不久的未来,咱们的中文能够成为强势语言啊!

    这个观念延伸到网络上面也是行的通的,全世界的操作系统多的很,不是只有

    WindowsLinux 而已,还有苹果计算机自己的操作系统, Unix like 的操作系统也非

    常多!那么多的操作系统 (人种) 要如何进行网络沟通 (语言) 呢?那就得要制订共同

    遵守的标准才行了。这个标准是由国际组织规范的,你的系统里面只要提供可以加入该

    标准的程序代码, 那你就能够透过这个标准与其他系统进行沟通!所以啰,网络是跨

    平台的,并不是只有 Linux 才这么做!因此,这部份的资料你学完后,是可以应用在

    所以操作系统上面的!观念都相同啊!

    另外,这一个章节旨在引导网络新鲜人快速进入网络的世界,所以鸟哥写的比较浅

    显一些些,基本上, 还有一堆网络硬件与通讯协议并没有被包含在这篇短文里头。如

    果你的求知欲已经高过本章节, 那么请自行到书局寻找适合你自己的书籍来阅读!当

    然,你也可以在因特网上面找到你所需要的数据。 在本章最后的参考数据可以瞧一瞧

    吶!

    2.1.1 什么是网络

    我们都知道,网络就是几部计算机主机或者是网络打印机之类的接口设备, 透过

    网络线或者是无线网络的技术,将这些主机与设备连接起来, 使得数据可以透过网络

    媒体(网络线以及其他网络卡等硬件)来传输的一种方式。 请你想象一下,如果你家里

    面只有计算机、打印机、传真机等机器,却没有网络连接这些硬件, 那么使用上会不

    会很麻烦?如果将这个场景移到需要工作的办公室时, 计算机的数据无法使用网络连

    接到打印机来打印,那是否很伤脑筋呢? 对吧!光用想的就觉得很麻烦吧!不幸的是,这些麻烦事在 1970 年代以前,确实是存在的啊!

    · 各自为政的『网络硬件与软件』技术发展: Ethernet Token-Ring

    在 1970 年代前后,为了解决这个烦人的数据传输问题,各主要信息相关的公司

    都在研究各自的网络连接技术, 以使自家的产品可以在办公室的环境底下组织 net.qiang@hotmail.com

    起来。其中比较有名的就是全录公司的 Ethernet 技术, 以及 IBM 研发的

    Token-Ring 技术了。但是这些技术有个很大的问题,那就是它们彼此不认识对

    方的网络技术! 也就是说,万一你的办公室购买了整合 Ethernet 技术的计算

    机主机,但是其他的计算机却是使用 IBM 的机器时, 想要在这两者之间进行数

    据的沟通,在早期来说那是不可能的。

    · 以『软件』技术将硬件整合: ARPANET TCPIP

    为了解决上述的网络硬件整合功能,所以在 1960 年代末期美国国防部就开始研

    究一个可以在这些不同的网络硬件上面运作的软件技术, 使得不同公司的计算

    机或数据可以透过这个软件来达成数据沟通。这个研究由美国国防部尖端研究企

    画署 (Defense Advanced Research Project Agency, DARPA) 负责,他们将该

    网络系统称为 ARPANET, 这个咚咚就是目前熟知的 TCPIP 技术的雏形了!在

    1975 年左右, ARPANET 已可以在常见的 Ethernet 与 Token-Ring 等硬件平台

    底下互通数据了。DARPA 在 1980 年正式推出 TCPIP 技术后, 由于想要推展

    此项技术,因此与柏克莱 (Berkeley) 大学合作,将 TCPIP 植入著名的 BSD

    Unix 系统内, 由于大学乃是未来人才数据库的培养处,所以, TCPIP 这项技

    术便吸引越来越多使用者的投入, 而这种连接网络的技术也被称之为 Internet

    (注1)。

    · 没有任何王法的因特网: Internet

    现在我们知道 Internet 就是使用 TCPIP 的网络连接技术所串联起来的一个

    网络世界, 而这个 Internet 在 1980 年代之后由于对 email 的需求以及浏览

    器图形接口的兴起,因此快速的蔓延在计算机世界中。 但是, Internet 有没

    有人在管理啊?很不巧的是, Internet 是一个管理相当松散的所在。 只要你

    能够使用任何支持 TCPIP 技术的硬件与操作系统,并且实际连接上网络后, 你

    就进入 Internet 的世界了。在该世界当中,没有任何王法的保护,你的实际数

    据如果接上 Internet , 在任何时刻都需要自己保护自己,免得中了『流弹』

    而受伤啊!

    为甚么说 Internet 没有王法呢?这是因为 Internet 仅是提供一个网络的连

    接接口, 所以你只要连接上 Internet 后,全世界都可以任你遨游,不过也因

    为如此,『跨海』而来的攻击就成了简单的事件, 简单说,台湾的法律仅适用

    台湾地区对吧?但是计算机怪客 (cracker) 可以在国外透过 Internet 对你的

    主机进行攻击, 我们的法律可管不到国外地区啊!虽然可以透过很多国际管道

    来寻求协助,不过,还是很难协助你缉拿凶手的啊。 因此啰,在你的主机要连

    上 Internet 之前,请先询问自己,真的有需要连上 Internet 吗?^_^

    · 软硬件标准制定的成功带来的影响: IEEE 标准规范

    现在我们常常听到『你要上网啊!那你要去买网络卡喔!还得要连接到 Internet

    才行啊!』 这个网络卡就是市面上随处可见的一个适配卡而已,至于 Internet

    则是去向 HinetSeed net 或 其他网络服务提供公司 (Internet Service

    Provider, ISP) 申请的账号密码。 问题是,是否就只有透过网络卡与 Internet net.qiang@hotmail.com

    才能上网啊?呵呵!当然不是!其他不同的网络硬件与软件可多着那! 不过,最成功的却是以太网络 (Ethernet) 与 Internet ,这是为甚么呢?这两者的技

    术比较好吗? 当然不是!这是因为这两者都被『标准』所支持的缘故(注2)。

    以太网络最初是由全录公司 (Xerox PARC) 所建构出来的,而后透过 DEC, Intel

    与 Xerox 合作将以太网络标准化。 再经由 IEEE (Institute of Electrical and

    Electronic Engineers 注3) 这个国际著名的专业组织利用一个 802 的项目制

    定出标准,之后有 19 家公司宣布支持 IEEE 所发布的 802.3 标准, 并且到了

    1989 年国际标准化组织 ISO (International Organization for Standard) 将

    以太网络编入 IS88023 标准, 呵呵!这表示以太网络已经是一项公认的标准接

    口了,如此一来,大家都可以依据这个标准来设定与开发自己的硬件, 只要硬

    件符合这个标准,理论上,他就能够加入以太网络的世界,所以,购买以太网络

    时, 仅需要查看这个以太网络卡支持哪些标准就能够知道这个硬件的功能有哪

    些, 而不必知道这个以太网络卡是由哪家公司所制造的吶。

    Tips:

    标准真的是个很重要的东西,真要感谢这些维护标准的专业组织。

    当有公司想要开发新的硬件时, 它可以参考标准组织所发布与维护

    的文件资料,透过这些文件数据后,该公司就知道要制作的硬件需

    要符合哪些标准, 同时也知道如何设计这些硬件,让它可以『兼容』

    于目前的机器,让使用者不会无所适从啊。 包括软件也有标准,早

    期 Linux 在开发时就是透过了解 POSIX 这个标准来设计核心的,也使得 Linux 上面可以执行大多数的标准接口软件呢!你说,标准

    是否真的很重要啊!

    · 除了硬件之外,TCPIP 这个 Internet 的通讯协议也是有标准的,这些标准大

    部分都以 RFC (Request For Comments, 注4) 的形式发布标准文件。 透过这

    些文件的辅助,任何人只要会写程序语言的话,就有可能发展出自己的 TCPIP

    软件, 并且连接上 Internet 。早期的 Linux 为了要连接上 Internet , Linux

    团队就自己撰写出 TCPIP 的程序代码, 透过的就是这些基础文件的标准依据

    啊!举例来说 RFC 1122 (注5) 这个建议文件就指出一些可以联机到 Internet

    的主机应该要注意的相关协议与基本需求, 让想要撰写联机程序的设计师可以

    有一个指引的标准方向。

    2.1.2 计算机网络组成组件

    接下来,让我们来谈谈那么组成计算机网络的组件有哪些呢?这些组件的定义为何

    啊?我们得要先知道有哪些硬件嘛! 接下来才好理解啊。在这里,我们以底下这张联

    机示意图来解释好了: net.qiang@hotmail.com

    图 2.1-1、计算机网络联机示意图

    在上图中,我们主要需要注意到的硬件有哪些呢?大致有底下这些啦:

    · 节点 (node):节点主要是具有网络地址 (IP) 的设备之称, 因此上面图示

    中的一般PC、Linux服务器、ADSL调制解调器与网络打印机等,个别都可以称

    为一个 node ! 那中间那个集线器 (hub) 是不是节点呢?因为他不具有 IP ,因此 hub 不是节点。

    · 服务器主机 (server):就网络联机的方向来说,提供数据以『响应』给用

    户的主机, 都可以被称为是一部服务器。举例来说,Yahoo 是个 WWW 服务器,昆山的 FTP (http:ftp.ksu.edu.tw) 是个文件服务器等等。

    · 工作站 (workstation) 或客户端 (client):任何可以在计算机网络输入的

    设备都可以是工作站, 若以联机发起的方向来说,主动发起联机去『要求』数

    据的,就可以称为是客户端 (client)。举例来说,一般 PC 打开浏览器对 Yahoo

    要求新闻数据,那一般 PC 就是客户端。

    · 网络卡 (Network Interface Card, NIC):内建或者是外插在主机上面的一

    个设备, 主要提供网络联机的卡片,目前大都使用具有 RJ-45 接头的以太网络

    卡。一般 node 上都具有一个以上的网络卡, 以达成网络联机的功能。

    · 网络接口:利用软件设计出来的网络接口,主要在提供网络地址 (IP) 的任

    务。 一张网卡至少可以搭配一个以上的网络接口;而每部主机内部其实也都拥

    有一个内部的网络接口,那就是 loopback (lo) 这个循环测试接口!

    · 网络形态或拓朴 (topology):各个节点在网络上面的链接方式,一般讲的

    是物理连接方式。 举例来说,上图中显示的是一种被称为星形联机 (star) 的

    方式,主要是透过一个中间连接设备, 以放射状的方式连接各个节点的一种形

    态,这就是一种拓朴。 net.qiang@hotmail.com

    · 网关 (route) 或通讯闸 (gateway):具有两个以上的网络接口, 可以连接

    两个以上不同的网段的设备,例如 IP 分享器就是一个常见的网关设备。那上面

    的 ADSL 调制解调器算不算网关呢? 其实不太能算,因为调制解调器通常视为

    一个在主机内的网卡设备,我们可以在一般 PC 上面透过拨号软件, 将调制解

    调器仿真成为一张实体网卡 (ppp) ,因此他不太能算是网关设备啦!

    网络设备其实非常多也非常复杂,不过如果以小型企业角度来看,我们能够了解上

    述图示内各设备的角色,那应该也足够啰! 接下来,让我们继续来讨论一下网络范围

    的大小吧!

    2.1.3 计算机网络区域范围

    由于各个节点的距离不同,联机的线材与方式也有所差异,由于线材的差异也导致

    网络速度的不同,让网络的应用方向也不一样。 根据这些差异,早期我们习惯将网络

    的大小范围定义如下:(注6)

    · 局域网络 (Local Area Network, LAN):

    节点之间的传输距离较近,例如一栋大楼内,或一个学校的校区内。可以使用较

    为昂贵的联机材料, 例如光纤或是高质量网络线 (CAT 6) 等。网络速度较快,联机质量较佳且可靠,因此可应用于科学运算的丛集式系统、 分布式系统、云

    端负荷分担系统等。

    · 广域网 (Wide Area Network, WAN):

    传输距离较远,例如城市与城市之间的距离,因此使用的联机媒体需要较为便宜

    的设备,例如经常使用的电话线就是一例。 由于线材质量较差,因此网络速度

    较慢且可靠性较低一些,网络应用方面大多为类似 email, FTP, WWW 浏览等功

    能。

    除了这两个之外,还有所谓的都会网络 (Metropolitan Area Network, MAN),不

    过近来比较少提及,因此你只要知道有 LAN 及 WAN 即可。这两个名词在很多地方你都

    可以看的到喔!改天你回家看看你家的 ADSL 调制解调器或 IP 分享器后面的插孔看看,你就能够看到有 WAN 与 LAN 的插孔,现在你就知道为啥有这两个灯号与插孔了吧。

    一般来说,LAN 指的是区域范围较小的环境,例如一栋大楼或一间学校,所以在我

    们生活周遭有着许许多多的 LAN 存在。 那这些 LAN 彼此串接在一起,全部的 LAN 串

    在一块就是一个大型的 WAN 啰!简单的说,就是这样分。

    不过,现在的环境跟以前不一样了,举例来说,前几天刚刚宣布 (201107),光纤

    的速度已经可以到达 100Mbps10Mbps 的下载上传带宽了!再举例来说,台湾的学术

    网络通通是串在一块的,鸟哥在台南昆山联机到高雄义守大学下载 CentOS 映像档时,你猜下载的速度有多快?每秒钟可高达 100Mbps 左右!这已经是一个内部区网的速度

    了!所以,用以前的观点来看, 其实对目前的网络环境有点不符现象了。因此,目前 net.qiang@hotmail.com

    你可以使用『速度』作为一个网络区域范围的评量。 或许现在我们可以说,整个台湾

    的学术网络 (TANET, 注7) 可以视为是一个局域网络呢!

    2.1.4 计算机网络协议: OSI 七层协定

    谈完了网络需要制订的标准、网络联机的组件以及网络的范围之后,接下来就是要

    讲到,那么各个节点之间是如何沟通讯息的呢? 其实就是透过标准的通讯协议啦!但

    是,整个网络连接的过程相当复杂,包括硬件、软件数据封包与应用程序的互相链接等

    等, 如果想要写一支将联网全部功能都串连在一块的程序,那么当某个小环节出现问

    题时,整只程序都需要改写啊!真麻烦!

    那怎办?没关系,我们可以将整个网络连接过程分成数个阶层 (layer),每个阶层

    都有特别的独立的功能, 而且每个阶层的程序代码可以独立撰写,因为每个阶层之间

    的功能并不会互相干扰的。 如此一来,当某个小环节出现问题时,只要将该层级的程

    序代码重新撰写即可。所以程序撰写也容易,整个网络概念也就更清晰! 那就是目前

    你常听到的 OSI 七层协议 (Open System Interconnection) 的概念啰!

    如果以图示来说,那么这七个阶层的相关性有点像底下这样:

    图 2.1-2、OSI 七层协议各阶层的相关性 net.qiang@hotmail.com

    依据定义来说,越接近硬件的阶层为底层 (layer 1),越接近应用程序的则是高层

    (layer 7)。 不论是接收端还是发送端,每个一阶层只认识对方的同一阶层数据。 而

    整个传送的过程就好像人们在玩整人游戏一般,我们透过应用程序将数据放入第七层的

    包裹, 再将第七层的包裹放到第六层的包裹内, 依序一直放到第一层的最大的包裹内,然后传送出去给接收端。接收端的主机就得由第一个包裹开始,依序将每个包裹拆开,然后一个一个交给对应负责的阶层来视察!这就是整人游戏...喔!是 OSI 七层协议在

    阶层定义方面需要注意的特色。

    既然说是包裹,那我们都知道,包裹表面都会有个重要的信息,这些信息包括有来

    自哪里、要去哪里、接收者是谁等等, 而包裹里面才是真正的数据。同样的,在七层

    协议中,每层都会有自己独特的表头数据 (header),告知对方这里面的信息是什么, 而

    真正的数据就附在后头啰!我们可以使用如下的图示来表示这七层每一层的名字,以及

    数据是如何放置到每一层的包裹内:

    图 2.1-3、OSI 七层协议数据的传递方式

    上图中仔细看每个数据报的部分,上层的包裹是放入下层的数据中,而数据前面则

    是这个数据的表头。其中比较特殊的是第二层, 因为第二层 (数据链结层) 主要是位

    于软件封包 (packet) 以及硬件讯框 (frame) 中间的一个阶层, 他必须要将软件包装

    的包裹放入到硬件能够处理的包裹中,因此这个阶层又分为两个子层在处理相对应的数

    据。 因为比较特殊,所以您瞧瞧,第二层的数据格式比较不一样喔,尾端还出现一个

    检查码哩~

    每一个阶层所负责的任务是什么呢?简单的说,每一层负责的任务如下: (注6, 注

    8, 注9)

    分层 负责内容 net.qiang@hotmail.com

    Layer 1

    物理层

    Physical Layer

    由于网络媒体只能传送 0 与 1 这种位串,因此物理层必须

    定义所使用的媒体设备之电压与讯号等, 同时还必须了解数

    据讯框转成位串的编码方式,最后连接实体媒体并传送接收

    位串。

    Layer 2

    数据链结层

    Data-Link Layer

    这一层是比较特殊的一个阶层,因为底下是实体的定义,而

    上层则是软件封装的定义。因此第二层又分两个子层在进行

    数据的转换动作。 在偏硬件媒体部分,主要负责的是 MAC

    (Media Access Control) ,我们称这个数据报裹为 MAC 讯

    框 (frame), MAC 是网络媒体所能处理的主要数据报裹,这

    也是最终被物理层编码成位串的数据。MAC 必须要经由通讯

    协议来取得媒体的使用权, 目前最常使用的则是 IEEE

    802.3 的以太网络协议。详细的 MAC 与以太网络请参考下节

    说明。

    至于偏向软件的部分则是由逻辑链接层 (logical link

    control, LLC) 所控制,主要在多任务处理来自上层的封包

    数据 (packet) 并转成 MAC 的格式, 负责的工作包括讯息

    交换、流量控制、失误问题的处理等等。

    Layer 3

    网络层

    Network Layer

    这一层是我们最感兴趣的啰,因为我们提及的 IP (Internet

    Protocol) 就是在这一层定义的。 同时也定义出计算机之间

    的联机建立、终止与维持等,数据封包的传输路径选择等等,因此这个层级当中最重要的除了 IP 之外,就是封包能否到

    达目的地的路由 (route) 概念了!

    Layer 4

    传送层

    Transport Layer

    这一个分层定义了发送端与接收端的联机技术(如 TCP, UDP

    技术), 同时包括该技术的封包格式,数据封包的传送、流

    程的控制、传输过程的侦测检查与复原重新传送等等, 以确

    保各个资料封包可以正确无误的到达目的端。

    Layer 5

    会谈层

    Session Layer

    在这个层级当中主要定义了两个地址之间的联机信道之连接

    与挂断,此外,亦可建立应用程序之对谈、 提供其他加强型

    服务如网络管理、签到签退、对谈之控制等等。如果说传送

    层是在判断资料封包是否可以正确的到达目标, 那么会谈层

    则是在确定网络服务建立联机的确认。

    Layer 6

    表现层

    Presentation Layer

    我们在应用程序上面所制作出来的数据格式不一定符合网络

    传输的标准编码格式的! 所以,在这个层级当中,主要的动

    作就是:将来自本地端应用程序的数据格式转换(或者是重新

    编码)成为网络的标准格式, 然后再交给底下传送层等的协

    议来进行处理。所以,在这个层级上面主要定义的是网络服

    务(或程序)之间的数据格式的转换, 包括数据的加解密也是

    在这个分层上面处理。

    Layer 7

    应用层

    应用层本身并不属于应用程序所有,而是在定义应用程序如

    何进入此层的沟通接口,以将数据接收或传送给应用程序, net.qiang@hotmail.com

    Application Layer 最终展示给用户。

    事实上, OSI 七层协议只是一个参考的模型 (model),目前的网络社会并没有什么很

    知名的操作系统在使用 OSI 七层协议的联网程序代码。那...讲这么多干嘛?这是因为

    OSI 所定义出来的七层协议在解释网络传输的情况来说, 可以解释的非常棒,因此大

    家都拿 OSI 七层协议来做为网络的教学与概念的理解。至于实际的联网程序代码,那

    就交给 TCPIP 这个玩意儿吧!

    2.1.5 计算机网络协议: TCPIP

    虽然 OSI 七层协议的架构非常严谨,是学习网络的好材料。但是也就是因为太过

    严谨了,因此程序撰写相当不容易, 所以造成它在发展上面些许的困扰。而由 ARPANET

    发展而来的 TCPIP 又如何呢?其实 TCPIP 也是使用 OSI 七层协议的观念, 所以同

    样具有分层的架构,只是将它简化为四层,在结构上面比较没有这么严谨,程序撰写会

    比较容易些。后来在 1990 年代由于 email, WWW 的流行,造成 TCPIP 这个标准为大

    家所接受,这也造就目前我们的网络社会啰!

    既然 TCPIP 是由 OSI 七层协议简化而来,那么这两者之间有没有什么相关性呢?

    它们的相关性可以图示如下, 同时这里也列出目前在这架构底下常见的通讯协议、封

    包格式与相关标准:

    图 2.1-4、OSI 与 TCPIP 协议之相关性

    从上图中,我们可以发现 TCPIP 将应用、表现、会谈三层整合成一个应用层,在

    应用层上面可以实作的程序协议有 HTTP, SMTP, DNS 等等。 传送层则没有变,不过依

    据传送的可靠性又将封包格式分为连接导向的 TCP 及非连接导向的 UDP 封包格式。网

    络层也没有变,主要内容是提供了 IP 封包,并可选择最佳路由来到达目标 IP 地址。 net.qiang@hotmail.com

    数据链结层与物理层则整合成为一个链结层,包括定义硬件讯号、 讯框转位串的编码

    等等,因此主要与硬件 (不论是区网还是广域网) 有关。

    那 TCPIP 是如何运作的呢?我们就拿妳常常连上的 Yahoo 入口网站来做个说明

    好了,整个联机的状态可以这样看:

    1. 应用程序阶段:妳打开浏览器,在浏览器上面输入网址列,按下 [Enter]。

    此时网址列与相关数据会被浏览器包成一个数据, 并向下传给 TCPIP 的应用

    层;

    2. 应用层:由应用层提供的 HTTP 通讯协议,将来自浏览器的数据报起来,并

    给予一个应用层表头,再向传送层丢去;

    3. 传送层:由于 HTTP 为可靠联机,因此将该数据丢入 TCP 封包内,并给予

    一个 TCP 封包的表头,向网络层丢去;

    4. 网络层:将 TCP 包裹包进 IP 封包内,再给予一个 IP 表头 (主要就是来

    源与目标的 IP 啰),向链结层丢去;

    5. 链结层:如果使用以太网络时,此时 IP 会依据 CSMACD 的标准,包裹到

    MAC 讯框中,并给予 MAC 表头,再转成位串后, 利用传输媒体传送到远程主机

    上。

    等到 Yahoo 收到你的包裹后,在依据相反方向拆解开来,然后交给对应的层级进

    行分析,最后就让 Yahoo 的 WWW 服务器软件得到你所想要的数据,该服务器软件再根

    据你的要求,取得正确的资料后,又依循上述的流程,一层一层的包装起来, 最后传

    送到你的手上!就是这样啰!

    根据这样的流程,我们就得要知道每个分层所需要了解的基础知识,这样才算学习

    网络基础嘛!所以底下我们会依据 TCPIP 的链结层、网络层、传送层来进行说明,应

    用层的协议则在后续章节中有对应的协定再来谈啰!同时我们也知道, 网络媒体一次

    传输的数据量是有限的,因此如果要被传输的数据太大时,我们在分层的包装中,就得

    要将数据先拆开放到不同的包裹中, 再给包裹一个序号,好让目的端的主机能够藉由

    这些序号再重新将数据整合回来!很有趣吧!接下来就让我们一层一层来介绍啰!

    Tips:

    一般来说,因为应用程序与程序设计师比较有关系,而网络层以下

    的数据则主要是操作系统提供的,因此, 我们又将 TCPIP 当中的

    应用层视为使用者层,而底下的三层才是我们主要谈及的网络基础!

    所以这个章节主要就是介绍这三层啦!

    2.2 TCPIP 的链结层相关协议

    TCPIP 最底层的链结层主要与硬件比较有关系,因此底下我们主要介绍一些 WAN

    与 LAN 的硬件。 同时会开始介绍那重要的 CSMACD 的以太网络协议,以及相关的硬

    件与 MAC 讯框格式等。那就开始来聊聊啰! net.qiang@hotmail.com

    2.2.1 广域网使用的设备

    在 2.1.3 节我们有提到过,广域网使用的设备价格较为低廉。 不过广域网使用到

    的设备非常的多,一般用户通常会接触到的主要是 ADSL 调制解调器或者是光纤到大厦,以及第四台的 Cable 宽带等。在这里我们先介绍一些比较常见的设备,如果以后你有

    机会接触到其他设备,再请你依据需求自行查阅相关书籍吧!

    · 传统电话拨接:透过 ppp 协议

    早期网络大概都只能透过调制解调器加上电话线以及计算机的九针串行端口

    (以前接鼠标或游戏杆的插孔),然后透过 Point-to-Point Protocol (PPP 协议)

    配合拨接程序来取得网络 IP 参数,这样就能够上网了。不过这样的速度非常慢,而且当电话拨接后, 就不能够讲电话了!因为 PPP 支持 TCPIP, NetBEUI,IPXSPX 等通讯协议,所以使用度非常广!

    · 整合服务数字网络 (Integrated Services Digital Network, ISDN)

    也是利用现有的电话线路来达成网络联机的目的,只是联机的两端都需要有

    ISDN 的调制解调器来提供联机功能。 ISDN 的传输有多种通道可供使用,并且

    可以将多个信道整合应用,因此速度可以成倍成长。基本的 B 信道速度约为

    64Kbps, 但如美国规格使用 23 个以上的通道来达成联机,此时速度可达

    1.5Mbps 左右。不过台湾这玩意儿比较少见。

    · 非对称数位用路回路 (Asymmetric Digital Subscriber Line, ADSL):透

    过 pppoe 协议

    也是透过电话线来拨接后取得 IP 的一个方法,只不过这个方式使用的是电话的

    高频部分,与一般讲电话的频率不同。 因此妳可以一边使用 ADSL 上网同时透

    过同一个电话号码来打电话聊天。在台湾,由于上传下载的带宽不同, 因此才

    称为非对称的回路。ADSL 同样使用调制解调器,只是他透过的是 PPPoE (PPP

    over Ethernet) 的方法! 将 PPP 仿真在以太网络卡上,因此你的主机需要透

    过一张网络卡来连接到调制解调器,并透过拨接程序来取得新的接口 (ppp0) 喔!

    · 电缆调制解调器 (Cable modem)

    主要透过有线电视 (台湾所谓的第四台) 使用的缆线作为网络讯号媒体,同样需

    要具备调制解调器来连接到 ISP,以取得网络参数来上网。 Cable modem 的带

    宽主要是分享型的,所以通常具有区域性,并不是你想装就能装的哩!

    2.2.2 局域网络使用的设备-以太网络 net.qiang@hotmail.com

    在局域网络的环境中,我们最常使用的就是以太网络。当然啦,在某些超高速网络

    应用的环境中, 还可能会用到价格相当昂贵的光纤信道哩。只是如同前面提到的,以

    太网络因为已经标准化了,设备设置费用相对低廉, 所以一般你会听到什么网络线或

    者是网络媒体,几乎都是使用以太网络来架设的环境啦! 只是这里还是要提醒您,整

    个网络世界并非仅有以太网络这个硬件接口喔! 事实上,想了解整个以太网络的发展,建议你可以直接参考风信子与张民人先生翻译的 『Switched Fast 以太网络』一书,该书内容相当的有趣,挺适合阅读的吶。 底下我们仅做个简单的介绍而已。

    ·

    以太网络的速度与标准

    以太网络的流行主要是它成为国际公认的标准所致。早先 IEEE 所制订的以太网络

    标准为 802.3 的 IEEE 10BASE5 ,这个标准主要的定义是:『10 代表传输速度为

    10Mbps,BASE 表示采用基频信号来进行传输,至于 5 则是指每个网络节点之间最长可

    达 500 公尺。』

    由于网络的传输信息就是 0 与 1 啊,因此,数据传输的单位为每秒多少 bit , 亦

    即是 M bitssecond, Mbps 的意思。那么为何制订成为 10Mbps 呢? 这是因为早期的

    网络线压制的方法以及相关的制作方法,还有以太网络卡制作的技术并不是很好, 加

    上当时的数据传输需求并没有像现在这么高,所以 10Mbps 已经可以符合大多数人的需

    求了。

    Tips:

    我们看到的网络提供者 (Internet Services Provider, ISP) 所宣

    称他们的 ADSL 传输速度可以达到 下行上行 2Mbps128Kbps

    (Kbits per second) 时,那个 Kb 指的可不是 bytes 而是 bits

    喔!所以 2M128K 在实际的档案大小传输速度上面,最大理论的传

    输为 256KBps16 KBps(KBytes per second),所以正常下载的速度

    约在每秒 100~200 KBytes 之间吶! 同样的道理,在网络卡或者是

    一些网络媒体的广告上面,他们都会宣称自己的产品可以自动辨识

    传输速度为 10100 Mbps ( Mega-bits per second),呵呵!该数

    值还是得再除以 8 才是我们一般常用的档案容量计算的单位

    bytes 喔!

    早期的网络线使用的是旧式的同轴电缆线,这种线路在现在几乎已经看不到了。取而代

    之的是类似传统电话线的双绞线 (Twisted Pair Ethernet) ,IEEE 并将这种线路的以

    太网络传输方法制订成为 10BASE-T 的标准。 10BASE-T 使用的是 10 Mbps 全速运作

    且采用无遮蔽式双绞线 (UTP) 的网络线。此外, 10BASE-T 的 UTP 网络线可以使用星

    形联机(star), 也就是以一个集线器为中心来串连各网络设备的一个方法,图 2.1-1

    就是星形联机的一个示意图。

    不同于早期以一条同轴电缆线链接所有的计算机的 bus 联机,透过星形联机的帮

    助, 我们可以很简单的加装其他的设备或者是移除其他设备,而不会受到其他装置的 net.qiang@hotmail.com

    影响,这对网络设备的扩充性与除错来说, 都是一项相当棒的设计!也因此 10BASE-T

    让以太网络设备的销售额大幅提升啊!

    后来 IEEE 更制订了 802.3u 这个支持到 100Mbps 传输速度的 100BASE-T 标准,这个标准与 10BASE-T 差异不大, 只是双绞线线材制作需要更精良,同时也已经支持

    使用了四对绞线的网络线了, 也就是目前很常见的八蕊网络线吶!这种网络线我们常

    称为等级五 (Category 5, CAT5) 的网络线。 这种传输速度的以太网络就被称为 Fast

    ethernet 。至于目前我们常常听到的 Gigabit 网络速度 1000 Mbps 又是什么吶?那

    就是 Gigabit ethernet 哩!只是 Gigabit ethernet 的网络线就需要更加的精良。

    名称 速度 网络线等级

    以太网络(Ethernet) 10Mbps -

    高速以太网络(Fast Ethernet) 100Mbps CAT 5

    超高速以太网络(Gigabit Ethernet) 1000Mbps CAT 5eCAT 6

    为什么每当传输速度增加时,网络线的要求就更严格呢?这是因为当传输速度增加时,线材的电磁效应相互干扰会增强, 因此在网络线的制作时就得需要特别注意线材的质

    料以及内部线蕊心之间的缠绕情况配置等, 以使电子流之间的电磁干扰降到最小,才

    能使传输速度提升到应有的 Gigabit 。 所以说,在以太网络世界当中,如果你想要提

    升原有的 fast ethernet 到 gigabit ethernet 的话, 除了网络卡需要升级之外,主

    机与主机之间的网络线, 以及连接主机线路的集线器交换器等,都必须要提升到可以

    支持 gigabit 速度等级的设备才行喔!

    ·

    以太网络的网络线接头 (跳线并行线)

    前面提到,网络的速度与线材是有一定程度的相关性的,那么线材的接头又是怎样

    呢? 目前在以太网络上最常见到的接头就是 RJ-45 的网络接头,共有八蕊的接头,有

    点像是胖了的电话线接头, 如下所示:

    图 2.2-1、RJ-45 接头示意图 net.qiang@hotmail.com

    而 RJ-45 接头又因为每条蕊线的对应不同而分为 568A 与 568B 接头,这两款接

    头内的蕊线对应如下表:

    接头名称\蕊线顺序 1 2 3 4 5 6 7 8

    568A 白绿 绿 白橙 蓝 白蓝 橙 白棕 棕

    568B 白橙 橙 白绿 蓝 白蓝 绿 白棕 棕

    事实上,虽然目前的以太网络线有八蕊且两两成对,但实际使用的只有 1,2,3,6 蕊而

    已, 其他的则是某些特殊用途的场合才会使用到。但由于主机与主机的联机以及主机

    与集线器的联机时, 所使用的网络线脚位定义并不相同,因此由于接头的不同网络线

    又可分为两种:

    · 跳线:一边为 568A 一边为 568B 的接头时称为跳线,用在直接链接两部主

    机的网络卡。

    · 并行线:两边接头同为 568A 或同为 568B 时称为并行线,用在链接主机网

    络卡与集线器之间的线材;

    2.2.3 以太网络的传输协议:CSMACD

    整个以太网络的重心就是以太网络卡啦!所以说,以太网络的传输主要就是网络卡

    对网络卡之间的数据传递而已。 每张以太网络卡出厂时,就会赋予一个独一无二的卡

    号,那就是所谓的 MAC (Media Access Control) 啦! 理论上,网卡卡号是不能修改

    的,不过某些笔记本电脑的网卡卡号是能够修改的呦! 那么以太网络的网卡之间数据

    是如何传输的呢?那就得要谈一下 IEEE 802.3 的标准 CSMACD (Carrier Sense

    Multiple Access with Collision Detection) 了!我们以下图来作为简介,下图内的

    中心点为集线器, 各个主机都是联机到集线器,然后透过集线器的功能向所有主机发

    起联机的。 net.qiang@hotmail.com

    图 2.2-2、CSMACD联机示意图,由 A 发送资料给 D 时,注意箭头方向

    集线器是一种网络共享媒体,什么是网络共享媒体啊?想象一下上述的环境就像一

    个十字路口,而集线器就是那个路口! 这个路口一次只允许一辆车通过,如果两辆车

    同时使用这个路口,那么就会发生碰撞的车祸事件啊!那就是所谓的共享媒体。 也就

    是说,网络共享媒体在单一时间点内, 仅能被一部主机所使用。

    理解了共享媒体的意义后,再来,我们就得要讨论,那么以太网络的网卡之间是如

    何传输的呢?我们以上图中的 A 要发给 D 网卡为例好了,简单的说, CSMACD 搭配

    上述的环境,它的传输情况需要有以下的流程:

    1. 监听媒体使用情况 (Carrier Sense):A 主机要发送网络封包前,需要先对

    网络媒体进行监听,确认没有人在使用后, 才能够发送出讯框;

    2. 多点传输 (Multiple Access):A 主机所送出的数据会被集线器复制一份,然后传送给所有连接到此集线器的主机! 也就是说, A 所送出的数据, B, C,D 三部计算机都能够接收的到!但由于目标是 D 主机,因此 B 与 C 会将此讯

    框数据丢弃,而 D 则会抓下来处理;

    3. 碰撞侦测 (Collision Detection):该讯框数据附有检测能力,若其他主机

    例如 B 计算机也刚好在同时间发送讯框数据时, 那么 A 与 B 送出的数据碰撞

    在一块 (出车祸) ,此时这些讯框就是损毁,那么 A 与 B 就会各自随机等待一

    个时间, 然后重新透过第一步再传送一次该讯框数据。

    了解这个程序很重要吗?我们就来谈谈:

    · 网络忙碌时,集线器灯号闪个不停,但我的主机明明没有使用网络:

    透过上述的流程我们会知道,不管哪一部主机发送出讯框,所有的计算机都会接

    收到!因为集线器会复制一份该数据给所有计算机。 因此,虽然只有一部主机

    在对外联机,但是在集线器上面的所有计算机灯号就都会闪个不停! net.qiang@hotmail.com

    · 我的计算机明明没有被入侵,为何我的数据会被隔壁的计算机窃取:

    透过上述的流程,我们只要在 B 计算机上面安装一套监听软件,这套软件将原

    本要丢弃的讯框数据捉下来分析,并且加以重组, 就能够知道原本 A 所送出的

    讯息了。这也是为什么我们都建议重要数据在因特网上面得要『加密』后再传输!

    · 既然共享媒体只有一个主机可以使用,为何大家可以同时上网:

    这个问题就有趣了,既然共享媒体一次只能被一个主机所使用,那么万一我传输

    100MB 的档案,集线器就得被我使用 80 秒 (以 10Mbps 传输时),在这期间其

    他人都不可以使用吗?不是的,由于标准的讯框数据在网络卡与其他以太网络媒

    体一次只能传输 1500bytes,因此我的 100MB 档案就得要拆成多个小数据报,然后一个一个的传送,每个数据报传送前都要经过 CSMACD 的机制。 所以,这

    个集线器的使用权是大家抢着用的!即使只有一部主机在使用网络媒体时,那么

    这部主机在发送每个封包间, 也都是需要等待一段时间的 (96 bit time)!

    · 讯框要多大比较好?能不能修改讯框?:

    如上所述,那么讯框的大小能不能改变呢?因为如果讯框的容量能够增大,那么

    小数据报的数量就会减少, 那每个讯框传送间的等待就可以减少了!是这样没

    错,但是以太网络标准讯框确实定义在 1500 bytes, 但近来的超高速以太网络

    媒体有支持 Jumbo frame (巨型讯框,注10) 的话,那么就能够将讯框大小改为

    9000bytes 哩!但不是很建议大家随便修改啦!为什么呢?2.2.5 MTU 那小节再

    说。

    2.2.4 MAC 的封装格式

    上面提到的 CSMACD 传送出去的讯框数据,其实就是 MAC 啦!MAC 其实就是我们

    上面一直讲到的讯框 (frame) 啰! 只是这个讯框上面有两个很重要的数据,就是目标

    与来源的网卡卡号,因此我们又简称网卡卡号为 MAC 而已。 简单的说,你可以把 MAC

    想成是一个在网络线上面传递的包裹,而这个包裹是整个网络硬件上面传送数据的最小

    单位了。 也就是说,网络线可想成是一条『一次仅可通过一个人』的独木桥, 而 MAC

    就是在这个独木桥上面动的人啦!接下来,来看一看 MAC 这个讯框的内容吧!

    图 2.2-3、以太网络的 MAC 讯框

    上图中的目的地址与来源地址指的就是网卡卡号 (hardware address, 硬件地址),我们前面提到,每一张网卡都有一个独一无二的卡号, 那个卡号的目的就在这个讯框

    的表头数据使用到啦!硬件地址最小由 00:00:00:00:00:00 到 FF:FF:FF:FF:FF:FF

    (16 进位法), 这 6 bytes 当中,前 3bytes 为厂商的代码,后 3bytes 则是该厂商

    自行设定的装置码了。 net.qiang@hotmail.com

    在 Linux 当中,你可以使用 ifconfig 这个指令来查阅你的网络卡卡号喔!特别

    注意,在这个 MAC 的传送中,他仅在局域网络内生效,如果跨过不同的网域 (这个后

    面 IP 的部分时会介绍),那么来源与目的的硬件地址就会跟着改变了。 这是因为变成

    不同网络卡之间的交流了嘛!所以卡号当然不同了!如下所示:

    图 2.2-4、同一讯框在不同网域的主机间传送时,讯框的表头变化

    例如上面的图标,我的数据要由计算机 A 通过 B 后才送达 C ,而 B 计算机有两

    块网络卡,其中 MAC-2 与 A 计算机的 MAC-1 互通,至于 MAC-3 则与 C 计算机的

    MAC-4 互通。但是 MAC-1 不能与 MAC-3 与 MAC-4 互通,为啥?因为 MAC-1 这块网络

    卡并没有与 MAC-3 及 MAC-4 使用同样的 switchhub 相接嘛!所以,数据的流通会变

    成:

    1. 先由 MAC-1 传送到 MAC-2 ,此时来源是 MAC-1 而目的地是 MAC-2;

    2. B 计算机接收后,察看该讯框,发现目标其实是 C 计算机,而为了与 C 计

     ......

您现在查看是摘要介绍页, 详见PDF附件(17516KB,945页)