PART I、网络基础篇

1  架站之前所需的技能分析

1. 请简述架设网站前,应该具备何种基本技能?

基本技能有:
1.   至少需要了解账号管理、文件属性与权限、程序与资源管理、硬盘挂载与软件包的安装,如 RPM 套件管理程序等,而 vi Shell 也是不可忽略的基本技能,更重要的是,日志管理及系统服务的原理(如 stand alone super deamon 服务启动的方式差异等)需要理清,以方便未来架设网站时进行除错;
2.   在网络基础知识上, TCP/IP 的概念及路由概念相当重要,此外, DNS 的概念也很重要。
3.   在心态调整方面,系统管理员需要的道德意识及使命感要求较高。

2. 如果我有一块硬盘在A主机上安装了Linux之后,拿到另一台配备相同的B主机上进行开机,结果竟然无法顺利开机,你认为可能的原因是什么?

由于配备相同,所以排除硬件问题,不过,考虑到 IDE 数据线与分区代号及 /etc/fstab 的对应,所以应该是由 IDE 插槽放置错误所致( Linux 系统下,每个 IDE 插槽对应的分区名称皆不相同)。此外,上次不正常关机也可能造成硬盘损害而无法开机成功!

3. 一般来说,在Linux系统上,用户默认的根目录在哪个目录下?另外,新增一个用户时,该用户默认的根目录内容来自哪个目录?

/etc/default/useradd 文件里会规范用户的默认根目录及默认根目录的内容,一般来说,用户默认根目录为 /home ,至于根目录内的文件则复制来源在 /etc/skel 里。

4. 磁盘配额(quota)能否针对某个特定目录进行限制?Quota有什么较特殊的使用限制?

Quota 目前仅能针对整个分区进行限额配置,如果该特定目录是一个分区,则可以进行 quota 设定,否则无法针对特定目录!此外, Quota 除了特定目录及只能识别 ext2 ext3 等磁盘格式外,也需要核心的支持。

5. Linux系统下,要寻找一个文件名为vbird.document的文件,可以使用什么指令?另外,如果要寻找在一天内更动过的文件,又该如何进行?

如果是执行文件,可以使用 which command 来搜寻,如果是文件,就必须使用 locate vbird.document whereis vbird.document find / -name vbird.document 。如果要查找一天内更动过的文件,可以使用 find 配合参数,如:「 find / -ctime 1 」。

6. Linux系统中,常见的套件管理程序有RPMTarball,请分别说明这两个套件管理程序的优缺点。

•         RPM 在安装套件时,会将该套件的文件名称、套件功能与信息等记录在 /var/lib/rpm 目录内,由于有这些套件的基本信息,因此在系统内很容易进行 RPM 的升级、安装、移除等动作。不过,由于 RPM 文件之间的相依性较强,因此常会有版本不合或欠缺某样前驱套件的问题。
•         至于 Tarball 则是源代码,用户可以自行配置套件的编译参数,以符合自己的 Linux 平台。此外,由于 Tarball 是源代码,因此需要在你的系统上进行编译,编译过程中需要 gcc make kernel source 等套件,还有你想安装的套件所需的前驱套件也需要先安装,这样才能进行 Tarball 的安装。注意,几乎每个 Tarball tar 程序解压后,在新增目录下均会生成 README INSTALL 文件,请务必先查阅后再进行编译工作。

7. 如果我下载了一个文件名为httpd-2.0.52.tar.gz的文件,一般来说,这个文件代表的意义为何?如何让这个文件能够在我的Linux系统上安装?

由于后缀名是 .tar.gz .tgz 的文件,所以可以认定该文件为一个 Tarball 文件。至于文件名的配置, httpd 为套件名称, 2.0.52 则通常为该套件的版本名称!那么如何安装?由于该文件为 httpd 这个套件,且格式为 Tarball ,所以你必须:
1.   系统上务必具有 tar make gcc 等相关编译包;
2.   使用 tar 解开 httpd-2.0.52.tar.gz 后,务必进入该目录内读取 REAME / INSTALL 文件,以了解是否还需要其他的相关套件;
3.   ./configure --help 查阅是否有相关可以加入或取消的编译内容;
4.   使用 make 读取 Makefile 来编译程序;
5.   使用 make install 来安装程序!

8. 我以源代码方式安装一个套件,但是在分析系统时,分析程序一直告诉我找不到cc指令,请问这是什么问题?为何需要cc?另外,我该如何解决这个问题,好让套件可以顺利安装在我的Linux上?

如前面几个题目所说,因为是源代码,所以还需要编译程序将该源代码编译为可以在 Linux 系统上运行的二进制文件,在 Linux 上默认的编译程序就是 gcc 编译器。如果你在安装 Linux 时,使用 LinuxInstaller 默认选择的套件,那通常会没有安装 gcc make 等套件,此时,请拿出你的原版光盘,以 mount 指令挂载后,使用 RPM 将一个一个相关的套件安装即可。

9. 我发现我的Linux系统怪怪的,似乎有什么不知名的程序在内存中运行,我该如何将这个不知名的程序捕捉出来,并且将它移除?

如果要捕捉程序( process ),可以使用 ps -aux 或直接输入 top 来查询程序的 ID PID ),找到 PID 号码后,再以 kill -9 PID 删除该程序即可。

10. 我总是无法编辑某个文件,你认为是什么问题造成的?怎么解决?

无法编辑某个文件,可以先使用 file 指令查询该文件的格式,例如想查看 /etc/shadow 的格式,可以输入 file /etc/shadow ,如果是文本文件,却还是无法编辑,那么最可能发生的就是权限问题。可以使用 ls -l filename 查看文件权限,再以 chmod chown 修订该文件的权限。此外,该文件也可能含有隐藏属性,可以使用 lsattr filename 查阅,再以 chattr 修订隐藏属性。

11. 什么是UIDGIDUID有哪些等级?

Linux 系统下,用户与群组其实都是以 ID (数字)格式来设定的,所以用户与群组其实都是 UID GID User ID Group ID ), Linux 对于文件权限也是使用 UID/GID 来分辨。不过人类习惯使用文字来记忆,所以才会有 /etc/passwd /etc/group ID 转译成相应的 User Group ,这也可以解释为什么将从 Internet 上下载下来的 Tarball 解压之后,其文件拥有者与群组往往为数字形式,因为你的 Linux 系统上的 /etc/passwd /etc/group 没有相关的对应文字。 UID 的等级主要有两种,分别是超级管理员( root ),其 UID 0 ;其他非 0 UID 身份基本上是相同的!不过 Linux 通常会将小于 500 UID 保留给系统使用。

12. 用户的根目录参数、UIDGID及其他相关参数,还有密码文件,放置在哪些文件里?

放置在 /etc/passwd /etc/shadow 中,当然还有 /etc/login.defs

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

能力要求相当高,如( 1 )操作系统的基础知识(不论是 Linux/Unix/MAC/MS );( 2 )网络基础知识;( 3 )个别 Internet 服务的运作知识;( 4 )身心保持在备战状态;( 5 )具有相当高的道德感、责任感与使命感。

14. 我要启动一个系统默认的服务,请问可以通过执行或修改哪些目录下的文件来启动?

•         如果是 stand alone 服务,可以通过 /etc/rc.d/init.d/* 里的文件,如 /etc/rc.d/init.d /syslog start
•         如果是 Super daemon 服务,就必须先到 /etc/xinetd.d /etc/inetd.conf 修改相关文件或参数,再以 /etc/rc.d/init.d/xinetd restart 来启动。

15. 我要关掉cron服务,应该怎么关掉它?如果以正常方法无法关闭这个服务,可以使用什么方法来关闭?

因为 cron 是一个 stand alone 服务,所以可以使用 /etc/rc.d/init.d/cron stop 来关闭;如果还是无法正常关闭,可以使用 ps -aux | grep cron 提出该程序的 PID ,然后以 kill -9 PID 关闭。

16. 如果一开机就要执行某个程序,应该将该程序写入哪个文件?

可以直接在 /etc/rc.d/rc[run-level].d 里加入以 S 开头的文件,不过,更简单的做法是直接将该程序写入 /etc/rc.d/rc.local ,不过,请注意该程序必须具有可执行权限,且 rc.local 也必须是可执行的。

2章、简易网络基础架构

1. 请简述OSI网络七层协议每一层的功能;

OSI 网络七层协议主要又分为两大部分,网络层与用户应用层。至于每一层的相关功能请参考本章表一所示。

2. ISP提供的网络服务中,它们提到传输速度为1.5M/382K,请问这个数据的单位为何?

由于电子信号的基本单位为 bits ,所以一般 ISP 提供的传输速度单位均为 bits/second ,并非我们常用的文件计数单位 Bytes

3. 什么是MACMedia Access Control),MAC主要的功能是什么?

在网络媒体上,数据要传输时,必须知道下一个节点的地址才能顺利传送,这个节点的地址(如网卡的硬件地址)就是 MAC 。硬件地址是在网卡出厂时就已经焊死在上面(某些笔记本电脑的 MAC 则可以经由特殊软件修改),而软件地址则是我们常说的 IP ,这两个并不相同。 MAC IP 互相的对应是以 ARP Table 进行转译。

4. 请解释什么是物理广播(Physical Broadcast),它与逻辑广播(Logical Broadcast)有什么不同?

物理广播主要与网络媒体有关,在同一个网络媒体上同一时间仅能有一台主机使用这个网络共享媒体,而要判断目前有没有其他主机在使用这个网络媒体时,就是利用 Physical Broadcast
至于逻辑广播,就是在查询到底网域上有没有我们这台主机想要连接的相关协议或同一网域内的其他主机。它主要与 MAC ARP 及软件地址( IP )有关。

5. 什么是包碰撞?为什么会发生包碰撞?

当两台主机同时在一个网络媒体上进行数据传输时,两个数据包就会发生碰撞,这就是包碰撞。在网络媒体流量很高、网络媒体的联机长度过长时,都容易发生数据包碰撞。

6. ARP Table的作用为何?如何在我的Linux查看我的ARP表?

ARP Tables 主要用于对应 IP MAC ,当主机将数据包送到下个节点时,必须知道下个节点的 MAC ,如果不知道 MAC ,就需要使用逻辑广播来查询 IP MAC 的对应。不过,当你的主机内部的 ARP table 已经记录了 IP 对应的 MAC ,那么该数据包则可以立即传送到下个节点,而不需要再次进行逻辑广播。要知道目前的 ARP table 内有多少记录,可以使用 arp -a

7. 简略说明Netmask的作用与优点。

Netmask 可以有效增加网络的效率,这是因为 Netmask 可以定义一个网域的大小,那么用在广播的时间就可以大大降低。一般来说,我们如果要将一个大网域再细分为小网域,也需要藉由 Netmask 进行 subnet 的切割。

8. 我有一组网域为192.168.0.0/28,请问这个网域的Network, Netmask, Broadcast各为多少?可以使用的IP数量与范围各是多少?

因为共有 28 位是不可动的,所以 Netmask 地址的最后一个数字为 11110000 ,也就是( 128+64+32+16=240 ),所以:
Network 192.168.0.0
Netmask
255.255.255.240
Broadcast
192.168.0.15
IP
:由192.168.0.1 ~ 192.168.0.14 14个可用IP

9. 承上题,如果网域是192.168.0.128/29呢?

因为有 29 位不可动,所以最后一个 Netmask 的地址为 11111000 ,也就是( 128+64+32+16+8=248 ),所以:
Network 192.168.0.128
Netmask
255.255.255.248
Broadcast
192.168.0.135
IP
:由192.168.0.129 ~ 192.168.0.134 6个可用的IP

10. 我要将192.168.100.0/24这个C Class网域分为4个子网域,请问这4个子网域要如何表示?

既然要分为 4 个网域,也就是还需要藉助 Netmask 的两个位( 2 2 次方为 4 啊),所以 Netmask 会变成 255.255.255.192 ,每个子网域会有 256/4=64 IP ,而必须扣除 Network Broadcast ,所以每个子网域会有 62 个可用 IP !因此, 4 个子网域的表示方法为:
192.168.100.0/26, 192.168.100.64/26, 192.168.100.128/26,
192.168.100.192/26

11. 如何观察Linux主机上的路由信息(route table)?

可以通过输入 route 来直接查看路由信息,或输入 route –n

12. TCP包上的SYNACK标志代表的意义为何?

•         SYN 代表该包为该系列联机的第一个包,即主动联机;
•         ACK 则代表该包为确认包,即回应包。

13. 什么是三次握手?在哪一种包格式上才会有三次握手?

使用 TCP 包才会有三次握手。 TCP 包的三次握手是一个确认包正确性的重要步骤,通过 SYN SYN/ACK ACK 三个包确认无误后,才能够建立联机。至于 UDP 包,则没有三次握手。

3章、局域网架构简介

1. 幻想自己是一个私人公司的老板,员工有20人,如果我想让公司的员工都可以连上Internet,并且控管每个员工的对外联机,请问我的硬件联机应该怎么配置?另外,应该申请的线路频宽应该多大?而我的内部网域(IPNetmask……)又该如何设定?

因为只有 20 个员工,事实上,人员并不多,所以并不需要在内部加设 router 来隔开不同的网域。不过,由于想要管理员工的上网功能,因此最好以第三章图三的架构,以一台主机内含两块网卡隔开 Intranet Internet 两个网段,便于管理;至于对外联机的频宽方面,如果 Linux 主机需要进行网络服务功能,那么最好能够有 512/512 频宽,因为可能会有 Client 端下载的问题,如果单纯地仅下载(公司没有额外的网络服务),可以考虑使用 T1/384 之类的频宽,比较省钱;而在内部网域设定上,如同本章节使用的网域 192.168.0.0/24 来设定即可,如果公司内部尚有移动装置( NoteBook ),则可以在 Linux 上加装 DHCP (参考第 16 章)服务器。

2. 承上题,假如我的私有网域内有较大的网络流量,那么我的网络媒体应该怎么选择?

如果私有网域内的流量较大,那么网络媒体需要选择 Switch 而不要使用 Hub !另外,整体包括网线也需要使用能够负载 10/100 Mbps 的流量才好。

4章、连接Internet

1. 我要如何确定我在Linux系统上的网卡已经被Linux识别并驱动了?

网卡能不能被识别可以使用 dmesg|grep eth 来判断,有没有驱动则可以使用 lsmod 看看模块有没有加载核心!最后,以 ifconfig eth0 192.168.0.10 测试看看!

2. 假设我的网络参数为IP 192.168.100.100Netmask 255.255.255.0 ,请问我要如何在Linux上设定这些网络参数(未提及的网络参数请自行定义)? 请使用手动与文件设定方法分别说明。

•         手动设定为: ifconfig eth0 192.168.100.100 netmask 255.255.255.0 up
•         文件设定为: vi /etc/sysconfig/network-scripts/ifcfg-eth0 ,内容为:
DEVICE=eth0<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.100.100

NETMASK=255.255.255.0

NETWORK=192.168.100.0

BROADCAST=192.168.100.255

要启动则使用 ifup eth0 即可!

3. 我要将我的Linux主机名称改名,步骤为何?(更改哪个文件?如何启用?)

Linux 主机名称在 /etc/sysconfig/network 文件里通过“ HOSTNAME= 主机名称”来设定,先以 vi 修改,之后再使用 /etc/rc.d/init.d/network restart 或直接 reboot 启动主机名称!

4. /etc/resolv.conf/etc/hosts的功能为何?

以主机名称查找 IP 的方法, /etc/resolv.conf 内填写 DNS 主机名称,至于 /etc/hosts 则直接填写主机名称对应的 IP 即可!

5. 我使用ADSL拨号连接Internet,请问拨号成功之后,我的Linux上会有几个网络接口(假设我只有一个网卡)?

因为拨号是使用 PPP (点对点)协议,所以拨号成功后会多出一个 ppp0 接口,此外,系统原本即有 eth0 lo 这两个接口,所以共有三个接口。

6. Linux上进行ADSL拨号应该使用什么软件?

请用 rp-pppoe ,官方网站: http://www.roaringpenguin.com/pppoe/

7. 一般来说,如果拨号成功,也取得了ppp0接口,但是无法对外联机成功,你认为是哪里出了问题?该如何解决?

因为拨号成功,表示物理对外联机没有问题,那么可能的问题应该发生在网关上!确认方法请使用 route -n 查阅路由信息,然后修订 /etc/syscon- fig/network-scripts/ifcfg-eth0

5章、Linux常用网络指令介绍

1. 我要增加一个路由规则,以eth0连接192.168.100.0/24网域,应该如何输入指令?

手动方法为: route add -net 192.l68.100.0 netmask 255.255.255.0 dev eth0

2. 我的网络停顿很厉害,尤其是连接到tw.yahoo.com时,那么应该如何检查是哪个环节出了问题?

使用 traceroute 寻找到底是哪个环节出问题: traceroute tw.yahoo.com

3. 我发现我的Linux主机上有个联机很怪异,想将它断线,应该如何进行?

root 身份进行 netstat -anp |more ,查出该联机的 PID ,然后以 kill -9 PID 踢掉该联机。

4. 你如何知道green.ev.ncku.edu.tw这台主机的IP

方法很多,可以利用 host green.ev.ncku.edu.tw dig green.ev.ncku.edu.tw nslookup green.ev.ncku.edu.tw 等方法找出!

5. 请找出你的机器上最适当的MTU应该是多少?

请利用 ping -c 3 -M do -s MTU yourIP 找出你的 IP MTU 数值。

6. 如何在终端机接口上进行WWW浏览?又该如何下载WWW上提供的文件?

要浏览可以使用 lynx ,要下载则使用 wget 软件。如果想在终端机上看到中文,还可以安装 JCMME

7. 在终端机接口中,如何连接bbs.sayya.org这个BBS

利用 telnet bbs.sayya.org 即可连接上,同样地,要看到中文,还是得安装 JCMME