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系统中,常见的套件管理程序有RPM与Tarball,请分别说明这两个套件管理程序的优缺点。
• 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. 什么是UID与GID?UID有哪些等级?
在
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. 用户的根目录参数、UID、GID及其他相关参数,还有密码文件,放置在哪些文件里?
放置在
/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. 什么是MAC(Media 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!
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!
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包上的SYN与ACK标志代表的意义为何?
• SYN
代表该包为该系列联机的第一个包,即主动联机;
• ACK
则代表该包为确认包,即回应包。
13. 什么是三次握手?在哪一种包格式上才会有三次握手?
使用
TCP
包才会有三次握手。
TCP
包的三次握手是一个确认包正确性的重要步骤,通过
SYN
、
SYN/ACK
、
ACK
三个包确认无误后,才能够建立联机。至于
UDP
包,则没有三次握手。
第3章、局域网架构简介
1. 幻想自己是一个私人公司的老板,员工有20人,如果我想让公司的员工都可以连上Internet,并且控管每个员工的对外联机,请问我的硬件联机应该怎么配置?另外,应该申请的线路频宽应该多大?而我的内部网域(IP、Netmask……)又该如何设定?
因为只有
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.100、Netmask 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
。
转载于:https://blog.51cto.com/redhatlover/287244