2009年3月29日星期日
Sun的身前身后事
当大家都在关注Sparc平台,Java中间件,Solaris操作系统以及一大堆应用的何去何从时,业界的另一个比较有趣的话题逐渐的浮出水面——作为Java下的应用,同时又是IBM竞争对手的Oracle和SAP是否还会继续支持Java?选择继续无疑于与虎谋皮;选择放弃Java,拜托,这么多的客户岂不是要倒戈?
这些只是作为一些题外话,不管今后Sun怎样,不妨总结下Sun的贡献吧。
首先,在开源领域中,Sun的地位可以说是无可撼动的领头羊。目前最大的3个开源项目,分别是Sun主导的opensolaris,Sun主导的Openoffice,以及Sun主导的OpenJava。是不是感觉到了点什么?除此之外,还有Sun支持的mysql也可以说是最为常用的开源系统之一了。
系统集成上,Sun同时拥有了硬件平台,到操作系统再到桌面生产力工具和IDE。可以说目前连微软也是做不到的高度(至少MS没有自己的CPU)。唯一可以与之匹配唯独IBM这个蓝色巨人。然而一旦IBM==SUN,这又意味着什么?
Java的出现也是一大创举。过去企业要做开发,需要BS,CS,甚至于OA等多个开发团队来实现。Java的很空出世,加上Oracle和SAP的协助,对于企业平台而言,数据库之需要一个,平台只要一个,开发团队只要一个,空前的统一!
最后,OpenSparc的标准也成为开源硬件的一大创新性尝试。
window.google_render_ad();
IBM方面呢?
蓝色巨人的最大竞争对手倒下了。白捡了客户,减少了竞争对手。这世界顿时清静了。
控制了JAVA,间接的抑制了Oracle对于DB2,SAP对于Domino的市场冲击。
拿到了SPARC的研发团队,弥补了自己power平台的技术缺失。
…………
难道PowerPC版本的Solaris就是对于现状的预兆?
所谓现代的经济,就是在定期和不定期的执行“破坏性创造”。输赢只在乎破坏力来自何方,来自自己,你是赢家;来自竞争对手,很遗憾,You Lose!
2009年3月26日星期四
关于 load average
很多人都知道uptime命令会得到如下的返回:
12:00:59 up 20:24, 1 user, load average: 0.49, 1.40, 1.61
其中的load average根的3个数字,分别表示系统在1分钟,5分钟和15分钟的平均负载情况。这个数字是系统每5秒钟会自动检测一下活跃的进程数量(即top命令看到的n running),然后得出结果。具体感兴趣的话可以研究下Linux内核中include/linux/sched.h, kernel/timer.c,fs/proc/proc_misc.c
所谓活跃的进程,需要满足:
- 没有被终止或者正在调用wait。
- 不是正在等待I/O操作。
很多网上说这个数字除上CPU的数量如果得到的结果大于5就说明系统在超负荷运转。对于这个结论本人持保留意见。
- 对于双核或者多核的CPU,如果按照1个CPU来计算,那么明显的状况就是对于多核心的不公。如果按照多个CPU来计算,那又是对于多路CPU,甚至是独享内存总线多CPU的不公。对于基于HT技术的"假多核"更是如此。
- 对于不同平台的CPU而言,目前公认的是X86架构"不耐压",特别在于高并发的情况下。本人明显觉得SPARC的架构相比X86在压缩同一个文件的时间更长;但是同时进行多个压缩的时候Sparc的平台占有绝对优势。
- 超负荷的界定:有的系统,在1.5的情况下已经能够感到明显的延时;同样有的系统在10以上还能迅速响应。
2009年3月20日星期五
踩到雷
首先是要伴随perl升级一系列的模块,这似乎也不是难事。然后是执行perl-after-upgrade。一切似乎很顺利。随意习惯性的top了一下,发觉负载已经高达60%以上,而且是邮件系统的MailScanner的进程奇高。考虑到MailScanner引用了perl,很明显的需要restart一下。这时候问题来了。
restart之后,邮件不能正常接收,检查原因,发觉邮件在MailScanner中不停的check。赶紧检查日志,很明显的报错:
MailScanner[66402]: Could not use Custom Function code /usr/local/lib/MailScanner/MailScanner/CustomFunctions/GenericSpamScanner.pm, it could not be “require”d. Make sure the last line of the file says “1
调用万能的google,关键字perl5.8.9 MailScanner,发觉通篇都是与我一样的报错,最新的记录似乎也没多远。貌似是我幸运的踩到了雷。
临时处理方法其实也是非常简单的——退回到perl5.8.8就OK。
关于Postfix RBL设置的问题
rbl的原理就是在拿到对方的IP以后,例如:1.2.3.4,反转后组成域名。例如xbl.spamhaus.org的RBL就会组成4.3.2.1.xbl.spamhaus.org送去DNS解析。正常的IP将会获得一个一个正常的IP回复,黑名单中的IP将会获得127.0.X.X的IP。
一般情况下在Postfix中会做如下设置启用RBL:
smtpd_client_restrictions = permit_sasl_authenticated permit_mynetworks reject_rbl_client xbl.spamhaus.org=127.0.0.4 permit需要说明的就是,至少我在postfix2.4下只有这种方式才会正常RBL,否则的话很容易就block全世界了。测试了几次,发觉并不向网上很多帖子说的那样是由于DNS被劫持引起的。关于127.0.X.X的返回值,可以到RBL的网站上查阅。
同时作为RBL的选择,其实一个就足够了,没有必要反复进行验证。
2009年3月13日星期五
回想安腾
接触安腾并不多,也就是接触了一台曙光的服务器是安腾的芯片,当时的感觉是非常高端的机器了,也许AMD的上述评论一部分出自于商业因素,但安腾不被人看好确实不争的事实。
也许安腾的悲哀正式目前IT的悲哀……
安腾平台的创新在于通用的借口,不管什么样的硬件只要符合标准就不需要做过多的配置,直接与BIOS通信就可以解决,想法不错解决了配置驱动的繁琐问题,但各个厂商似乎出于种种不可告人的理由几乎没有什么像样的产品问世,到头来是Intel在苦苦支撑一个平台的软硬件,后期除了HP几乎没有别的厂家还在卖IA64的服务器——Intel害怕得罪硬件厂商,始终不敢发售自有品牌的服! 务器,只有帮别人贴牌做;DELL以做低端为主,懒得管IA64的事;IBM 、SUN又有自己的Power 和Sparc系列CPU;如果当初HP自己的Alpha没有出现问题的话,恐怕下场还要难看。
安腾,一个在错误的时间、由错误的公司推出的一个本不应该失利的硬件平台。
Oracle DB 10g 中文乱码问题的解决
1. 安装时的乱码
2. 一些应用程序的乱码, 比如 dbca, netca
3. 一些基于oc4j的web应用的乱码, 比如 isqlplus, em
造成这些问题的原因都是一个, 就是这些程序都使用jdk, 相应的jdk(或jre) 使用的字体配置文件 font.properties 中的字体和操作系统的字体或者字体配置文件不匹配. 解决的办法是把两者改成一致.
1. 下载, 解包 ship.db.cpio.gz, 生成目录 Disk1
2. cd Disk1/stage/Components/oracle.swd.jre/1.4.2.0.0/1/DataFiles/
unzip all_except_bin.jar
(这时生成一个 jre 的目录)
cd jre/1.4.2/lib/
mv font.properties font.properties.bak
cp font.properties.zh_CN.Redhat8.0 font.properties
cd ../../../
zip -r all_except_bin.jar.new jr! e/
mv all_except_bin.jar.new all_except_bin.jar
(这么累啊, 其实就是把 font.properties 文件换掉. 这样安装时汉字显示就没有问题了)
3. 如法炮制, 把Disk1/stage/Components/oracle.jdk/1.4.2.0.0/1/DataFiles/sol_bin.1.1.jar
文件里面的font.properties 文件换掉, 创建数据库和执行网络配置时的乱码就没有了. isqlplus 和em 的乱码也解决了.
Xen:用于Linux?内核的虚拟化技术简介
随着对现有软件的改进和 bug 修复,开源世界的变化永无止境。要保持软件总是升级到最新,这可能得作为一份专职的工作。升级软件最难处理的问题之一是:您永远不会真正知道升级完成后应 用程序是否还能够工作。大部分软件打包系统都具备回滚功能,但通常只有这项功能还不够;理想情况下,您应该去测试这些新的升级,并在一个不会破坏任何东西 的环境中去尝试它们。
就像玩耍的小孩子一样,您希望拥有一个属于自己的沙盒,在那里您可以随意做任何事情。
通常通过 虚拟化(Virtualization) (或者“沙盒(sandbox)”)将同一硬件上的应用程序和系统彼此隔离开来。从硬件模拟到完全硬件虚拟化,Linux 支持很多种不同形式的虚拟化。在不断增加的虚拟化技术列表中,Xen 是近来最引人注目的技术之一,它由剑桥大学开发。Xen 值得您关注,因为它具有空前的性能与安全性。
初识 Xen
Xen 是在剑桥大学作为一个研究项目被开发出来的,它已经在开源社区中得到了极大的推动。Xen 是一款 半虚拟化(paravirtualizing) VMM (虚拟机监视器,Virtual Machine Monitor),这表示,为了调用系统管理程序,要有选择地修改操作系统,然而却不需要修改操作系统上运行的应用程序。虽然 VMWare 等其他虚拟化系统实现了完全的虚拟化(它们不必修改使用中的操作系统),但它们仍需要进行实时的机器代码翻译,这会影响性能。

由于 Xen 需要修改操作系统,所以您不能直接让当前的 Linux 内核在 Xen 系统管理程序中运行,除非它已经移植到了 Xen 架构。不过,如果当前系统可以使用新的已经移植到 Xen 架构的 Linux 内核,那么您就可以不加修改地运行现有的系统。
获得 Xen
可以从 Xen 的项目主页上获得它的源代码(请参阅 参考资料 部分的链接),但是,如果已经在使用某个 Linux 发行版本,那么您或许能够通过软件包升级或者安装来获得 Xen。这些主流发行版本都包含了 Xen:
- Fedora Core
- SUSE Linux
- Debian
- 可以获得位于 Gentoo's bugzilla 的实验用的 e-builds。
检查您的发行版本 —— 如果它不在这个列表中,那么您可能只能直接使用源代码。除了安装过程特定于发行版本之外,在任何发行版本上,Xen 中的所有工作都是相同的。
使用 Fedora Core
我有一个可以使用的 Fedora Core 3 安装,为了保持本文的简洁,我将讨论如何在 Fedora Core 上安装和运行系统。
尽管软件包只是在最近才开始进行开发,但 Fedora 已经为大量 Xen 用户所使用。由于有很多人尝试在 Fedora 上使用 Xen,所以您可能成功地获得大量的在线帮助。
安装 Xen
为了帮助您迅速上手和使用,本节着重指出了 参考资料 部分中 Quick Start Guide 的要点。由于 Fedora 中正在融入 Xen 更新,所以随着时间的推移, Quick Start Guide 将很可能会发生变化,希望 wiki 会保持对这些变化的更新。
首先,为基础机器(base machine)进行最简化的服务器安装。这台基础机器是您的系统管理程序,将不会运行任何服务器应用程序。您将可以在运行于此机器之上的 Xen 服务器中安装所需要的软件包,所以现在不需要安装想要运行的应用程序。
系统开始运行后,您应该将其更新到 Fedora 的最新开发版本(称为 rawhide )。要完成此任务,请遍历 /etc/yum.repos.d/ 目录中的元素,将除了 fedora-devel.repo 以外的所有元素都改为 enabled=0 ;将 fedora-devel.repo 改为 enabled=1 。
建立了 yum 储存库(repository)后,需要将机器更新到 rawhide,以便您可以开始使用最新发布的 Xen。
清单 1. 将 FC3 更新到 rawhide 并安装 Xen 软件包| #yum update #yum install xen kernel-xen0 kernel-xenU |
然后,创建一个将要使用的虚拟文件系统。
清单 2. 格式化并建立 Xen 服务器文件系统| #mkdir -p /xen/base #dd if=/dev/zero of=/root/base.img bs=1M count=1 seek=1024 mkfs.ext3 /root/base.img #mount -o loop /root/base.img /xen/base |
格式化并挂载 Xen 服务器文件系统之后,下一个步骤是安装必要的软件包,以便在这些软件包上运行某些程序。为了在 Xen 服务器上运行一个 Web 服务器,您应该安装一组 Web-server 软件包。(警告: 这将需要一段时间!您可以先 运行 yum,然后出去散散步。)
清单 3. 安装 Xen 服务器软件包| #yum --installroot=/xen/base -y groupinstall web-server --enablerepo=base --disablerepo=development |
(现在应该去散步了。)
现在已经安装了所有需要的软件包,不过您应该去查看一个简单的 fstab 文件,这个文件会告知 Xen 服务器它们将要获得根(root)设备 sda1,将该设备作为根。根设备实际上是来自系统管理程序的一个虚拟的设备,但您的服务器不会知道这一点。
清单 4. Xen 服务器 fstab 文件| /dev/sda1 / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 |
将这个文件写入 /xen/base/etc/fstab。如果不是标准的 Fedora 安装,那么不会为您创建任何 fstab。预计 Fedora 的未来版本会包含处理此问题的工具。
最后,为了让系统正确地运行,您应该做一些处理。目前,Xen 使用 initrd 时仍然存在问题,所以,如果想要启动系统,则需要为自己创建一些设备代码。然后,为了让程序平稳运行,删除 TLS 程序库会有所帮助,因为目前它们与 Xen 冲突很严重。完成这个步骤后,可以卸载这个文件系统。
清单 5. 为开始运行所做的最后的处理| for i in console null zero ; do MAKEDEV -d /xen/base/dev -x $i ; done mv /lib/tls /lib/tls.disabled mv /xen/base/lib/tls /xeb/base/lib/tls.disabled umount /xen/base/ |
运行 Xen
既然已经细心地手工建立起了客户系统,那么您现在就可以真正重新启动机器,开始使用 Xen 内核。您可能将会看到比平时多得多的打印输出,并且您还会看到关于 TLS 程序库(上一节中您删除的那个会出问题的程序库)的可怕的消息。
Xen 要求为运行的每个服务器准备配置文件。尽管您可以为所有服务器创建一个惟一的动态配置文件,但我还是建议您创建两个静态的配置文件,各用一个。如您所见,磁盘标签告诉服务器您的文件映像是 sda1 设备。也指定了您所使用的 xenU 内核,以及服务器客户将要获得的内存。
清单 6. Xen 服务器配置文件| /etc/xen/base kernel ="/boot/vmlinuz-2.6.10-1.1141_FC4xenU" memory = 64 name = "BaseServer" nics = 1 disk = ['file:/root/base.img,sda1,w'] root = "/dev/sda1 ro" /etc/xen/test kernel ="/boot/vmlinuz-2.6.10-1.1141_FC4xenU" memory = 64 name = "TestServer" nics = 1 disk = ['file:/root/test.img,sda1,w'] root = "/dev/sda1 ro" |
要启动并运行服务器,首先要使用命令 xend start 启动 Xen 服务,然后使用命令 xm create base 通过基本配置文件创建 BaseServer。通过这些步骤,您将进入 Xen 客户系统中,可以看到该系统已经启动起来。不论何时,如果您想跳出客户系统控制台,那么按下 Ctrl-] 组合键就可以直接返回到系统管理程序控制台。
使用 Xen
现在您已经用了一些时间来编辑配置,并建立了运行两个 Xen 服务器的系统。所有这些艰苦的工作完成后,接下来做什么?
现在您拥有了一个系统的两个副本,它们运行相同内核,在同一台机器上被虚拟化。如果 BaseServer 代表的是您希望正常运行 Web 服务的稳定环境,那么 TestServer 代表的就是 Fedora rawhide 所提供的最新软件更新。您可以随意保持对 TestServer 系统的升级,尝试所有新版本的软件更新 —— 当您认为它足够稳定时,可以将 TestServer 作为 BaseServer 来运行。
设置 BaseServer
BaseServer 运行时,是修改将要运行的 httpd 服务的配置的好时机。您应该将 ssl.conf 文件移出 /etc/httpd/conf.d/ 目录,以此来停用 ssl;否则,您将需要为服务器生成证书。另外,可能需要向系统添加一个 apache 用户。
Xen 系统管理程序已经自动提供了一个可以使用的虚拟网络设备。如果您可以在这个设备上运行 dhcp,那么只需要执行 dhclient eth0 ,BaseServer 就会获得 IP 地址。
设置 TestServer
设置了 BaseServer 的配置之后,在 BaseServer 控制台中执行 poweroff 以关闭该实例。如果您已经从 BaseServer 注销,那么可以使用 xm console BaseServer 重新进入它。
现在,通过 cp /root/base.img /root/test.img 复制基础映像,以便获得同一文件系统的副本。当运行 xm create -c test 时,它会运行与 BaseServer 相同的服务器,但是它的名称是 TestServer。登录到 TestServer,然后像您在 安装 Xen 那一节中所做的那样启用 rawhide 支持,然后运行 yum update 。
TestServer 实例拥有与 BaseServer 完全相同的配置,但是您已经升级到了 Fedora rawhide 所必须具备的最新的软件包。在此,您可以查看 Web 站点是否仍然可用。
关于 Xen 还有哪些内容?
我希望这些简短的说明和简单的示例能够帮助您安装和运行 Xen,这样您就可以尝试使用它。为了让您迅速地熟悉 Xen,我没有介绍如何利用 LVM 与快照(snapshots)等功能,也没有介绍如何完成 Xen 服务器从一台机器到另一台机器的网络迁移。但是,既然您已经了解了 Xen 所具备的一些优势,请浏览下面的 参考资料 ,学习一些如何使用它的更为多变的技巧。
检测Linux硬件状态
中央处理器状态的检测 中央处理器是Linux主机的核心硬件。我们看一下Linux根目录下:/proc目录的内容。这个目录中的文件其实不是存放在磁盘上 的。该目录的文件系统叫做proc文件系统,是系统内核的映像。也就是说该目录里面的文件是存放在系统内存里面。它以文件系统的方式为访问系统内核数据的 操作提供接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息(如进程)是动态改变的,所以用户或! 应用程序 读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
CPU的信息存放在"cpuinfo"文件中。我们也可以使用以下命令来查看:
#cat /proc/ cpuinfo
以下以笔者的AMD Athlon 1100为例:
processor : 0 |
一定要确保CPU硬件没有BUG,并且被系统认别出具体型号。以上只是显示CPU的基本情况,对于实时情况我们使用mbmon软件检测CPU,
1.软件下载:http://www.nt.phys.kyushu- u.ac.jp/shimizu/download/xmbmon203.tar.gz,http://www.nt.phys.kyushu- u.ac.jp/shimizu/download/README-xmbmon203.html。
软件下载后先看一下:
README-xmbmon203pl1.html
查看一下软件是否支持你的主板芯片。
2.安装软件:
gunzip xmbmon203.tar.gz |
上面内容表示显示主板芯片是威盛的VT82C686A/B。下面在命令行下运行。
./mbmon |
上面显示了中央处理器温度为42.1,电源温度为33.0,主板温度为24.2;CPU风扇转速为5357转/分钟;CPU核心电压为1.78伏特,输入电压为12.19伏特、3.41伏特, 4.93伏特。缺省情况下,以上内容五秒钟更新一次记录。
Mbmon在X窗口下运行,运行结果如图1所示。
./xmbmon
图1 mbmon在X窗口下运行
4.远程监控
Mbmon最新版本还提供远程监控的功能:
./mbmon-p 22
其中"-P 22"表示打开端口22,这样你就可以使用Telnet、SSH等远程工具连接Linux主机来检测CPU状态了。
硬盘磁道检测
硬盘物理坏道是硬盘的所有Linux硬件故障中最让人头痛的。它轻则使你的Linux计算机频频死机,重则让你的所有数据�! �为乌有。现在 出厂的硬盘(1993年以后)基本上都支持SMART(Self Monitoring Analysis and Reporting Technology)自动检测分析及报告技术。SMART技术可以对硬盘的磁头单元、盘片电机驱动系统、硬盘内部电路以及盘片表面介质材料等进行监测。 当SMART监测并分析出硬盘可能出现问题时,会及时向用户报警以避免计算机数据受损失。SMART技术必须在主板支持的前提下才能发生作用,而且 SMART技术也不能保证能预报所有可能发生的硬盘故障。SMART(SFF-8035i)是硬盘生产商们建立的一个工业标准。这个标准就是在硬盘上保存 一个跟执行情况、可靠程度、读找错误率等属性的表格。所有属性都有一个1byte(大小范围1-253)的标准化值,还包含另一个1byte的关键阶段 值。如果属性表格内某个数据接近小于或达到关键阶段值,表明硬盘工作不正常了。
Smartmontools是一个L! inux下硬盘检测工具,主页为http: //smartmontools.sou! rceforge .net,下载链接:ftp: //fr2.rpmfind.net/linux/sourceforge/smartmontools/smartmontools-5.1-18.i386.rpm。
1.软件安装:
rpm-ivh/smartmontools-5.1-18.i386.rpm
软件安装后会在/usr/local/ 目录下产生程序:smartctl,先检测硬盘和主板是否支持SMART技术(见图2)。
smartctl -i /dev/hda7
图2 检测硬盘是否支持SMART
图2显示笔者的硬盘支持SMART,型号是:ST320414A(希捷的酷鱼III,72000RPM,2兆缓存)。
2.全面检测硬盘
运行以下硬盘检测命令:
smartctl -A /dev/hda7
图3 硬盘物理逻辑状态
图3是检测到的硬盘信息,其显示的信息根据你的硬盘厂商不同而不同,其中1! -202行代表硬盘的不同物理性能,纵列代表硬盘的逻辑状态。
FLAG是标记,标准数值(VALUE)应当小于或等於关键值(THRESH)。WHEN_FAILED 代表错误信息,图3中的WHEN_FAILED纵行是空行,说明硬盘没有故障。如果WHEN_FAILED显示数字,表明硬盘磁道可能有比较大的坏道。
Smartctl有十几个参数,详细情况可以下面的命令查看:
smartctl --help
3.高级应用
我们可以用crontab命令实现每天定时的扫描:
(1)首先建立一个文件,文件名称Linuxect(名称自己设定):
#crontab -e
(2) 文件内容:
05 16 * * 5 smartctl -A /dev/hda7
用vi编辑后存盘退出。使用crontab命令添加到任务列表中:
#crontab Linuxect
这样系统内所有用户在每个星期五的16点05分会自动进行扫描。
内存检测
通常我们会觉得内存出错损坏�! �几率� ��大,并且认为如果内存坏了,那么它是不可能通过主板BIOS的开机自检程序的。事实上这个自检程序的 功能很少,而且只是检测容量速度而已,许多内存出错的问题并不能检测出来。如果你在运行程序时不时有某个程序莫名其妙地失去响应;打开文件时偶尔提示文件 损坏,但稍后打开又没问题......那你应该考虑检测一下你的内存了。
1.使用Linux命令检测
(1)在命令行使用"Free"命令可以监控内存使用情况
#free |
上面给出了一个256MB的RAM和512MB交换空间的系统情况。
(2)使甩vmstat命令监视虚拟内存使用情况:
# vmstat |
Vmstat()命令是一个通用监控程序,是Virtual Meomory Statistics(虚拟内存统计)的缩写。如果使用Vmstat命令的时候没有使用它的任何命令行参数,你将得到一个一次性的报告。Vmstat命令 报咨的主要的活动类型有进程(procs)、内存(以千字节为单位)、交换分区 (以千字节为单位)、来自块设备(硬盘驱动器)的输入输出量、系统中断(每秒钟发生的次数)、中央处理单元(CPU)分配给用户系统和空闲时所分别占用比 例。
2.使用工具软件检测
Memtest86是一款免费的内存测试软件,测试准确度比较高,内存的隐性问题也能检查出来。可以到http://www.memtest86.com/页面下载它的最新3.0版本。
下载链接:http://www.memtest86.com/memtest86-3.0.tar.gz
软件安装:
# tar xzvf memtest86-2.5.tar.gz |
然后,将一张 3.5 英寸空白磁盘插入到软盘驱动器,并输入:
# make install
另外也可以下载http://www.memtest86.com/memtest86-3.0.iso.gz 文件,解压后是一个IOS文件,刻录到光盘,再来启动计算机。
重新启动计算机,在BIOS中设定用软驱启动即可,软件运行界面见图4。
图4 Memtest86软件运行界面
图4中可以看到当前系统所采用的处理器型号:AMD-Duron和频率:1056,以及CPU的一级缓存(128k)和二级缓存 (64k),系统物理内存的容量(64)和速度(315MB/s)。最后显示的是主板所采用的芯片组类型。在系统信息的右侧显示的是测试的进度。 "Pass"显示的是主测试进程完成进度。"Test"显示的是当前测试项目的完成进度。"Test #1"显! 示的是目前的测试项目。"WallTime"显示测试已经耗费的时间,在这一排数据中"ECC"一栏中,显示的是当前内存是否支持打开ECC校验 功能。"TEST"显示的是测试的模式,有"标准"和"完全"模式可供选择。"
设定检测选项:我们可以单击"C"键打开Memtest86的设置菜单,接着单击数字键"2"选择"Test Selection"选项,再单击数字键"3"选择"All Test"选项打开完全测试模式(如图5所示)。
图5 设定检测选项
主要的内存突发问题(比如"死亡"位)将在几秒钟内检测出来。如果是由特定位模式触发的故障,则需要长时间测试才能检测出来。如果你的内存容量比较大,就需要有耐�! �等待检测结果。笔者使用的测试内存容量是64MB! ,PC133 。使用完全检测模式使用的时间是24分钟。
小结
中央处理器、硬盘、内存是Linux系统的核心。Linux 负有盛名的特点之一是其非凡的稳定性。如果您的硬件有缺陷或配置不正确,那么系统内的数据的安全就危险了,所以实时检测它们的状态是重要的。
drupal简介
优秀的CMS系统包括:Drupal、Typo3、XOOPS、TikiWiki、Mambo、PHP-Nuke等,具体见:
http://www.opensourcecms.com/
目前国内比较流行的CMS包括Mambo和XOOPS,他们的国内社区见:
http://www.mambochina.net/
http://xoops.org.cn/
Drupal是一个新的CMS系统,它虽然没有Manbo流行,也没有XOOPS强大,但却是一个非常易用的内容管理系统,可做为个人! 或大型网站发布、管理、组织不同内容的平台,包含了广为人知的weblog、论坛、投票、新闻聚合、站内搜索、电子商务等功能。
Drupal应该翻译成什么呢?呵呵,觉得还是翻译为“水滴”比较好。Drupal这个词其实是荷兰语Druppel的英语发音,而Druppel在荷兰 语里面是Drop也就是水滴的意思。Drupal的编写者最初选择这个词实在是意外,他本来想注册一个名为“Dorp”的域名,Dorp在荷兰语里是“小 村庄”的意思,英语里其实也有这个名词,但是他一不小心犯了个错误,于是就注册成了Drop,于是也就有了后来的 Drupal。呵呵,所以汉语翻译成“水滴”还是蛮贴切的,听起来也不错了。
有的人把Drupal当作是blog系统,我一开始也是 这样认为的,其实这只是Drupal的一方面的应用,Drupal是一个功能强大的content manage s! ystem(cms),在功能设计上它仿照了phpnuke,xoops�! �的模� ��化方式,界面上仿照了blog模式。这个程序以极少的代码实现了非常强 大的功能。很多人用“神奇” 两个字来形容它,它是一个完全开放源代码的程序,所以吸引了众多PHP爱好者的目光,很多PHP高手参与了它的开发行列中来了,开发速度非常块,几乎两个 月出一个新版本,modules和skins也越来越多。从官方站点有时上千人的在线情况就可以看出它的受欢迎程度。
在这里可以下载Drupal:
http://drupal.org/
我们的非官方 Fedora FAQ
注意: 这里不是官方的技术支持也不是红帽子公司的服务. 这里可以解决你最棘手的问题,但是它们也可能使你暴跳如雷. 我不能给你任何承诺. YMMV.
如果在这里找不到你的问题的答案
- 请到这个论坛提问FedoraForum.org.
- 搜索 Linux Google.
- 或者看看 FedoraNews Updates -- 他们会每隔几周对常见的问题和答案做一个总结.
- 或者到 Fedora 的邮件列表提问. (你也可以查找 以前的记录.)
- 或者加入 #Fedora IRC 频道.
如果你能提供我们缺少什么FAQ或者你发现了我们需要更新或更改的地方,我们欢迎您 献计献策!
如果你还是一个LINUX新手
我们已经对大多数的入门问题做了解答 Fedora 入门 FAQ. 即时你已经有了一些经验,你仍然可以在这里找到一些有益的提示.
目录
关于 Fedora
- Fedora Core 3到底是什么?
- Fedora 和Red Hat 企业版的区别在哪里?
- 它是一个不稳定的版本吗?
- 它已经正式发行吗?
- 如何 得到一份拷贝?
- 如何找到随Fedora Core 3 发行的各种程序的一个列表?
- up2date还能用吗?
- 是不是可以安装在ReiserFS, JFS, 或者 XFS的文件系统上?
- Fedora 是否支持使用64位 (AMD-64或者Intel EM64T) CPU 的电脑?
- Fedora 是否支持Mac (PowerPC)?
- 为什么找不到Fedora Core 3制作安装盘的软盘镜像文件(image)?
获得和安装 Fedora 的软件
- 哪里可以找到Fedora的软件 ?
- 如何安装Fedora下的软件 ? (如何使用yum 或者是 RPM包)(更新于2005年2月6日)
- Fedora下面有没有类似 apt的东东?
- Fedora Extras(额外软件包)在哪里可以找到?(更新于2005年2月6日)
- 红帽子的升级服务器 太慢了! 有没有别的选择?
- 如何安装 Java?
- 如何安装网页浏览器的Flash插件
- 如何在网页浏览器里查看PDF文档?
- 如何在网页浏览器里看 电影?
- 如何使用MSN /AIM/ICQ/Yahoo 这样的即时通讯软件?
- 如何安装字体? 我可以用windows的字体吗(.ttf)?
- 如何获得硬件在Fedora下的驱动程序 ?
问题和解决方案
- 我从RPM包得到NOKEY 的警告信息 或者说在使用 Apt /Yum / up2date!这样的工具时收到类似gpg signature error的错误信息. (更新于2005年2月6日)
- 如何开启我的ATI Radeon 显卡的3D支持?(更新于2005年2月6日)
- 如何使我的 nVidia 显卡支持3D? (Updated 13 Dec 2004)
- 我的电脑装了 nVidia 显卡,我的电脑在 启动时死锁.
- 安装程序的 安装介质检查 报告说我的安装光盘有问题!
- 我碰到了奇怪的 安装问题.
- 如何使用 XMMS 播放MP3?
- 如何使用 Rhythmbox 播放 MP3?
- 如何在 KDE MP3 播放器中播放MP3,例如 Noatun 或者 Juk?
- 如何读取 NTFS格式分区 (Windows NT/2000/XP/2003) ?
- 我不喜欢新的文件浏览器 (nautilus),如何删除它? (Updated 13 Dec 2004)
- 如何编辑面板上的菜单?
- 如何使用 Wine ?(Updated 13 Dec 2004)
- 我不能再进入Windows 网络的共享文件夹 !有人告诉我用 smbmount这个命令,但是还是不行!
- d00d, u r t3h sukc
The FAQ
关于 Fedora
- Q: Fedora Core 3到底是什么?
A: 首先, 请读一下 官方的 Fedora 介绍 .现在,我将做一个总结.你可以想象它就是 "Red Hat Linux 12," 但是实际上它和Red Hat Linux 还是有一些不同的:
- 它是由开源社区支持的. 也就是说你本人 也可以参加到Fedora Core的开发中来,只要你愿意.
- 每隔六个月,一个新的版本的Fedora就会出现.
- 每当新版本出现,6-8月后之前的旧版本就不被支持了.
也就是说你要每6-8个月更新你的系统.当然,这个升级的过程一般都相当简单,就好象Red Hat Linux 8 - Red Hat Linux 9. 我很难担保它有多么容易.
当然,可能你不愿意或者不可以每隔6-8个月都升级一次,也可以参考一下 Fedora Legacy Project.他们在 Fedora Project 停止支持之后的1年半之内仍然提供安全方面的补丁.
Red Hat Enterprise Linux 4 这是建立于Fedora Core 3的基础上, 如果你想免费了解和学习RHEL 4 ,就试一下 Fedora Core 3.
- 它是由开源社区支持的. 也就是说你本人 也可以参加到Fedora Core的开发中来,只要你愿意.
- Q: Fedora 和Red Hat 企业版的区别在哪里?
A: Red Hat企业版Linux 已经有5年被红帽子支持的历史了. 对于重要生产的场合而且你不想一直在升级你的系统,它是更好的选择. 它也具有一些很有用的特性专为同时运行多个服务器而设计. 同时, 你也可以(有时)真的打电话到Red Hat来寻求对 RHEL的支持, 但是对于Fedora永远也不会有这样的支持.
Fedora是免费发行的,RHEL(企业版)要花钱去买.
Fedora 相比之下更加时髦, 而且Fedora有一个很大的社区的支持,许多人愿意免费地帮助你(就像这个网页一样).
Red Hat 也有 关于这个问题的有趣的讨论.
- Q: 它是一个不稳定的版本吗?
A: 当然不是!
- Q: 它已经正式发行吗?
A: 当然! Fedora Core 3 (Heidelberg), 在2004/11/8正式发行.想知道新版本的Fedora什么时候会发行, 请看发行日程表.
- Q: 如何得到一份拷贝?
A: 直接下载或者 使用BT工具. 请下载 "binary" 或者 "i386" 包, 不要下载 "source" 或者 "SRPM" 包.
如果你不想下载这么大的光盘映象,你也可以选择一家官方的分销商. (感谢Beartooth 指出有些人不方便下载CD, 同时感谢Jef Spaleta 提供这个链接.)
- Q: 如何找到随Fedora Core 3 发行的各种程序的一个列表?
A: 请在以下地址寻找 Core 3 主要软件包列表 Distrowatch Fedora Page.
- Q: up2date还能用吗?
A: 当然, 只是现在不在使用 Red Hat Network (RHN). (现在仍然是从 Red Hat的服务器上下载,只是没有原来的RHN的一些功能了.)
尽管如此,对于Fedora, 最好还是使用 yum 升级而不是用up2date.
- Q: 是不是可以安装在ReiserFS, JFS, 或者 XFS的文件系统上?
A: 当然, 你可以把 Fedora 装在 ReiserFS, JFS, or XFS.
但是这些文件系统都没有Fedora Project官方的支持. (也就是说,如果你使用这些文件系统遇到什么问题,你可能找不到太多官方的支持.)
在安装程序的提示下输入下面的命令来安装到ReiserFS文件系统:
linux reiserfs
或者到JFS文件系统:
linux jfs
到XFS:
linux xfs
注意: 你不可以使用SELinux 如果选择 ReiserFS 或者JFS. 但是XFS可以. (如果你不知道SELinux是什么,你可以跳过这个提示.)
(感谢 whiprush [quoting Jesse Keating] 提供这些知识.同时感谢 Kai Thomsen.感谢 Colin Charles 提供了XFS和SELinux 的提示.)
- Q: Fedora 是否支持使用64位 (AMD-64或者Intel EM64T) CPU 的电脑?
A: 当然,可以! 64位的Fedora Core 2 现在可以下载了. 看看这里下载 Fedora.
如果你有什么64位Fedora的任何问题, 看看 AMD 64 Fedora FAQ.
当然,也可以在64位电脑上面运行普通的32位Fedora.
- Q: 我们可以在 Mac (PowerPC)上运行Fedora ?
- Q: 为什么找不到Fedora Core 3制作安装盘的软盘镜像文件(image)?
A: Fedora Core 新的2.6 内核不能放进软盘里.所以,你不能从软盘启动或者安装.然而, 你可以用光盘,硬盘,或者甚至是USB disk (如果你的电脑支持用USB disk启动).
如果你只能用软盘你只有如下的选择:
- 如果你是升级旧的Red Hat/Fedora安装, 参考HOWTO: Upgrade to Fedora on a Laptop with no Floppy or CD Drive. (感谢Alan Cox的链接.)
- 如果你有光驱,但是不能从光盘启动,你可以选择安装 Smart Boot Manager 到软盘上,然后用它来实现从光盘启动. (感谢Paul Rouleau的提示!)
(感谢Noa Resare对这个问题的建议)
- 如果你是升级旧的Red Hat/Fedora安装, 参考HOWTO: Upgrade to Fedora on a Laptop with no Floppy or CD Drive. (感谢Alan Cox的链接.)
获得和安装 Fedora 的软件
- Q: 哪里可以找到Fedora的软件?
A: 有一些"repositories"(仓库) (提供软件的网站). 主站点有非官方的rpm.livna.org (那些需要授权的或是有USA 专利问题的软件) 还有就是比较官方的 fedora.us site. 他们提供了不同的软件.
还有更多的选择.参考 FreshRPMs. 在FreshRPMs 和他的伙伴那里有许多没有被fedora.us或者livna.org收录的软件. 你可以在 "Mega-Merge" page找到这些东东的列表.
在这几个主要的镜像站点上查找想要的软件请使用 FedoraTracker search engine 或者 rpm.pbone.net.
- Q: 如何安装Fedora下的软件? (如何使用yum 或者是 RPM包)
A: 最方便的在Fedora下安装软件的方法就是使用yum.
- 下载这个yum.conf (更新于2005年2月6日).
- 替换你的"/etc/yum.conf". 当然你首先得是root 才能这样做. 实际上,下面的操作都需要root的权限.
注意:不是所有的软件都可以用到Fedora Core 3下.目前,一些站点还在针对新发布的Fedora Core 3进行更新.
注意:因为各种原因,这里的yum.conf随时都在更新.
现在你可以看看有哪些可用的软件:
yum list available
- 要安装新的软件输入:
yum install 软件包名
- 要升级旧的软件输入:
yum update 软件包名
如果你不指定软件名,yum将自动升级全部软件.
- 要检查有哪些软件可以升级,输入:
yum check-update
- 要搜索某个软件,输入:
yum search
要了解yum更多信息,参看 yum project page. (感谢Ron Kuris.)
如果你很在意安全的问题,我建议你注释掉yum.conf中 "gpgcheck=1" 这样的行-- 你可以参考 gpg signature question. (感谢 Kai Thomsen)
要通过代理服务器来上yum,请参考 FedoraForum 上关于代理服务器的讨论. (感谢 Reinhard Herzfeld 提供这个链接.)
如果你要从RPM包安装从yum以外得到的软件包,打开一个 terminal 然后以root登录:
rpm -Uvh filename.rpm
- 下载这个yum.conf (更新于2005年2月6日).
- Q: Fedora下面有没有类似 apt的东东?
A: APT 是Debian Linux下的软件安装工具,可以自动解决软件包的倚赖问题(dependencies), 这使得软件安装起来更加容易.
我们也可以在Fedora下使用类似APT的功能. 它已经包含在标准的Fedora Core 安装中.也就是 yum. 他可以自动下载和安装软件 同时自动解决它的倚赖问题, 只用一行命令.我还提供了一个特别的配置文件 我在自己的电脑上用的,在 如何使用yum这里.
对那些偏爱apt的人, Fedora也可以安装APT.你可以到 fedora.us下载. (查找"apt", Fedora Core 2的版本也可以.) 我听说它工作的很好.
- Q: Fedora Extras(额外软件包)在哪里可以找到? (更新于2005年2月6日)
A: 所谓 "Fedora Extras" 就是 Fedora Project同时提供的的软件包.他们不包括在Fedora Core里一起发行.请参考 红帽子的Fedora下载站点 它将会 存贮这些软件包.要安装这些包,请参考如何安装软件包.
- Q:红帽子的升级服务器 太慢了! 有没有别的选择?
A: 首先,你应该使用 yum. 其次,使用我们提供的这个yum.conf -- 它用了许多更快的镜像站点 (参考安装软件如果你不知道怎么用Yum.)
如果你真得要用up2date, 参考 Alexander Dalloz'的大作. 他讲了如何在up2date里面使用其他镜像站点.
- Q: 如何安装 Java?
最容易的方法是安装Dag Wieers'的 Java Runtime RPM包:
- 确认你用的是我提到的yum.conf.
- 打开一个终端.
- 登录为root.
- 输入:
yum --enablerepo dag install j2re mozilla-j2re
(如果你是升级,用"update" 替换 "install.")
如果上面的方法不适合你,或者你想用JAVA编程,(你需要SDK而不仅仅是Java Runtime),参考 自定义JAVA安装指南.
(感谢Dag Wieers 使这个问题简单的不可置信.感谢Quy Nguyen Dai的建议.)
- 确认你用的是我提到的yum.conf.
- Q:如何安装网页浏览器的Flash插件?
A: 有两种方法,用"yum,"的和不用的.
- 使用yum (最容易的):
- 不用yum (稍微复杂):
- 下载Flash 插件 RPM包到你的home目录. (选择"Fedora Core 3"的软件包.)
- 打开一个终端.
- 登录为root:
su -
- 输入
rpm -Uvh flash-plugin-*.i386.rpm
注意: 如果你重装了浏览器(Mozilla),你要重复这个步骤. - 下载Flash 插件 RPM包到你的home目录. (选择"Fedora Core 3"的软件包.)
还有其他问题,请参考Flash插件FAQ! (感谢Warren Togami 提供这个链接.)
(感谢IRC的朋友们以及vegan_linuxguy解决这个问题的贡献. 感谢"m d," David Ball, 还有其他人 对这个问题的贡献!感谢 David Jansen告诉我,我们不再需要libstdc++-compat 来运行Flash插件.)
- 使用yum (最容易的):
- Q: 如何在网页浏览器里查看PDF文档?
A: 我想最容易的方法是安装Adobe Acrobat Reader. 只要安装Dag Wieers's mozilla-acroread 包;
- 确认你是用我的yum.conf.
- 打开一个终端.
- 登录为root.
- 输入:
yum --enablerepo dag install mozilla-acroread
(如果你是升级,用"update"代替 "install.")
- 确认你是用我的yum.conf.
- Q: 如何在网页浏览器里看电影?
A: 只要安装 mplayer 插件:
- 确认你是用我的yum.conf.
- 打开一个终端.
- 登录为root.
- 输入:
su -
- 安装这个插件:
yum install mplayerplug-in
- 关掉所有的网页,再打开试试看.
现在可以了吧!
注意: 如果你重新安装了Mozilla,你还要再重复上面的动作.
(感谢 Sindre 提供答案.)
- 确认你是用我的yum.conf.
- Q: 如何使用MSN /AIM/ICQ/Yahoo 这样的即时通讯软件?
A: 当然,Fedora提供了一个通用的及时通讯工具gaim. 通过 使用 gaim,你可以同时看到 MSN Messenger, ICQ, AIM, Yahoo! Messenger,以及 Jabber上的好友.
要使用gaim,点击"Red Hat"应用程序菜单,选择 "互联网," 然后选择 "IM"
参考gaim的文档 如何加入你的MSN帐号.
(感谢Peter Lawler"gaim"是免费的.)
- Q:如何安装字体? 我可以用windows的字体吗(.ttf)?
A: 当然可以.
- 双击桌面上 "计算机" 图标.
- 从"文件"菜单下选择"打开位置..."
- 输入:
fonts:
现在只要简单的拖放& 你的字体文件到这个窗口来添加它们.
(感谢Harold Gimenez提供这个简单的方法.)
- 双击桌面上 "计算机" 图标.
- Q: 如何获得硬件在Fedora下的驱动程序 ?
Dag Wieers 提供了 相当多的Fedora驱动程序, 针对各种各样的硬件.那些以"kernel-module"开头的包 是驱动程序. 只要下载你的合适版本的驱动程序给你的内核.如果你不知道你的内核的版本, 你可以打开一个终端然后输入:
uname -r
注意: 你升级内核之后要重新安装新的驱动程序.
如果在Dag's site找不到你要的驱动,试试 Googling 查找:
Fedora 硬件名字
或者:
Linux 硬件名字
这里的硬件名子是你硬件的通用名字. 查不到,可以多试几个不同的名字.
问题和解决方案
- Q: 我从RPM包得到NOKEY 的警告信息 或者说在使用 Apt /Yum / up2date! 这样的工具时收到类似gpg signature error的错误信息.(更新于2005年2月6日)
A: NOKEY不是一个真正的问题.不会对你有什么妨碍. (Apt / yum / up2date的警告,不管怎么说, 通常会使你无法安装软件.)
如果你想解决这个问题,输入下面的命令来导入镜像站点的正确的key:
当然必须登录为root 来作.
- Red Hat:
rpm --import /usr/share/doc/fedora-release-3/RPM-GPG-KEY*
- Extras:
rpm --import http://download.fedora.redhat.co ... RPM-GPG-KEY-Fedora- Extras
- rpm.livna.org:
rpm --import http://rpm.livna.org/RPM-LIVNA-GPG-KEY
- FreshRPMs:
rpm --import http://freshrpms.net/packages/RPM-GPG-KEY.txt
- DAG:
rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
- ATrpms:
rpm --import http://atrpms.net/RPM-GPG-KEY.atrpms
- NewRPMs:
rpm --import http://newrpms.sunsite.dk/gpg-pubkey-newrpms.txt
- Dries:
rpm --import http://apt.sw.be/dries/RPM-GPG-KEY.dries.txt
- JPackage:
rpm --import http://www.jpackage.org/jpackage.asc
(感谢Kai Thomsen提供原始的 ATrpms key, 同时感谢 Tom Householder新的地址! 感谢Pim Rupert提供Dries key. 感谢Anduin Withers指出如何正确认识这个问题.)
- Red Hat:
- Q: 在Fedora Core 3里,如何开启我的ATI显卡的3D支持? (更新于2005年2月6日)
A: 现在 livna.org 已经提供了专门为Fedora设计制作的RPM格式的ATI显示卡驱动程序包.
注意: 如果之前你安装过nVidia的驱动程序, 必须在安装 ATI的驱动前先卸载它. (感谢 Ajay 的提示!)
如果你使用了yum 并采用了我们的 配置方法, 可以输入以下命令来安装:
yum install ati-fglrx kernel-module-fglrx-`(uname -r)`
这会针对你的内核版本安装ATI驱动,在重新启动之后会生效.
如果升级你的内核的话,记得在重新启动之前,重新安装 ATI驱动.为新内核安装驱动,使用下面的命令:
yum install kernel-module-fglrx-`(rpm -q --queryformat="%{version}-%{release}n" kernel | tail -n 1)`
(这只是用了一个小花招来得到你最新的内核的版本号.)
如果你发现了livna.org RPM包的任何问题, 请报告给Livna.org Bugzilla.
如果遇到ATI驱动的问题, 请报告至 ATI Feedback Form!
(感谢所有提醒和鼓励我更新FAQ上这个问题的人!感谢 Peter Lawler 大量 的帮助. 感谢 Sindre提供了最初的草稿.)
- Q: 如何使我的nVidia 显卡支持3D?
A: 现在livna.org上面提供了专为Fedora设计的nVidia驱动程序. 如果你用yum,而且使用我的yum.conf, 你应该可以很容易的安装这个驱动:
这样就可以针对你的内核版本安装适用的驱动了.
如果你升级了内核,记住一定要在启动新的内核之前安装合适的驱动程序. 这里有一些快捷的命令可以在 终端以 root 的权限里执行,轻松安装新的驱动:
yum install kernel-module-nvidia-`(rpm -q --queryformat="%{version}-%{release}n" kernel | tail -n 1)`
(这实际上是采用了一种很有趣的方法获得内核版本号.)
如果需要对nVidia驱动的帮助,参考 nV News "Linux and nVidia Graphics" forum. (感谢 Exile in Paradise.)
如果不能下载 livna.org 的RPM包, 参考 其他选择.
(感谢 Jeff Spaleta 告诉我已经有RPM包.)
- Q: 我的电脑装了 nVidia 显卡,我的电脑在 启动时死锁!
A: 这个问题是由 "Red Hat Graphical Boot" (RHGB,红帽子图形启动)和nVidia的驱动不兼容引起. 为了解决这个问题并使电脑可以正常启动,我们可以关掉RHGB:
- 电脑启动的时候,在GRUB 的屏幕里(也就是你选择操作系统的地方),选择你要启动的Fedora 的时候按a 键,别按Enter.
- 你会看到与下面类似的一行:
kernel /vmlinuz-2.6.6-1.435 ro root=LABEL=/ rhgb quiet
从这一行里删除"rhgb",然后按Enter.
现在你的电脑应该可以启动了吧.
为了防止以后发生同样的问题, 参考本FAQ的关于 nVidia 安装
- 电脑启动的时候,在GRUB 的屏幕里(也就是你选择操作系统的地方),选择你要启动的Fedora 的时候按a 键,别按Enter.
- Q: 安装程序的安装介质检查报告说我的安装光盘有问题!
A: 这是内核本身的一个BUG,在特定的系统上,作介质检查时 会出现所有的光盘都不好,为了顺利通过这个检查,请按以下几步来做:
- 在安装程序的提示符下,输入:
linux mediacheck nocddma
- 来检查你的CD/DVD.
- 重新启动,正常运行你的安装程序.
- 在安装程序的提示符下,输入:
- Q: 我碰到了奇怪的安装问题.
A: 如果你不能安装,或者在安装的过程中,安装后遇到什么问题,先看看 README 以及Release Notes(发行注记).
如果README和Release Notes都没有解决你的问题, 试试用下面的命令启动安装程序:
linux ide=nodma
linux acpi=off
linux i8042.nomux
linux acpi=off apm=off
"i8042.nomux" 特别是在你遇到键盘,鼠标的问题的时候用得上.
如果上面的某个命令解决了你的启动问题,请务必 记录这个bug在Red Hat's Bugzilla.
(感谢Alan Cox提供这些信息.)
- Q: 如何使用 XMMS 播放MP3?
A: 在讨论这个问题之前,请注意: 在包括美国之内一些国家里, 你不得不为了使用MP3 播放器和解码器 支付专利使用费. 尽管如此,对于家庭用户来说,使用MP3播放器不会涉及法律问题. (感谢Doug McClean帮我澄清这个问题!)
如上所述,你可以到rpm.livna.org 下载播放器和解码器.
- 一样要确认你用我的yum.conf.
- 打开一个终端.
- 登录为root:
su -
- 输入:
yum install xmms-mp3
- 一样要确认你用我的yum.conf.
- Q: 如何使用 Rhythmbox 播放 MP3?
A: 注意,可能我们会触犯法律,参考XMMS的问题.
如上所述,你可以到rpm.livna.org 下载播放器和解码器.
- 确认你使用我的yum.conf.
- 打开一个终端.
- 登录为root:
su -
- 输入:
yum install gstreamer-plugins-mp3
- 确认你使用我的yum.conf.
- Q:如何在 KDE MP3 播放器中播放MP3,例如 Noatun 或者 Juk?
A: 注意,可能我们会触犯法律,参考XMMS的问题.
如上所述,你可以到rpm.livna.org 下载播放器和解码器.
:
- 确认你使用我的yum.conf.
- 打开一个终端.
- 登录为root:
su -
- 输入
yum install kdemultimedia-extras
(感谢David Anderson 和 David Müller!)
- 确认你使用我的yum.conf.
- Q: 如何读取 NTFS格式分区 (Windows NT/2000/XP/2003) ?
- Q:我不喜欢新的文件浏览器 (nautilus),如何删除它?
A: 如果你想要它变回 Fedora Core 1的样子, 参考以下步骤:
- 双击 "计算机" 图标
- 到"编辑"菜单下选择"首选项".
- 选择"行为"选项卡.
- 勾选"总是在浏览器窗口中打开"
(感谢 Eugéne Roux!)
- 双击 "计算机" 图标
- Q: 如何编辑面板上的菜单?
A: 现在的GNOME还是没有提供容易的方法来编辑菜单.
如果你真得要改变这些,修改".desktop"文本文件,在/usr/share/applications/目录下. 如果你是root的话,可以用文件编辑器(例如gedit)来编辑它.你也可以用命令行工具 desktop-file-install 来建立自定义的.desktop文件. 如果想知道怎么编辑.desktop文件,你可以参考系统自带的/usr/share/applications下面的, 读读下面的材料(技术方面的): .desktop 规格.
KDE下面有一个工具叫做kmenuedit,可以用来编辑菜单.
- Q: 如何使用Wine ?
A: 到下面的站点下载 RPM包 到 NewRPMs Fedora 站点看看 最新的版本 (注意看到后面的发布日期). (感谢che.)
如果你不能使用PRM包, (例如CrossOver Office版Wine), 有两种选择:
- 示例::
每次使用 wine, 试试不要输入wine 程序名 改成输入:
setarch i386 wine 程序名
(感谢"ric".)
- 更复杂点 (性能更好):
你可以关掉安全的方面的一个功能 "exec-shield." 这个可以解决wine和fedora的很多冲突:
- 登录为 root:
su -
- 运行 prelink:
prelink -ua
- 编辑 /etc/sysconfig/prelink. 作以下更改:
PRELINK_OPTS=-mR
改成:
PRELINK_OPTS="-m --no-exec-shield"
- 然后运行如下命令来关掉 exec-shield:
prelink -am --no-exec-shield
注意: Exec-shield 可以减少可怕的"buffer overflow". 很多病毒和骇客攻击采用这个方法.然而,如果你始终保持你的系统更新的话, 你即使关掉exec-shield也没有更大的风险.
注意:你也可以编辑 /etc/prelink.conf跳过关于wine的所有行 ,但是,我不知道更具体的该怎么做. (如果你成功了, 给我email!)
- 登录为 root:
- Q: How do I get Wine to work(New)? (Updated 13 Dec 2004)
A: Wine should work out-of-the-box on Fedora Core 3. If it doesn't, try the Fedora Core 2 Wine instructions.
(感谢Carlos Vidal和Jeremy White提供通用的Wine un-prelink的方法.感谢Guy Fraser 提供PRELINK_OPTS的方法. )
- 示例::
- Q:我不能再进入Windows 网络的共享文件夹 !有人告诉我用 smbmount这个命令,但是还是不行!
A: Fedora Core 3提供了更新更酷的方法来共享windows 下的文件,就是 "The Common Internet File System" (CIFS). 来取代 "smbmount",试试看:
mount -t cifs //计算机名/share /mnt/目录名
获得更多信息,打开一个 终端 输入:
man mount.cifs
- Q: d00d, u r t3h sukc
A: 噢, 请把你的句子整理得像一个问题,呵呵.
与此同时: party on. And goats.(这句什么意思,不懂)
本FAQ 由Max Kanat-Alexander 负责维护. Email: max -at- fedorafaq -dot- org 或者 Avatraxiom 在FreeNode IRC#fedora频道. Sindre "foolish" Pedersen Bjørdal 是他的副手 (foolish -at- fedorafaq -dot- org).
你可以帮我们维护这个FAQ的更新! 如果你发现我们没有讲到的问题,或者我们的回答不对,不够好,请告诉我们,我们会尽快改善.
apache2.2 PHP5.1.1 release
新的版本主要重写了认证、缓冲以及大文件支持等多个子系统的代码,看起来似乎不错,还在使用2.1版本的用户该是更新的时候了。
PHP5的升级主要是在安全上,毕竟XML_RPC的漏洞弄得人心惶惶。但是有一个“很要命”的升级可能会影响到很多利用PHP+静态模版转制成动态网站的用户(本站就是一个比较典型的例子):
取消了原先的"{" "}"的表达方式,变成了直接的 “{ ” 和 “}”。
用debian彻底封杀P2P
这里纠正一个错误,中间在接kernel的原代码的时候报错了,我当时没管,都后来才改了系统时间,我自己又重新解压了一次的,这里没说,现在补充一下
lcnja:/# uname -a
Linux lcnja 2.6.11-1-386 #1 Fri May 20 06:15:52 UTC 2005 i686 GNU/Linux
看一下,我现在已经是2.6.11-1的内核了,已经非常的新了,但是因为iptables的最新版需要给内核打补丁,所以我决定重新编译内核
因为我的系统是通过debian的网络安装上去的。n多的东西没装,现在我们来装一下
lcnja:/# apt-get install make automake gcc g++ kernel-source-2.6.11 kernel-package ncurses-dev fakeroot wget bzip2 make patch
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
make 已经是最新的! 版本了。
注意,我选了 automake1.4 而非 automake
automake1.4 已经是最新的版本了。
gcc 已经是最新的版本了。
g++ 已经是最新的版本了。
注意,我选了 libncurses5-dev 而非 ncurses-dev
bzip2 已经是最新的版本了。
make 已经是最新的版本了。
将会安装下列的额外的软件包:
dpkg dpkg-dev libncurses5 libncurses5-dev
建议安装的软件包:
gnupg debian-keyring libdb3-dev docbook-utils libqt3-mt-dev ed
下列【新】软件包将被安装:
dpkg-dev fakeroot kernel-package libncurses5-dev patch
下列的软件包将被升级:
dpkg kernel-source-2.6.11 libncurses5 wget
共升级了 4 个软件包,新安装了 5 个软件包,要卸载 0 个软件包,有 40 个软件未被升级。
需要下载 40.8MB 的软件包。
解压缩后会消耗掉 7700kB 的额外空间。
您希望继续执行吗?[Y/n]y
! 获取:1 http://mirrors.geekbone.org sid/main dpkg 1.13.9 [1781kB]
获取:2 http://mirrors.geekbone.org sid/main libncurses5 5.4-6 [289kB]
获取:3 http://mirrors.geekbone.org sid/main wget 1.10-1 [412kB]
获取:4 http://mirrors.geekbone.org sid/main patch 2.5.9-2 [96.4kB]
获取:5 http://mirrors.geekbone.org sid/main dpkg-dev 1.13.9 [163kB] &nb! sp;
获取:6 http://mirrors.geekbone.org sid/main fakeroot 1.3 [70.4kB]
获取:7 http://mirrors.geekbone.org sid/main kernel-package 9.001 [360kB]
获取:7 http://mirrors.geekbone.org sid/main kernel-package 9.001 [360kB]
获取:8 http://mirrors.geekbone.org sid/main kernel-source-2.6.11 2.6.11-6 [36.4MB]
获取:9 http://mirrors.geekbone.org si! d/main l ibncurses5-dev 5.4-6 [1247kB]
下载 40.8MB,耗时 2m34s (264kB/s)
tar: ./postinst:时间戳 2005-06-12 23:28:54 是将来的 153109 秒之后
tar: ./preinst:时间戳 2005-06-12 23:28:54 是将来的 153109 秒之后
tar: ./prerm:时间戳 2005-06-12 23:28:54 是将来的 153109 秒之后
tar: ./postrm:时间戳 2005-06-12 23:28:54 是将来的 153109 秒之后
tar: ./conffiles:时间戳 2005-06-12 23:28:54 是将来的 153109 秒之后
tar: ./md5sums:时间戳 2005-06-12 23:28:57 是将来的 153112 秒之后
tar: ./control:时间戳 2005-06-12 23:28:57 是将来的 153112 秒之后
tar: .:时间戳 2005-06-12 23:28:57 是将来的 153112 秒之后
(正在读取数据库 ... 系统当前总共安装有 19003 个文件和目录。)
正预备替换 dpkg 1.10.28 (使用 .../archives/dpkg_1.13! .9_i386.deb) ...
正在解压缩将用于更替的包文件 dpkg ...
正在设置 dpkg (1.13.9) ...
正在安装新版本的配置文件 /etc/dpkg/origins/debian ...
Removing /usr/info symlink ...
Adding `local diversion of /usr/bin/md5sum.textutils to /usr/bin/md5sum'
Adding `local diversion of /usr/share/man/man1/md5sum.textutils.1.gz to /usr/share/man/man1/md5sum.1.gz'
tar: ./shlibs:时间戳 2005-06-13 22:43:34 是将来的 236784 秒之后
tar: ./postinst:时间戳 2005-06-13 22:44:08 是将来的 236818 秒之后
tar: ./control:时间戳 2005-06-13 22:44:06 是将来的 236816 秒之后
tar: ./postrm:时间戳 2005-06-13 22:44:08 是将来的 236818 秒之后
tar: .:时间戳 2005-06-13 22:44:08 是将来的 236818 秒之后
(正在读取数据库 ... 系统当前总共安装有 19004 个文件和目录。)
正预备替换 libncurses5 5.4-4 (使用 .../libncurses5_5.4-6_i386.deb) ...
正在解压缩将用于更替的包文件 libncurses5 ...
正� �设置 libncurses5 (5.4-6) ...
(正在读取数据库 ... 系统当前总共安装有 19005 个文件和目录。)
正预备替换 wget 1.9.1-12 (使用 .../archives/wget_1.10-1_i386.deb) ...
正在解压缩将用于更替的包文件 wget ...
选中了曾被取消选择的软件包 patch。
正在解压缩 patch (从 .../patch_2.5.9-2_i386.deb) ...
tar: ./conffiles:时间戳 2005-06-12 23:29:01 是将来的 153107 秒之后
tar: ./md5sums:时间戳 2005-06-12 23:29:01 是将来的 153107 秒之后
tar: ./control:时间戳 2005-06-12 23:29:01 是将来的 153107 秒之后
tar: .:时间戳 2005-06-12 23:29:01 是将来的 153107 秒之后
选中了曾被取消选择的软件包 dpkg-dev。
正在解压缩 dpkg-dev (从 .../dpkg-dev_1.13.9_all.deb) ...
选中了曾被取消选择的软件包 fakeroot。
正在解压缩 fakeroot (从 .../archives/fakeroot_1.3_i386.deb) ...
tar: ./control:时�! ��戳 2005-06-13 14:38:02 是将来的 207647 秒之后
tar: .:时间戳 2005-06-13 14:38:02 是将来的 207647 秒之后
选中了曾被取消选择的软件包 kernel-package。
正在解压缩 kernel-package (从 .../kernel-package_9.001_all.deb) ...
tar: ./control:时间戳 2005-06-12 06:05:26 是将来的 90490 秒之后
tar: ./postinst:时间戳 2005-06-12 06:03:37 是将来的 90381 秒之后
tar: .:时间戳 2005-06-12 06:05:26 是将来的 90490 秒之后
正预备替换 kernel-source-2.6.11 2.6.11-5 (使用 .../kernel-source-2.6.11_2.6.11-6_all.deb) ...
正在解压缩将用于更替的包文件 kernel-source-2.6.11 ...
tar: ./preinst:时间戳 2005-06-13 22:44:08 是将来的 236806 秒之后
tar: ./control:时间戳 2005-06-13 22:44:06 是将来的 236804 秒之后
tar: .:时间戳 2005-06-13 22:44:08 是将来的 236806 秒之后
选中了曾被取消选择的软件包 libncurses5-dev。!
正在解压缩 libncurses5-dev (从 .../libncurses5-dev! _5.4-6_i 386.deb) ...
正在设置 wget (1.10-1) ...
正在安装新版本的配置文件 /etc/wgetrc ...
正在设置 patch (2.5.9-2) ...
正在设置 dpkg-dev (1.13.9) ...
正在设置 fakeroot (1.3) ...
正在设置 kernel-package (9.001) ...
正在设置 kernel-source-2.6.11 (2.6.11-6) ...
正在设置 libncurses5-dev (5.4-6) ...
lcnja:/#
lcnja:/# cd /usr/src/
lcnja:/usr/src# ls
kernel-source-2.6.11.tar.bz2
lcnja:/usr/src# tar xvjf kernel-source-2.6.11.tar.bz2
因为这里太长,所以就不cp过来了,我们继续
创建一个link
lcnja:/usr/src# ls
kernel-source-2.6.11 kernel-source-2.6.11.tar.bz2
lcnja:/usr/src# ln -s ./kernel-source-2.6.11 ./linux
lcnja:/usr/src# ls -l
总用量 35492
drwxr-xr-x 18 root root 4096 2005-06-12 06:03 kernel-source-2.6.11
-rw-r--r-- 1 root root 36295899 2005-06-12 06:05 kernel-source-2.6.11.tar.bz2
lrwxrwxrwx 1 root src 22 2005-06-11 05:01 linux -> ./kernel-source-2.6.11
lcnja:/usr/src#
下面我们来给内核和iptables打补丁
打开http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/我们找到最新的快照
http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20050614.tar.bz2
我们下载它
lcnja:/usr/src/linux# cd /root/
lcnja:~# wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-! o-matic-ng-20050614.tar.bz2
--0! 5:05:33- - http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20050614.tar.bz2
=> `patch-o-matic-ng-20050614.tar.bz2'
正在解析主机 ftp.netfilter.org... 213.95.27.115, 2001:780:0:1d:20d:93ff:fe9b:e443
Connecting to ftp.netfilter.org|213.95.27.115|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:474,196 (463K) [application/x-tar]
100%[====================================>] 474,196 137.78K/s ETA 00:00
05:05:47 (137.60 KB/s) - `patch-o-matic-ng-20050614.tar.bz2' saved [474196/474196]
lcnja:~#
然后我们打开
http://www.netfilter.org/! downloads.html
找到最新的iptables
然后我们下载它
lcnja:~# wget http://www.netfilter.org/files/iptables-1.3.1.tar.bz2
--05:07:10-- http://www.netfilter.org/files/iptables-1.3.1.tar.bz2
=> `iptables-1.3.1.tar.bz2'
正在解析主机 www.netfilter.org... 213.95.27.115, 2001:780:0:1d:20d:93ff:fe9b:e443
Connecting to www.netfilter.org|213.95.27.115|:80... 已连接! 。
已发出 HTTP 请求,正在等待回应... 200 OK长 度:180,670 (176K) [application/x-tar]
100%[====================================>] 180,670 87.82K/s
05:07:13 (87.66 KB/s) - `iptables-1.3.1.tar.bz2' saved [180670/180670]
lcnja:~#
然后我们把那个patch的包打开
lcnja:~# tar xvjf patch-o-matic-ng-20050614.tar.bz2
:55:29 是将来的 348470 秒之后
tar: patch-o-matic-ng-20050614/addrtype/linux-2.6/net:时间戳 2005-06-15 05:55:29 是将来的 348470 秒之后
tar: patch-o-matic-ng-20050614/addrtype/linux-2.6:时间戳 2005-06-15 05:55:29 是将来的 348470 秒之后
patch-o-matic-ng-20050614/addrtype/info
tar: patch-o-matic-ng-20050614/addrtype:时间戳 2005-06-15 05:55:29 是将来的 348470 秒之后
tar: patch-o-matic-ng-20050614:时间戳 2005-06-15 05:55:28 是将来的 348469 秒之后
看到了吧
上面开始报错了,因为时间不对
我们来设置一�! ��时间
lcnja:~# date 061605422005
四 6月 16 05:42:00 CST 2005
现在时间设置对了
我们再解压缩一次
lcnja:~# tar xvjf patch-o-matic-ng-20050614.tar.bz2
下面非常正常的解压了,我们继续
下面我们来解压缩 iptables-1.3.1.tar.bz2
lcnja:~# tar xvjf iptables-1.3.1.tar.bz2
然后我们来给iptables打补丁
lcnja:/usr/src/linux# cd /usr/src/linux ; make mrproper
lcnja:/usr/src/linux# make mrproper
CLEAN scripts/basic
CLEAN scripts/kconfig
CLEAN scripts/lxdialog
CLEAN .config .config.old include/linux/autoconf.h
lcnja:/usr/src/linux# make menuconfig
什么都不动,直接选择exit退出,只是记得保存一下,否则将来你就会出错的哦
然后输入
lcnja:~/patch-o-matic-ng-20050614# KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/root/iptables-1.3.1 ./runme ipp2p
lcnja:~/patch-o-matic-ng-20050! 614# KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/root/iptables-1.3! .1 ./run me time
lcnja:~/patch-o-matic-ng-20050614# KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/root/
iptables-1.3.1 ./runme iprange
lcnja:~/patch-o-matic-ng-20050614# KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/root/
iptables-1.3.1 ./runme string
lcnja:~/patch-o-matic-ng-20050614# KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/root/
iptables-1.3.1 ./runme time
然后我们到内核设定的
Device Drivers --->
Networking support --->
Networking options --->
Network packet filtering (replaces ipchains) --->
IP: Netfilter Configuration --->
我 们把最下面的这4个都选上,用上下箭头移动上这个<>里面,然后敲空格选择,都选择为M,M表示模块,是动态加载到内核里面的,*表示装载到 内核里面,静态的,速度快,但是内核不可以! 太大,所以不是必须的东西可以考虑做成模块,动态加载,不要的时候内核自动卸载模块
< > TTL target support
< > quota match support
< > TIME match support
< > IPP2P match support
改了就是下面的
<M> TTL target support
<M> quota match support
<M> TIME match supp! ort &n! bsp; &nb sp;
<M> IPP2P match support
一路exit退出,到最后的时候选择保存
在 这之前,其实我已经把我的内核修改过了,很多的垃圾东西都移除了,比如什么对FDDI,什么对苹果的网络协议,ATM,PPP的东西,因为我不用,大家不 要随便动,然后是做服务器的,声音有关的都不要,如果你不用scsi的东西,scsi的全干掉,除非你可以看懂里面的选择是干什么的,反正是我知道自己不 用的全部干掉了,包括什么ipv6,用都不用的他还默认加载到内核里,都干掉,但是不懂的不要随便修改文件系统配置,否则系统有启动不了的危险
把里面些没用的专用的厂家硬件的支持全部干掉,除非你是品牌服务器
然后还是一路退出然后保存,然�! �下面我们就开始来编译内核了,下面是debian官方的方法,比较好,也比较方便,不像rh那样遍个上10遍都不成功,但是也没gentoo的编译那样简单
lcnja:/usr/src/linux# make-kpkg clean
lcnja:/usr/src/linux# fakeroot make-kpkg --initrd --append-to-version=lcnja --revision=1.0 kernel_image
下面你可以去逛街泡MM,打牌下棋随便你去干什么,因为这个地方要等很长时间的
如果你的服务器或者用来做nat的机器很差的话,我建议你到一个好的机器上面编译了再cp过来安装,否则够你受的
然后我们在/usr/src目录会看到一个以kernel-image开始头的deb包,我们dpkg -i kernel-image.....然后回车就开始安装最新的内核了
然后我们重新启动,cd 到iptables下面去,make ;make install
然后我们depmod -a
然后就iptables -V看一下版本,你是不的1.3.1的啊,呵呵
lcnja:! ~# iptables -V
iptables v1.3.1
lcnja:~#
然后! 你一� �命令就可以封bt了
iptables -A FORWARD -m ipp2p --bit -j DROP
然后查看一下
iptables -nL
lcnja:~# iptables -A FORWARD -m ipp2p --bit -j DROP
lcnja:~# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 ipp2p v0.7.2 --bit
这个就是刚才加进去的东西
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
lcnja:~#
lcnja:~# iptables -A OUTPUT -m time --timestart 8:00 --timestop 18:00 -j ACCEPT
lcnja:~# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt sour! ce destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0 ipp2p v0.7.2 --bit
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 TIME from 8:0 to 18:0 on all days
lcnja:~#
早上8点到晚上18点可以上网,其他时间不可以
用PHP生成Google sitemap
链接地址 :https://www.google.com/webmasters/sitemaps/siteoverview?hl=zh_CN
该class的原作者为一个保加利亚人,我做了部分的修改,以便其能够支持使用gz压缩文件,节省传输速度。
安装Solaris10失败
机器配置:AMD3000+ nforce400 + ATI 9700 pro + 2 wdSATA200GRAID 0
软件版本:Solaris 10 For X86
开始安装的时候一切正常,正常的拷贝,正常的设置主机名、密码等等。使我有了想要反驳这个理论的想法,安装结束后重新启动发现Boot manger也配置正常了,启动Solaris似乎也正常,然而就当load kernel结束时,满屏幕的warning !大意是找不到磁盘之类的报错。换成RAID1还是不行,拆掉Raid0单硬盘重装问题仍旧,没有ATA的磁盘,没有测试。
难怪Sun自己的AMD64服务器从来不用nforce芯片组的板子。
最后强烈要求Nvidia开放自己的驱动程序源代码!
用PHP创建goolge adsense代码
简单用法:
$ads = new Google_adsense ;
$ads->Formats = '728x90'; //设置大小
$ads->AddClient ("你的帐户ID1");//如果使用频道,采用ID : channel的方式
$ads->AddClient ("你的帐户ID2");
...
/*你也可以使用数组如
$ads->AddClient( "你的帐户ID1" , "你的帐户ID2" ) ;
*/
$ads->SetTheme("广告主题名称");
$ads->Display(); //显示
LVS简介
高可用性High-Availability (HA) 不允许有服务中断的情形发生时。由两台以上的计算机通过一定方式互相监听,当主要服务器主机出现问题而无预警的停止服务时,备份服务器能够自动立即接替工作,使客户端感觉不出有异。
可扩充性 (Scalability) 应用在web 、ftp server上为多。当用户连结一个地址,但实际上是有若干台服务器在提供服务。而当服务请求达到饱和时,还可以很容易地再添加新的节点而不用停掉整个 cluster,实现所谓的"热插拔",这也就是Cluster中的一个概念-Scalability (易扩展性)。而且,cluster还会查询真实节点的情况,当某台真实节点没有响应时,就不再把任务分配! 到那里,直到这台节点恢复正常。
科学的数学运算 (Scientific) 用于效能、图像处理等计算
Cluster已经发展多年,也比较成熟了。之前需要专业的软/硬设备才能实现。所以只有少数公司才有能力用的起。现在Linux上的LVS就可以让你在PC上架设Cluster的解决方案,使更多的人有机会构建自己的cluster。
LVS提供了三种转发机制(Traffic Forward Mechanism)、四种分配方法(Load-balancing Methods),以下详述
三转发机制(Traffic Forward Mechanism)
三种不同的转发机制分别将LVS主机建构成
NAT虚拟主机 Virtual Server via Network Address Translation
IP Tunneling虚拟主机 Virtual Server via IP Tunneling
Direct Routing虚拟主机 Virtual Server via Direct Routing
负载平衡主机可称为Virtual Server ( 虚拟主机 )、Load Balancer (负载平衡器)、Linux Director (导引主! 机),以下简称为LVS主机
NAT虚拟主机 Virtual Server via Network Address Translation ( VS/NAT )
由于IPv4中IP地址空间的日益不足和安全方面的原因,很多网络使用Internet上未被分配的私有IP地址 (10.0.0.0/255.0.0.0、 172.16.0.0/255.128.0.0 和192.168.0.0/255.255.0.0)。当内部网络中的主机要连结Internet或被Internet连结时,就需要采用网络地址转换 (Network Address Translation, 以下简称NAT),可以用NAT方法将不同IP地址的并行网络服务变成在一个IP 地址上的一个虚拟服务。
VS/NAT的体系结构
在一组服务器前有一个LVS主机,用户通过Virtual IP Address(即LVS主机的外部地址)连结服务时,请求到达LVS主机,LVS主机以负载平衡方法从一组真实服务器选出一个,将目标地址 Virtual IP Address重新指向内部实际提供服务服务器的地址。同时,LVS主机记录这个连接,当这个�! �接的真实服务器的响应经过LVS主机时,LVS主机将来源 地址和来源端口改?Virtual IP Address和相应的埠,再把响应发给用户。当连接终止或逾时,LVS主机将这个连接从纪录中删除。这样,用户所看到的只是在Virtual IP Address 上提供的服务。
IP Tunneling 虚拟主机 Virtual Server via IP Tunneling (VS/TUN)
在VS/NAT 的集群系统中,请求和应答的封包都需要通过LVS主机,当实际服务器的数量超过20时,LVS主机将成为集群系统的新瓶颈。利用IP隧道技术将请求封包封 装转发给后端服务器,响应封包能从后端服务器直接返回给客户。但在这里,后端服务器有一组而非一个,所以我们不可能静态地建立一一对应的隧道,而是动态地 选择一台服务器,将请求封包封装和转发给选出的服务器。这样,我们可以利用IP�! �道的原理将一组服务器上的网络服务组成在一�! ��IP地� ��上的虚拟网络服务。
VS/TUN的体系结构
各个服务器将 VIP地址配置在自己的IP隧道设备上。
VS/TUN 的连接分配和管理与VS/NAT中的一样,只是它的封包转发方法不同。负载平衡主机根据各个服务器的负载情况,动态地选择一台服务器,将请求封包封装在另 一个IP封包中,再将封装后的IP封包转发给选出的服务器;那台服务器收到封包后,先将封包解封获得原来目标地址为VIP的封包,服务器发现VIP地址被 配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应封包直接返回给客户。
Direct Routing 虚拟主机 Virtual Server via Direct Routing (VS/DR)
这种IP层负载平衡方法与IBM的NetDispatcher中的方法类似。
VS/DR的体系结构
LVS 主机和服务器组都必须在同一网络区域中,如通过交换机或者高速的HUB相连。VIP地址为LVS主机和服务器组共享,LVS主机配置的VIP地址是对外可 连结的,用于接收虚拟服务的请求封包;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址? VIP的网络请求。
VS/DR的连接分配和管理与VS/NAT和VS/TUN中的一样,它的封包转发方法又有不同,将封包直接路由给目标服务器。在VS/DR中,LVS主机 根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP封包,而是将资料封包的MAC地址改为选出服务器的MAC地址,再将修改后的资料封 包在与服务器组的局域网上发送;因为资料封包的MAC地址是选出的服务器,所以服务器肯定可以收到该封包,发现VIP 地址被配置在本地的网络设备上,所! 以就处理这个请求,然后根据路由表将响应封�! �直接� ��回给客户。
三种转发机制的优缺点
● Virtual Server via NAT
VS/NAT 的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在LVS主机上,服务器组可以用私有的IP地址。缺点是它的扩充能力有 限,当服务器结点数目升到20时,LVS主机本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应封包都需要通过负载LVS主机。在 Pentium 166主机上测得重写封包的平均延时为60us,假设TCP封包的平均长度为536 Bytes,则LVS主机的最大吞吐量为8.93 MBytes/s。再假设每台服务器的吞吐量为600KBytes/s,这样一个LVS主机可以带动16台服务器。
● Virtual Server via IP Tunneling
在VS/TUN 的集群系统中,负载LVS主机只将请求分配到不同的实际服务器,实际服务器将应答的资料直接返回给用户。这样,负载LVS主机! 就可以处理巨量的请求,而不 会成为系统的瓶颈。即使负载LVS主机只有100Mbps的全双工网卡,虚拟服务器的最大吞吐量可以达到几Gbps。所以,VS/TUN可以极大地增加负 载LVS主机分配的服务器数量,它可以用来构建高性能超级服务器。VS/TUN技术对服务器的要求是所有的服务器必须支持"IP Tunneling"或者"IP Encapsulation"协议。目前,VS/TUN 的后端服务器主要运行Linux操作系统。因为"IP Tunneling"正成为各个操作系统的标准协议,所以VS/TUN也会适用运行其它操作系统的后端服务器。
● Virtual Server via Direct Routing
同VS/TUN 一样,VS/DRLVS主机只处理客户到服务器端的连接,响应资料可以直接从独立的网络路由返回给客户。这可以极大地提高LVS集群系统的伸缩性。同 VS/TUN相比,这种方法没有IP隧道的开销,但是要求负载LVS主! 机与实际服务器都有一块网卡连在同一物理网�! �上,� ��务器网络设备或者设备别名不作 ARP 响应。
四种分配方法(Load-balancing Methods)
不同的分配方法建构LVS主机成四种不同的排程
负载平衡排程是以连接为单位的。在HTTP协议(nowait)中,每个对象从WEB服务器上获取都需要建立一个TCP连接,同一用户的不同请求会被分配到不同的服务器上,所以这种连接的分配完全避免了用户连结的突发性引起的负载不平衡。目前有以下4种排程算法:
轮流排程 Round-Robin Scheduling (RRS)
轮流排程算法是假设所有服务器处理性能均相同,依次将请求分配不同的服务器,算法简单,但不适用于服务器组中处理性能不一致的情况。
加权轮流排程 Weighted Round-Robin Scheduling (WRRS)
为此使用加权轮流排程算法,用相应的加权值表示服务器的处理性能,将请求数目�! ��加权值的比例分配到各服务器。加权值高的服务器先收到连接,加权值高的服务器比加权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。
最小连结数排程 Least-Connection Scheduling (LCS)
最小连结数排程是需要记录各个服务器已建立TCP连接的数目,把新的连接请求发送当前连接数最小的服务器。当各个服务器有相同的处理性能时,最小连结数排程能把负载变化大的请求平均分布到各个服务器上,所有处理时间比较长的请求不可能被发送到同一台服务器上。
加权最小连接数排程 Weighted Least-Connection Scheduling (WLCS)
但是,当各个服务器的处理能力不同时,该算法并不理想,因为TCP连接处理请求后会进入TIME_WAIT状态,TCP的TIME_WAIT 一般为2分钟,此时连接还占用服务器的资源,所以会出现�! ��样情形,性能高的服务器已处理所收到的连接! ,连� �处于TIME_WAIT状态,而性能低的服务器 既要忙于处理所收到的连接,还要收到新的连接请求。加权最小连接分配是最小连接分配的超集,各个服务器用相应的权值表示其处理性能。假设每台服务器的权值 为Wi(i=1..n),TCP连接数目为 Ti(i=1..n),依次选Ti/Wi为最小者的服务器为下一个分配到服务的服务器。
四种分配方法(Load-balancing Methods)
表示如下
名称 描述
Round robin (RRS)
将工作平均的分配到服务器 (用于实际服务主机性能一致)
Least-connections (LCS)
向较少连接的服务器分配较多的工作(IPVS 表存储了所有的活动的连接。用于实际服务主机性能一致。)
Weighted round robin (WRRS)
向较大容量的服务器分配较多的工作。可以根据负载信息动态的向上或向下调整。 (用于实际服务主机性能不一�! ��时)
Weighted least-connections (WLC)
考虑它们的容量向较少连接的服务器分配较多的工作。容量通过用户指定的砝码来说明,可以根据装载信息动态的向上或向下调整。(用于实际服务主机性能不一致时)
如何利用嗅探器TcpDump分析网络安全
一、嗅探器技术在网络中的应用
1、Sniffer简介
Sniffer即嗅探器的英文写法,嗅探器(sniffer)是最常见,也是最重要的技术之一。用过windows平台上的sniffer工具(例如,netxray和sniffer pro软件)的朋友可能都知道,在共享式的局域网中,采用sniffer工具简直可以对网络中的所有流量一览无余!Sniffer工具实际上就是一个网络上的抓包工具,同时还可以对抓到的包进行分析。由于在共享式的网络中,信息包是会广播到网络中所有主机的网络接口,只不过在没有使用sniffer工具之前,主机的网络设备会判断该信息包是否应该接收,这样它就会抛弃不应该接收的信息包,sniffer工具却使主机的网络设备接收所有到达的信息包,这样就达到了网络监听的效果。其实,sniffer工具既可以适合于黑客的使用,也同样有利于网络管理员和网络程序员。对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际! 情况,在网络性能急剧下降的时候,可以通过sniffer工具来分析原因,找出造成网络阻塞的来源。对于网络程序员来说,通过sniffer工具来调试程序。
它也可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生的众多的信息。简单一点解释:一部电话的窃听装置,可以用来窃听双方通话的内容,而计算机网络嗅探器则可以窃听计算机程序在网络上发送和接收到的数据。可是,计算机直接所传送的数据,事实上是大量的二进制数据。因此,一个网络窃听程序必须也使用特定的网络协议来分解嗅探到的数据,嗅探器也就必须能够识别出那个协议对应于这个数据片断,只有这样才能够进行正确的解码。计算机的嗅探器比起电话窃听器,有他独特的优势:很多的计算机网络采用的是"共享媒体"。就是说,你不必中断他的通讯,并且配置特别的线路,再安装嗅探器,你几乎可以在任何连接着的网络上直接窃听到你同一掩码范围内的计算机网络数据。我们称这�! ��窃听方式为"基于混杂模式的嗅探"(promiscuousmode)。尽管如此,这种"共享"的技术发展的很快,慢慢转向"交换"技术,这种技术会长期内会继续使用下去, 它可以实现有目的选择的收发数据。
2、Sniffer在工作原理
以太网的数据传输是基于"共享"原理的:所有的同一本地网范围内的计算机共同接收到相同的数据包。这意味着计算机直接的通讯都是透明可见的。正是因为这样的原因,以太网卡都构造了硬件的"过滤器"这个过滤器将忽略掉一切和自己无关的网络信息。事实上是忽略掉了与自身MAC地址不符合的信息。嗅探程序正是利用了这个特点,它主动的关闭了这个嗅探器,也就是前面提到的设置网卡"混杂模式"。因此,嗅探程序就能够接收到整个以太网内的网络数据了信息了。
二、网络数据采集分析工具TcpDump的应用
1、网络数据采集分析工具TcpDump的简介
顾名思义,TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump就是一种免费的网络分析工具,尤其其提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。我们用尽量简单的话来定义tcpdump,就是:dump the traffice on a network.,根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联! 网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的东西之一。tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。
2、网络数据采集分析工具TcpDump的安装
在linux下tcpdump的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。
rpm包的形式安装:这种形式的安装是最简单的安装方法,rpm包是将软件编译后打包成二进制的格式,通过rpm命令可以直接安装,不需要修改任何东西。以超级用户登录,使用命令如下:
#rpm -ivh tcpdump-3_4a5.rpm
这样tcpdump就顺利地安装到你的linux系统中。怎么样,很简单吧。
源程序的安装:既然rpm包的安装很简单,为什么还要采用比较复杂的源程序安装呢?其实,linux一个最大的诱人之处就是在她上面有很多软件是提供源程序的,人们可以修改源程序来满足自己的特殊的需要。所以我特别建议朋友们都采取这种源程序的安装方法。
第一步.取得源程序 在源程序的安装方式中,我们首先要取得tcpdump的源程序分发包,这种分发包有两种形式,一种是tar压缩包(tcpdump-3_4a5.tar.Z),另一种是rpm的分发包(tcpdump-3_4a5.src.rpm)。这两种形式的内容都是一样的,不同的仅仅是压缩的方式.tar的压缩包可以使用如下命令解开:
#tar xvfz tcpdump-3_4a5.tar.Z
rpm的包可以使用如下命令安装:
#rpm -ivh tcpdump-3_4a5.src.rpm
这样就把tcpdump的源代码解压到/usr/src/redhat/SOURCES目录下.
第二步.做好编译源程序前的准备活动
在编译源程序之前,最好已经确定库文件libpcap已经安装完毕,这个库文件是tcpdump软件所需的库文件。同样,你同时还要有一个标准的c语言编译器。在linux下标准的c 语言编译器一般是gcc。 在tcpdump的源程序目录中。有一个文件是Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文件。在Makefile.in文件中,可以根据系统的配置来修改BINDEST 和 MANDEST 这两个宏定义,缺省值是
BINDEST = @sbindir@
MANDEST = @mandir@
第一个宏值表明安装tcpdump的二进制文件的路径名,第二个表明tcpdump的man 帮助页的路径名,你可以修改它们来满足系统的需求。
第三步.编译源程序
使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。并且根据Makefile.in文件自动生成Makefile文件,以便编译使用.make 命令则根据Makefile文件中的规则编译tcpdump的源程序。使用make install命令安装编译好的tcpdump的二进制文件。
总结一下就是:
# tar xvfz tcpdump-3_4a5.tar.Z
# vi Makefile.in
# . /configure
# make
# make install
3、网络数据采集分析工具TcpDump的使用
普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。
# tcpdump
tcpdump: listening on fxp0
11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50
11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43
0000 0000 0080 0000 1007 cf08 0900 0000
0e80 0000 902b 4695 0980 8701 0014 0002
000f 0000 902b 4695 0008 00
11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97
ffff 0060 0004 ffff ffff ffff ffff ffff
0452 ffff ffff 0000 e85b 6d85 4008 0002
0640 4d41 5354 4552 5f57 4542 0000 0000
0000 00
^C
tcpdump支持相当多的不同参数,如使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,使用-c参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存,等等。
然而更复杂的tcpdump参数是用于过滤目的,这是因为网络中流量很大,如果不加分辨将所有的数据包都截留下来,数据量太大,反而不容易发现需要的数据包。使用这些参数定义的过滤规则可以截留特定的数据包,以缩小目标,才能更好的分析网络中存在的问题。tcpdump使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,充分利用这些过滤规则就能达到迅速定位故障的目的。请使用man tcpdump查看这些过滤规则的具体用法。
显然为了安全起见,不用作网络管理用途的计算机上不应该运行这一类的网络分析软件,为了屏蔽它们,可以屏蔽内核中的bpfilter伪设备。一般情况下网络硬件和TCP/IP堆栈不支持接收或发送与本计算机无关的数据包,为了接收这些数据包,就必须使用网卡的混杂模式,并绕过标准的TCP/IP堆栈才行。在FreeBSD下,这就需要内核支持伪设备bpfilter。因此,在内核中取消bpfilter支持,就能屏蔽tcpdump之类的网络分析工具。
并且当网卡被设置为混杂模式时,系统会在控制台和日志文件中留下记录,提醒管理员留意这台系统是否被用作攻击同网络的其他计算机的跳板。
May 15 16:27:20 host1 /kernel: fxp0: promiscuous mode enabled
虽然网络分析工具能将网络中传送的数据记录下来,但是网络中的数据流量相当大,如何对这些数据进行分析、分类统计、发现并报告错误却是更关键的问题。网络中的数据包属于不同的协议,而不同协议数据包的格式也不同。因此对捕获的数据进行解码,将包中的信息尽可能的展示出来,对于协议分析工具来讲更为重要。昂贵的商业分析工具的优势就在于它们能支持很多种类的应用层协议,而不仅仅只支持tcp、udp等低层协议。
从上面tcpdump的输出可以看出,tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump 截获数据并保存到文件中,然后再使用其他程序进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。FreeBSD提供的一个有效的解码程序为tcpshow,它可以通过Packages Collection来安装。
# pkg_add /cdrom/packages/security/tcpshow*
# tcpdump -c 3 -w tcpdump.out
tcpdump: listening on fxp0
# tcpshow < tcpdump.out
---------------------------------------------------------------------------
Packet 1
TIME:12:00:59.984829
LINK:00:10:7B:08:3A:56 -> 01:80:C2:00:00:00 type=0026
<*** No decode support for encapsulated protocol ***>
---------------------------------------------------------------------------
Packet 2
TIME:12:01:01.074513 (1.089684)
LINK:00:A0:C9:AB:3C:DF -> FF:FF:FF:FF:FF:FF type=ARP
ARP:htype=Ethernet ptype=IP hlen=6 plen=4 op=request
sender-MAC-addr=00:A0:C9:AB:3C:DF sender-IP-address=202.102.245.3
target-MAC-addr=00:00:00:00:00:00 target-IP-address=202.102.245.3
---------------------------------------------------------------------------
Packet 3
TIME:12:01:01.985023 (0.910510)
LINK:00:10:7B:08:3A:56 -> 01:80:C2:00:00:00 type=0026
<*** No decode support for encapsulated protocol ***>
tcpshow能以不同方式对数据包进行解码,并以不同的方式显示解码数据,使用者可以根据其手册来选择最合适的参数对截获的数据包进行分析。从上面的例子中可以看出,tcpshow支持的协议也并不丰富,对于它不支持的协议就无法进行解码。
除了tcpdump之外,FreeBSD的Packages Collecion中还提供了Ethereal和Sniffit两个网络分析工具,以及其他一些基于网络分析方式的安全工具。其中Ethereal运行在X Window 下,具有不错的图形界面,Sniffit使用字符窗口形式,同样也易于操作。然而由于tcpdump对过滤规则的支持能力更强大,因此系统管理员仍然更喜欢使用它。对于有经验的网络管理员,使用这些网络分析工具不但能用来了解网络到底是如何运行的,故障出现在何处,还能进行有效的统计工作,如那种协议产生的通信量占主要地位,那个主机最繁忙,网络瓶颈位于何处等等问题。因此网络分析工具是用于网络管理的宝贵系统工具。为了防止数据被滥用的网络分析工具截获,关键还是要在网络的物理结构上解决。常用的方法是使用交换机或网桥将信任网络和不信任网络分隔开,可以防止外! 部网段窃听内部数据传输,但仍然不能解决内部网络与外部网络相互通信时的数据安全问题。如果没有足够的经费将网络上的共享集线器升级为以太网交换机,可以使用FreeBSD系统执行网桥任务。这需要使用option BRIDGE编译选项重新定制内核,此后使用bridge命令启动网桥功能。
tcpdump采用命令行方式,它的命令格式为:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
(1). tcpdump的选项介绍
-a 将网络地址和广播地址转变成名字;
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd 将匹配信息包的代码以c语言程序段的格式给出;
-ddd 将匹配信息包的代码以十进制的形式给出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;
-n 不把网络地址转换成名字;
-t 在输出的每一行不打印时间戳;
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
-c 在收到指定的包的数目后,tcpdump就会停止;
�! � -F 从指定的文件中读取表达式,忽略其它的表达式;
-i 指定监听的网络接口;
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-w 直接将包写入文件中,并不分析和打印出来;
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程 调用)和snmp(简单 网络管理协议;)
(2). tcpdump的表达式介绍
表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。在表达式中一般如下几种类型的关键字。
第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。
第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'││';这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
A想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
#tcpdump host 210.27.48.1
B想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中适用 括号时,一定要
#tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3 )
C如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
D如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
(3). tcpdump的输出结果介绍
下面我们介绍几种典型的tcpdump命令的输出信息
A,数据链路层头信息
使用命令
#tcpdump --e host ice
ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A
H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条命令的输出结果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telne
t 0:0(0) ack 22535 win 8760 (DF)
分析:21:50:12是显示的时间, 847509是ID号,eth0 <表示从网络接口eth0 接受该数据包,eth0 >表示从网络接口设备发送数据包, 8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包. 0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包,60 是数据包的长度, h219.33357 > ice.telnet 表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口. ack 22535 表明对序列号是222535的包进行响应. win 8760表明发送窗口的大小是8760.
B,ARP包的TCPDUMP输出信息
使用命令
#tcpdump arp
得到的输出结果是:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
分析: 22:32:42是时间戳, 802509是ID号, eth0 >表明从主机发出该数据包, arp表明是ARP请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。 0:90:27:58:af:1a是主机ICE的MAC地址。
C,TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:
src > dst: flags data-seqno ack window urgent options
src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项.
D,UDP包的输出信息
用TCPDUMP捕获的UDP包的一般输出信息是:
route.port1 > ice.port2: udp lenth
UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth
三、利用网络数据采集分析工具TcpDump分析网络安全
作为IP网络的系统管理员,经常会遇到一些网络连接方面的故障,在排查这些接故障时,除了凭借经验外,使用包分析软件往往会起到事半功倍的效果。
常用的包分析软件非常多,常见的如tcpdump,sniffer,windump,ettercap等。
1、网络数据采集分析工具TcpDump分析
(1)网络的数据过滤
不带任何参数的TcpDump将搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。所以,我们应当先想好需要哪些数据,TcpDump提供以下参数供我们选择数据:
-b在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。例如:
server#tcpdump -b arp
将只显示网络中的arp即地址转换协议信息。
-i选择过滤的网络接口,如果是作为路由器至少有两个网络接口,通过这个选项,就可以只过滤指定的接口上通过的数据。例如:
server#tcpdump -i eth0
只显示通过eth0接口上的所有报头。src、dst、port、host、net、ether、gateway这几个选项又分别包含src、dst、port、host、net、ehost等附加选项。他们用来分辨数据包的来源和去向,src host 192.168.0.1指定源主机IP地址是192.168.0.1,dst net 192.168.0.0/24指定目标是网络192.168.0.0。以此类推,host是与其指定主机相关无论它是源还是目的,net是与其指定网络相关的,ether后面跟的不是IP地址而是物理地址,而gateway则用于网关主机。可能有点复杂,看下面例子就知道了:
server#tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24
过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头。
server#tcpdump ether src 0! 0:50:04:BA:9B and dst......
过滤源主机物理地址为XXX的报头(为什么ether src后面没有host或者net?物理地址当然不可能有网络喽)。
server#Tcpdump src host 192.168.0.1 and dst port not telnet
过滤源主机192.168.0.1和目的端口不是telnet的报头。
ip icmp arp rarp和tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。例如:
server#tcpdump ip src......
只过滤数据-链路层上的IP报头。
server#tcpdump udp and src host 192.168.0.1
只过滤源主机192.168.0.1的所有udp报头。
(2)网络的数据显示/输入输出
TcpDump提供了足够的参数来让我们选择如何处理得到的数据,如下所示:
-l可以将数据重定向。
如tcpdump -l>tcpcap.txt将得到的数据存入tcpcap.txt文件中。
-n不进行IP地址到主机名的转换。
如果不使用这一项,当系统中存在某一主机的主机名时,TcpDump会把IP地址转换为主机名显示,就像这样:eth0<ntc9.1165>router.domain.net.telnet,使用-n后变成了:eth0<192.168.0.9.1165>192.168.0.1.telnet。
-nn不进行端口名称的转换。
上面这条信息使用-nn后就变成了:eth0<ntc9.1165>router.domain.net.23。
-N不打印出默认的域名。
还是这条信息-N后就是:eth0<ntc9.1165>router.telnet。
-O不进行匹配代码的优化。
-t不打印UNIX时间戳,也就是不显示时间。
-tt打印原始的、未格式化过的时间。
-v详细的输出,也就比普通的多了个TTL和服务类型。
2、网络数据采集分析工具TcpDump分析详细例子
(1)网络邮件服务器(mail)在排障
我们先来看看故障现象,在一局域网中新安装了后台为qmail的邮件服务器server,邮件服务器收发邮件等基本功能正常,但在使用中发现一个普遍的怪现象:pc机器上发邮件时连接邮件服务器后要等待很久的时间才能开始实际的发送工作。我们来看,从检测来看,网络连接没有问题,邮件服务器server和下面的pc性能都没有问题,问题可能出在哪里呢?为了进行准确的定位,我们在pc机client上发送邮件,同时在邮件服务器server上使用tcpdump对这个client的数据包进行捕获分析,如下:
server#tcpdump host client
tcpdump: listening on hme0
23:41:30.040578 client.1065 > server.smtp: S 1087965815:1087965815(0) win 64240 (DF)
23:41:30.040613 server.smtp > client.1065: S 99285900:99285900(0) ack 1087965816 win 10136 (DF)
23:41:30.040960 client.1065 > server.smtp: . ack 1 win 64240 (DF)
顺利的完成,到目前为止正常,我们再往下看:
23:41:30.048862 server.33152 > client.113: S 99370916:99370916(0) win 8760 (DF)
23:41:33.411006 server.33152 > client.113: S 99370916:99370916(0) win 8760 (DF)
23:41:40.161052 server.33152 > client.113: S 99370916:99370916(0) win 8760 (DF)
23:41:56.061130 server.33152 > client.113: R 99370917:99370917(0) win 8760 (DF)
23:41:56.070108 server.smtp > client.1065: P 1:109(108) ack 1 win 10136 (DF)
看出问题了,问题在:我们看到server端试图连接client的113identd端口,要求认证,然而没有收到client端的回应,server端重复尝试了3次,费时26秒后,才放弃认证请求,主动发送了reset标志的数据包,开始push后面的数据,而正是在这个过程中所花费的26秒时间,造成了发送邮件时漫长的等待情况。问题找到了,就可以修改了,我们通过修改服务器端的qmail配置,使它不再进行113端口的认证,再次抓包,看到邮件server不再进行113端口的认证尝试,而是在三次检测后直接push数据,问题得到完美的解决。
(2)网络安全中的ARP协议的故障
先看故障现象,局域网中的一台采用solaris操作系统的服务器A-SERVER网络连接不正常,从任意主机上都无法ping通该服务器。排查:首先检查系统,系统本身工作正常,无特殊进程运行,cpu,内存利用率正常,无挂接任何形式的防火墙,网线正常。此时我们借助tcpdump来进行故障定位,首先我们将从B-CLIENT主机上执行ping命令,发送icmp数据包给A-SERVER,如下:
[root@redhat log]# ping A-SERVER
PING A-SERVER from B-CLIENT : 56(84) bytes of data.
此时在A-SERVER启动tcpdump,对来自主机B-CLIENT的数据包进行捕获。
A-SERVER# tcpdump host B-CLIENT
tcpdump: listening on hme0
16:32:32.611251 arp who-has A-SERVER tell B-CLIENT
16:32:33.611425 arp who-has A-SERVER tell B-CLIENT
16:32:34.611623 arp who-has A-SERVER tell B-CLIENT
我们看到,没有收到预料中的ICMP报文,反而捕获到了B-CLIENT发送的arp广播包,由于主机B-CLIENT无法利用arp得到服务器A-SERVER的地址,因此反复询问A-SERVER的MAC地址,由此看来,高层的出问题的可能性不大,很可能在链路层有些问题,先来查查主机A-SERVER的arp表:
A-SERVER# arp -a
Net to Media Table
Device IP Address Mask Flags Phys Addr
------ -------------------- --------------- ----- ---------------
hme0 netgate 255.255.255.255 00:90:6d:f2:24:00
hme0 A-SERVER 255.255.255.255 S 00:03:ba:08:b2:83
hme0 BASE-ADDRESS.MCAST.NET 240.0.0.0 SM 01:00:5e:00:00:00
请注意A-SERVER的Flags位置,我们看到了只有S标志。我们知道,solaris在arp实现中,arp的flags需要设置P标志,才能响应ARP requests。
手工增加p位
A-SERVER# arp -s A-SERVER 00:03:ba:08:b2:83 pub
此时再调用arp -a看看
A-SERVER# arp -a
Net to Media Table
Device IP Address Mask Flags Phys Addr
------ -------------------- --------------- ----- ---------------
hme0 netgate 255.255.255.255 00:90:6d:f2:24:00
hme0 A-SERVER 255.255.255.255 SP 00:03:ba:08:b2:83
hme0 BASE-ADDRESS.MCAST.NET 240.0.0.0 SM 01:00:5e:00:00:00
我们看到本机已经有了PS标志,此时再测试系统的网络连接恢复正常,问题得到解决。
(3)netflow软件的问题
先看故障现象,在新装的网管工作站上安装cisco netflow软件对路由设备流量等进行分析,路由器按照要求配置完毕,本地工作上软件安装正常,无报错信息,但是启动netflow collector却收不到任何路由器上发出的流量信息,导致该软件失效。 排查现象,反复检查路由和软件,配置无误。采用逐步分析的方法,首先先要定位出有问题的设备,是路由器根本没有发送流量信息还是本地系统接收出现了问题?突然想到在路由器上我们定义了接收的client端由udp端口9998接收数据,可以通过监视这个端口来看路由器是否确实发送了udp数据,如果系统能够接收到来自路由的数据包,那么路由方面的问题可能行不大,反之亦然。
在网管工作站上使用tcpdump来看看:
nms#tcpdump port 9995
tcpdump: listening on hme0
18:15:34.373435 routea > nms.9995: udp 1464
18:15:34.373829 routea.50111 > nms.9995: udp 1464
18:15:34.374100 routea.50111 > nms.9995: udp 1464
马上我们就看到数据包确实从路由器上发过来了,问题出在路由器的可能性基本排除,重新核查系统,果然,网管工作站上安装了防火墙,udp端口9998是被屏蔽的,调整工作站上的防火墙配置,netflow工作恢复正常,故障得以排除。
结尾
上面我们通过3个实际的例子演示了网络数据采集分析工具TcpDump分析软件在故障解决中起到的作用,通过这些例子,我们不难发现,用好包分析软件,对系统管理员快速准确定位网络故障,分析网络问题有不可替代的作用。任何事情都具有两面性,事实上能够获得网络上传输的数据的工具对于维护网络运行也非常重要,网络需要这些工具软件来帮助分析网络状态、解决各种网络故障,它们是网络工程师的好帮手。
在市场上销售的有好几种专用的网络分析设备,来实现截获数据并进行分析的目的。虽然这些硬件实现的设备虽然功能强大,但价格昂贵,而使用软件通过标准计算机的网络接口来实现这种功能,相对来讲对于一般使用者还是可以承受的。
