Cacti的使用

[不指定 2005/08/31 23:01 | by ipaddr ]
Cacti的介绍,请参考上一遍《基于RRDTOOL+CACTI性能监视系统的架构》

1. 监控远程Linux主机
a. 按如上方法开启远程主机的SNMPD服务
b. 在Cacti里,进行如下操作,步骤的过程:添加Devices->Graphs->Tree
i. Console->Management->Devices->add
Description:主机描述,可随便写
Hostname:主机IP地址
Host Template:主机模板,可以选UCD/Net snmp Host,也可以选None
SNMP Community:主机中的Community字段值,默认是public
SNMP Version:一般选Version1或Version2
ii. Console->Management->Devices 选中刚才添加的主机,进入编辑界面
Associated Graph Templates:加入
1) ucd/net - CPU Usage
2) ucd/net - Load Average
3) ucd/net - Memory Usage
如果是本机,可以加入以下模板:
1) Linux - Memory Usage
2) Unix - Ping Latency
3) Unix - Load Average
4) Unix - Logged in Users
5) Unix - Processes
Associated Data Queries:加入
1) SNMP - Interface Statistics  
iii. Console->Create ->New Graphs
在列表框中选中刚添加的主机,再选中所有Graph Templates和Data Query,再Create。
iiii. Console->Management->Graph Trees->Default Tree->Add
Parent Item:父节点,默认是根
Tree Item Type:节点类型,Host
Host:选择主机
Sorting Type:排序方式
[Create]
iiiii. Graphs->Default Tree->HostName量看监控结果
2. 监控本地机
默认Cacti自动安装了监控本地机的模板,也可以自己重建,可按上面的方式,在第一步的Host Template中,选Local Linux Host就可,或者直接用IP,不用本地方式。
3. 日志
日志设置:Console -> Settings -> General -> Poller Logging Level,一般选Low既可,可以选Medium查看SNMPWALK的输出,Debug调试。
日志查看:Console -> Utilities -> View Log File
日志清除:Console -> Utilities -> Clear Log File
4. 图表删除
直接在Devices里删除主机,将删除相关所有数据。
在Console -> Graph Management里的Graph Management可单独删除一个图表,在Data Sources可删除一个查询。
5. 树的管理
Console -> Graph Trees,可以很方便的管理多台主机,将多台主机组成一个树形结构,并且,可以为树指定用户权限.
6. 权限的管理
Console -> User Management,可以管理用户,并指定权限.


Windows下的SNMP服务的开启

[不指定 2005/08/31 23:00 | by ipaddr ]
. 安装:
默认Windows是没有安装SNMP服务的.Windows2000下,安装SNMP服务如下操作:
控制面板->添加删除程序->添加删除Windows组件->管理监视工具->SNMP协议
再放入Windows2000安装盘.
b. 给SNMP服务打补丁
这里说的补丁可不是微软的那些让人头疼的补丁,而是一个转为Windows2000的SNMP服务开发的增强工具,叫SNMP4W2K-STD,可以在http://www.wtcs.org/snmp4tpc/snmp4w2k.htm下载。
 下载完成后,安装。安装完毕,进入CMD,(注意:进入CMD之前要把CMD的纵缓冲区设置为大于500的数值,否则会因为纵缓冲区不足而引起错误)执行:
C:\Program Files\SNMP4W2K-STD\MIBINST.BAT
根据提示进行选择,不过通常只要一路y就可以完成,最后程序会自动重新启动Windows2000的SNMP服务。这样,就成功的给SNMP服务打上了补丁。
c. 安全配置
默认情况下,Windows2000的SNMP访问密码是public,并且,允许所有主机查询SNMP信息.通常我们只允许个别主机查询,可以如下操作:
在Windows2000的控制面板->管理工具->服务
找到SNMP服务,右击,选择属性->安全
在这里,可以设置团体名,以及只接收哪些主机的SNMP查询.
也可以使用IP安全策略来加强安全。
d. 其它
可以使用Snmputil工具来查询Windows2000的SNMP信息,另外,可以用MTRG,或Cacti+RRDTool来管理MIB.

九种不良习惯使大脑迟钝

[不指定 2005/08/28 22:34 | by ipaddr ]
日前,中国青少年研究中心历时一年的“中国城市少年儿童生活习惯研究”课题在北京发布了研究成果。通过对长春市、北京市、上海市、广州市、兰州市、成都市等6个城市中5000多名家长孩子的深入调查,客观反映了我国城市少年儿童的饮食、睡眠、玩耍、运动、媒介接触和卫生习惯现状,其中暴露出一些不良生活习惯令人吃惊。

  1.长期饱食进食过饱后,大脑中被称为“纤维芽细胞生长因子”的物质会明显增多。它能使毛细血管内皮细胞和脂肪增多,促使动脉粥样硬化,出现大脑早衰和智力减退等现象。

  2.轻视早餐不吃早餐会使人的血糖低于正常供给,久而久之对大脑有害。据有关资料显示,一般吃高蛋白早餐的儿童在课堂上的最佳思维普遍相对延长,而吃素的儿童情绪和精力下降相对较快。……>>>营养:儿童早餐有待改善

  3.甜食过量甜食降低食欲,减少对高蛋白和多种维生素的摄入,导致机能营养不良,影响大脑发育。

  4.睡眠不足大脑消除疲劳的主要方式是睡眠。长期睡眠不足或质量太差只会加速脑细胞的衰退,聪明人也会变得糊涂起来。……关注宝宝的睡眠问题

  5.长期吸烟长年吸烟使脑组织呈现不同程度萎缩,易患老年痴呆。因为长期吸烟可引起脑动脉硬化,导致大脑供血不足,神经细胞变性,继而发生脑萎缩。
 

  6.少言寡语大脑中有专司语言的叶区,经常说话也会促进大脑的发育,并能起到锻炼大脑的功能。平常应该多说一些内容丰富、有较强哲理性或逻辑性的话。蒙头睡觉人在蒙头睡觉时,随着被子里二氧化碳浓度升高,氧气浓度不断下降,长期吸进潮湿污浊的气体,对大脑危害极大。……优良环境塑造宝宝聪明大脑

  7.不愿动脑思考是锻炼大脑的最佳方法。多动脑筋,勤思考,人才能变得更聪明。……开发宝宝大脑的训练游戏

  8.带病用脑在身体不适或患病时,勉强坚持学习或工作不仅效率低下,而且还容易造成大脑损害。

  9.别以为“智能提升从零岁开始”、“3岁定终生”或是“6岁决定一生”只是宣传标语!NO!根据研究,人类在胚胎期,脑部神经就是最早发育的,即使呱呱落地之后,也处在迅速发育的阶段,以新生儿来说,大脑约重四百克,已经占了成人脑重量(约一千五百公克)的四分之一强;到了一岁脑重量约九百公克;到三岁时脑重量便已发育到60%强,到了六岁大约重1200公克,逐渐接近成人的脑重了。

  可见得0-3岁是人一生中脑部发展的重要黄金期,也深切影响着未来智力潜能的发展,如何把握这段黄金期,施予婴幼儿早期教育,促进脑细胞的增加分化与脑神经的突触紧密连结,是非常重要的。

  聪明宝宝需要脑力开发

  脑力刺激的实证

  曾有名为巴甫洛夫的专家做了一个实验,他把同时生下来且同样体重的小白鼠分成两组,一组放于较大、光线充足的空间,提供丰富的声响、有滚筒、滑梯等玩具,让小白鼠自由追逐玩耍;另一组小白鼠,则关于没有光线的笼子里,没有玩具、没有同伴,虽然提供同样的食物营养,不过经过19天的测试,智力的表现却是大相迳庭的。

  结果显示:前一组小白鼠机敏灵活,人抓不住它们。后一组小白鼠,则呆滞迟缓,即使人去抓它们,也不知逃跑。抽样解剖发现,前一组小白鼠因常接受丰富的信息刺激,它们的大脑生出了许多突触发展出紧密的连结;而后一组小白鼠则因少受刺激,脑组织竟呈现萎缩状态,脑重量及体积也相对变小。

  巴甫洛夫这个实验的结果,主要是用来映证早期教育的重要性,他认为在婴幼儿成长的过程中,一旦错过了生长发育期的发展,脑组织结构就会趋于定型,潜能发展也将受到限制,即使拥有优越的天赋,也无法获得良好的发展。


  什么是智力潜能?!

  到底“智力潜能”是什么呢?

  根据大陆方面的研究专家表示:智力潜能是人的一种心理品质;也是一个人许多能力的总和,包括:观察力、注意力、记忆力、想象力、思维力、创造力等。所以,即使孩子在某一方面拥有特殊能力和专长,例如,只会读书而缺乏生活应变的能力,这样都不等于拥有真正的智力。

  如果孩子没有一定的智力,就难以掌握较多的知识,就如,孩子如果缺乏注意力及观察力,就无法正确的认知;没有记忆力,就无法将吸收的知识保存下来转为己有;没有思维力,就无法对事物有深刻的体会、无法掌握事物的发展规律;如果缺乏想象力,自然就没办法创新。

  台北市立妇幼医院儿童心智科翁菁菁主治医师也表示,要提升宝宝高度的智力潜能,不能只给予大脑单一能力的刺激,而在于是否能提供大脑各功能区域全面且足够的刺激,如此,宝宝的智力潜能才有全面发展的机会。

  推荐阅读:早教:玩耍有助儿童智力开发  影响宝宝智力6大疾病杀手

  智能提升造就天才?

  看到这里,你是不是对宝宝脑力开发的实质意义有了进一步的认识?但同时是不是也产生一个疑惑──“智能提升是以造就孩子成为天才或是资优生为目的吗?”翁菁菁医师提出另一个思考的角度,她表示,开发大脑提升智力潜能最主要的用意,应该在于培养孩子拥有丰富自如的生活能力。……热点:激发智力,父母当好催化剂

  刺激不足易造成发展迟缓  


  我们也试想,若我们的孩子像小白老鼠一样错过时机,缺乏适当的脑力刺激,会造就出什么样的光景?专长儿童心智早期疗育的翁医师分享她治疗的经验。

  她说:“儿童心智发展迟缓,除了有些是先天的脑部功能缺陷造成的,还有一部份是属于后天形成的,原因在于从出生开始,孩子脑部的功能就没有获得足够的刺激与开发,以致脑发展延迟。我们探究结果,发现有些孩子从出生就托养给乡下的爷爷奶奶带,因为传统长辈的带养方式比较注意孩子的养育而缺少教育,孩子长期在缺乏丰富刺激与互动的环境下成长,造成只有生理的持续成长,而心智的成长却因而远远落后于正常的指标。”……儿童早期教育需要一点虐待

  早期疗育愈造愈好

  翁医师语重心长的表示,早期疗育的治疗目标,之所以针对0-6岁的孩子,也是把握孩子脑部发展阶段的黄金期,来施予补救的效力。最好是发现时年纪越小,脑细胞活动力较强的时机,补救治疗的效果越好。翁医师说,3岁前是一个关键期,到了早期疗育最晚的6岁,治疗的效果与速度会自然递减。

  评估孩子正常心智发展

  如果您家有0-3岁的宝宝,现在,您是不是急于想搜寻幼儿脑力刺激与开发的资讯?

  在此我们提供给您的是0-3岁幼儿心智发展的大略过程表,包括粗动作、精细动作、语言表达、语言理解、社会性及身边处理六大项目的评估,帮助您先掌握孩子现阶段心智发展的情况,才能在施行智力潜能提升时「因材施教」,达到最佳的效果。……因材施教,让孩子灵性永存

  当然,如果您发现孩子在六大项目的发展上有落后的现象,也请不要妄加推断,翁医师再三强调,就算发现孩子有几个月的发展差距,也未必是发展迟缓的现象,若要进一步确认,不妨带孩子到儿童心智科、复健科或是儿童精神科做检测,万一确认为发展迟缓,医院完整的医疗也才能提供实质的帮助。
WindowXP(2000)下Apache2+Tomcat+PHP4+Mysql的安装

#Ipaddr(bcomcn)原创笔记,转载请注明

一.安装Apache2
下载地址:http://www.apache.org
下载installer的安装版本,直接根据提示安装完成。
配置httpd.conf


二.安装PHP
下载地址:http://www.php.net
下载Windows的ZIP包,解压到c:\php
1.将c:\php加入到系统环境变量PATH
如果不加入环境变量,很多库需要拷到系统目录,我觉得还是加环境变量方便
2.将c:\php\php4ts.dll文件拷到c:\windows(2000是c:\winnt)
此步不可省略
3.修改php.ini-recommand为php.ini,修改php.ini,移动到c:\windows
注:如果php.ini不拷到c:\windows,则需要在httpd.conf里配置PHPInDir="C:\php"
doc_root = c:\website\htdocs
extension_dir = c:\php\extensions
session.save_path = c:\phptemp

4.修改httpd.conf
加入:
LoadModule php4_module "c:/php/sapi/php4apache2.dll"
#注:网上很多文章此处有错误,误写成"c:/php/php4apache2.dll"
AddType application/x-httpd-php .php
DirectoryIndex ....   index.php (在索引页中,加入index.php)

三.安装Mysql
直接到www.mysql.org下载For Windows版的,根据提示安装即可。

四.安装phpmyadmin
到www.phpmyadmin.net下载最新版的phpmyadmin
解压到网站根目录的/mysql中
将config.inc.php里的auth_type改为http
如果是4.1版本以上的Mysql,需要将认证密码改一下:
use mysql
update user set Password=old_password('zhoutang');
flush privileges;

五.安装Tomcat
三步安装Tomcat
在Wind2000系统上都已经成功安装Tomcat,只需要三步:

第一步:

下载准备必备文件:
1.jakarta-tomcat-4.1.31.exe (安装文件)        http://jakarta.apache.org/tomcat/index.html
2.j2sdk-1_4_2_09-windows-i586-p.exe (Jdk1.4)         http://java.sun.com/j2se/1.4/download.html
3.mysql-connector-java-3.1.10.zip (支持数据库)               http://www.mysql.com/downloads/api-jdbc.html

第二步:
运行j2sdk-1_4_2_09-windows-i586-p.exe,安装在c:\program files\jsdk

在windows2000的控制面板 中 选择 '系统',在'高级'页 选择'环境变量'
新增:

JAVA_HOME=c:\program files\jsdk
CLASSPATH=.;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

第一行是设置Windows下JAVA_HOME环境变量,是必须设定的,后面两行主要对Windows下命令窗口起作用(DOS窗口)。注意CLASSPATH的第一

个参数是“.”,如果这个不设置,使用java hello.helloWorld 会报Exception in thread "main" java.lang.NoClassDefFoundError

第三步:

运行jakarta-tomcat-4.1.31.exe,并且,将Tomcat安装为Windows的服务运行。
解压mysql-connector-java-3.1.10.zip,我们需要里面的mysql-connector-java-3.1.10-bin.jar文件,拷贝这个文件到tomcat的安装目录的

common/lib下面

启动Tomcat,只需启动Windows服务里的Tomcat就行

在浏览器键入http://localhost:8080/ 看到Tomcat的启动页面.


测试:
Tomcat+JDK+mySQL完整测试:
a.在tomcat/webapps下建立子目录test
b.复制目录(注意是整个目录)tomcat/webapps/ROOT/WEB-INF到新建的test目录下  
c.在test目录下新建index.jsp文件:
<%@ page contentType="text/html;charset=gb2312"%>  
<%@ page import="java.sql.*"%>  
<html><title测试JSP连接Mysql页面</title><body>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();  
String url ="jdbc:mysql://localhost:3306/mysql?user=root&password=&useUnicode=true&characterEncoding=GB2312";  
Connection conn= DriverManager.getConnection(url);  
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
String sql="select * from user";  
ResultSet rs=stmt.executeQuery(sql); %>  
<table><tr><td>您的第一个字段内容为:</td>  
<td>您的第二个字段内容为:</td>  
</tr>
<%while(rs.next()) {%>  
<tr><td>  
<%=rs.getString(1)%> </td><td>  
<%=rs.getString(2)%> </td></tr>  
<%}%>  
</table>  
<%out.print("Tomcat+JDK+mySQL完整测试,恭喜你,数据库操作成功!#Ipaddr原创笔记,转载请注明");%>  
<%rs.close();  
stmt.close();  
conn.close();  
%>
</body>
</html>
d.在浏览器中输入:http://localhost:8080/test,若出现“Tomcat+JDK+mySQL完整测试,恭喜你,数据库操作成功!”,则说明你的Tomcat+JDK+mySQL整体配置成功。

使用KNOPPIX修复Debian的LILO

[不指定 2005/08/24 21:55 | by ipaddr ]
Debian默认情况下,使用LILO引导,并且,使用XFS文件系统。
Linux默认情况下,内核没有包含XFS的支持。
有一次意外,用Debian的APT更新系统,更新完后,忘了使用LILO重新更新LILO,导致重启后LIL
O启动失败,无法进入Linux。
尝试用RH的安装光盘引导修复,因为不支持XFS,无法Mount,修复失败
尝试用Debian的安装光盘修复,虽然支持XFS,但在安装界面下可以看到硬盘分区,去无法在终端(Alt+F2)下面看到硬盘,无法继续。

最后用KNOPPIX修复成功
KNOPPIX是基于Debian的一种光盘版操作系统,一张光盘就可以启动系统,并且提供图形界面,使用非常方便,由于基于Debian,所以支持XFS。
修复过程如下:
用KNOPPIX光盘启动,在启动提示符下输入:
knoppix 2
进入命令行模式的Linux
#fdisk -l /dev/hda
查看当前分区情况
#mkdir /mnt/root
建立临时目录,挂载原分区
#mount /dev/hda1 /mnt/root
挂载,如果/boot单独分区,则还需要再次挂载/boot
#cd /mnt/root
#chroot ./
chroot到原系统
#cd /
#lilo -v
安装LILO
修复成功
Ipaddr(bcomcn)原创,转载请注明
Knoppix是一个方便的光盘操作系统,可以方便的启动计算机,上网,写邮件,进行Linux修复,另外,由于Linux2.6支持NTFS,所以,也可以很容易的查看NTFS格式的文件系统,所以,安全性要求比较高的计算机,应该禁用CDROM启动,并加上BIOS密码,否则,既使是Windows2000的系统,在不知道管理员密码的情况下,一样可以查看硬盘上的文档。
a.端口转发:

在详述端口转发之前,先讲一下我日前遇到的一件事情。
本人是搞测试的,有一厂家拿了一个服务器软件叫我测试。基于win2k的,端口号为881,服务器直接连接外部网络,客户端通过服
器ip来访问,而他们没有基于linux的服务器软件,照他们意思就必须将服务器换成windows的。作为一个linux爱好者,我想大家
明白这种痛苦。我翻了一下资料,发现iptables的端口转发功能可以解决,折腾了一下午,终于完成任务。下面将我的方法讲一下:
思想:利用端口转发,当服务器接收到881端口请求以后,将其转到 10.10.2.200:881上,10.10.2.200再将数据返回给请求连接

Eth0:连接ADSL,即ppp0接口
Eth1:连接内部网络,ip为10.10.1.1
10.10.2.200为win2k服务器,其端口881提供网络服务。


iptbles脚本:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 881 -j DNAT --to-destination 10.10.2.200:881 ;将881请求
发至10.10.2.00:881端口
iptables -t nat -A POSTROUTING -s 10.10.0.0/16 -d 10.10.2.200 -p tcp -m tcp --dport 881 -j SNAT --to-source
10.10.1.1 ;返回a.b.b.d时数据源来自同一子网,就将其源地址更改为10.10.1.1,从eth0发出,并在连接跟踪表中查出a.b.c.d
从ppp0进来的,又由ppp0将此数据发出。
当然不要忘了加一条允许881端口访问的语句。
iptables –A INPUT –p tcp –dport 881 –i ppp0 –j ACCEPT

可不可把服务器放在局域内,用端口转发来实现呢?答案当然是肯定的,既然能把881端口转发,那么21,80这些个端口更不在话
,而且很多服务器软件都可以自定义端口,那就在得玩了,只要有合适的端口,即使给局域网每一个用户开一个ftp服务器也是可
的。你想要实现什么服务都可以,当然是基于端口转发的。

局域网内10.10.2.101是win2k,提供www服务,端口为800
通过服务器http://serverip:800 进行访问。
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 800 -j DNAT --to-destination 10.10.2.101:800
iptables -t nat -A POSTROUTING -s 10.10.0.0/16 -d 10.10.2.101 -p tcp -m tcp --dport 800 -j SNAT --to-source
10.10.1.1
iptables –A INPUT –p tcp –dport 800 –i ppp0 –j ACCEPT

由于是基于端口转发实现的,所以服务器上只需装个iptables来转发数据就行了,一切服务由内部服务器完成,这样的话,我
linux服务器才真正的算是个防火墙。


b.IPTABLES防火墙使用经验一谈

最近架设了一台LINUX的小型服务器 因为需要把LINUX的机子作为软路由器来使用 所以把使用的一些经验谈一下。

iptables的功能十分的强大 例如IP转发和伪装 防御DoS,扫描和嗅探试的攻击等等 在这里就不阐述了

我的系统环境: redhat 7.2
adsl 2m
8139fast 网卡

1:linux如何所以软路由功能:


说到这里 大家可能会想 只要在/etc/rc.d/rc.local加上cat 1 > /proc/sys/net/ipv4/ip_forward就可以了 让linux具
ip_forward的功能 但你会发现 就算这样设置你局域网内的其他电脑还是不能共享上网 这是为什么 因为当你只有一个公网的ip
候 你就必须用到iptables的IP伪装功能 把IP的伪装成你公网的IP 那怎么实现呢 你可以这样
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 这样就可以把你所以出去的IP地址伪装成ppp0的IP地址(因为我
ADSL 如有不同可以修改)

2:我不想开放我的端口 但我要在我的电脑上启用http服务 并对外服务:

因为你不想开放除了80以外的端口 你可以这样
iptables –P INPUT –j DROP 我们用-P来拦截全部的通信
然后在来允许哪些端口可以被使用你可以这样写:
iptables –A INPUT –p tcp –dport 80 –j ACCEPT
你可以适当的按照这样的格式来添加自己想开放的端口 当然如果你觉得这样不是很好的管理你也可以新建一个iptables表 你可以
样做
iptables –N test (新建一个test表)
iptables –A test DROP
iptables –A test –p tcp –dport 80 –j ACCEPT(允许80端口被访问)
iptables –A INPUT –j test
iptables –A OUTPUT –j test
iptables –A FORWARD –j test(这3条的意思指让INPUT OUTPUT FORWARD都按照test的设置)

3我想在我内网的电脑上架设ftp服务 我该怎么做:

这就又要用到iptables 的又一个强大的功能端口映射了
你可以这样iptables -t nat -A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination
192.168.0.6:21
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.6 -p tcp -m tcp --
dport 25-j SNAT --to-source 192.168.0.1
这写是XCHEN兄给我的指导 再这里先谢谢了 上面2句话的意思是把服务器的25端口映射到192.168.0.6这台电脑上

4:我不想让人家可以PING到我

这大概是做防火墙用到最多的一种了 你可以在iptables写这句话
iptables -A INPUT -p icmp --icmp-type echo-request -i ppp0 -j DROP
如果你前面是新建了一个新的test表 那也可以这样写iptables -A test -p icmp --icmp-type echo-request -i ppp0 -j
DROP

这句话就是不允许人家PING我 因为ping用到的是icmp协议 因为icmp没有端口可言 所以也不需要指定端口了
好了 这就是iptables的几种比较基本的用法
这里在介绍几iptbales常用的一些命令
iptables –F 清空所有的iptables的规则设置
/sbin/iptables-save >  iptables – save 把你的规则保存下来 因为你所有设置的规则再重新启动后都不会被保存 所以你必
来写一个脚本来让他开机运行 所以你就可以用这命令来保存你的规则 然后让他开机自动运行就可以了。

lsof -i :53

53为端口号..

WIndows下面,有一个小工具fport可以查看.
----------------------------------

查看端口打开情况:
a.查看所有打开的端口
netstat -na
b.查看正在监听的端口
netstat -na|grep LISTEN
c.查看所有已建立连接的80端口
netstat -na|grep 80|grep EST
一,准备原码.
1. 内核原码:为了减少复杂性,不编译所有内核和模块,建议找一个跟当前版本一样的内核原码,推荐安装时光盘的
a. [root@kindgeorge] uname -r   (查看当前版本)
2.4.20-8
可以cd  /usr/src 查看是否有这个目录2.4.20-8
b. 或者[root@kindgeorge]rpm -qa|grep kernel
kernel-source-2.4.20-8   如果有这个说明已安装了.
如果没有安装,可以在RH第二张光盘中拷贝过来或安装  rpm -ivh kernel-source-2.4.18-3.i386.rpm. 安装后会在/usr/src/出现linux-2.4连接和linux-2.4.20-8目录.
        c.在http://www.kernel.org 或www.redhat.com下载一个和当前版本的内核原码.
2.  先获取最新的信息,当然要到http://www.netfilter.org 或 http://www.iptables.org  (这两个网址是一样的).
网站左方download栏已经说明了最新版本的iptables-1.3.1
[root@kindgeorge src] cd /usr/src/
a. 获取最新iptables :  wget http://www.netfilter.org/files/iptables-1.3.1.tar.bz2
解压:tar xjvf iptables-1.3.1.tar.bz2
b. 获取最新patch-o-matic-ng的地址:ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/
[root@kindgeorge src] wget ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20050331.tar.bz2
(ipaddr注:FTP好象上不去,不知是不是作者写错了,可以到这下载最新补丁:http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/ )
解压: tar xjvf patch-o-matic-ng-20050331.tar.bz2

二.安装说明
(一).处理内核源码.
1. [root@kindgeorge src]# cd /usr/src/linux-2.4
2. [root@kindgeorge linux-2.4]# vi Makefile,
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -8custom
将“EXTRAVERSION = -8custom”改为“EXTRAVERSION = -8”
即:
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -8
为何要修改呢?因为不同版本的内容是不可以使用的,当不修改时,则变成这个版本(2.4.20-8custom)了,不同时是这样出错的:
/lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: kernel-module version mismatch (版本错误)
      /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o was compiled for kernel version 2.4.20-8custom
      while this kernel is version 2.4.20-8.
/lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o failed
/lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod ipt_iprange failed

3. [root@kindgeorge linux-2.4]# make mrproper
4. [root@kindgeorge linux-2.4]# make oldconfig  
'make oldconfig' - 采用以前的 .config 文件 (编译时十分有用)
技巧:在make menuconfig时,我们面对众多的选项常常不知道该如何选择,此时可以把安装时的配置文件copy到/usr/src/linux-2.4中:cp /boot/config-2.4.* /usr/src/linux-2.4/.config,再用make menuconfig编译,它会读取.config中原来的配置信息.
(二).给netfilter打补丁
解开tar xjvf patch-o-matic-ng-20050331.tar.bz2 包后,进入该目录,就会发现有很多目录,其实每个目录对应一个模块.
我们可以这样来选择,根据不同贮仓库submitted|pending|base|extra,例如:
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme base .
或:KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme extra
执行后,会测试是否已经应用和提示你是否应用该模块,但这样会遍历所有模块,有很多是用不着的,并且可能和系统版本有冲突,如果不管三七二十一全部选择的话,一般都会在编译和使用时出错.所以推荐用cat /模块目录名/info 和cat /模块目录名/help 看过后,认为适合自己,才选择.
我是针对在上面看过后,有目的的一个一个的应用的,这样做:
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme string
执行后,会测试是否已经应用和提示你是否应用该模块,按"y"应用.然后继续下一个
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme comment
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme connlimit
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme time
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme iprange
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme geoip
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme nth
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme ipp2p
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme quota
上面全部完成后,
cd /usr/src/linux-2.4
make menuconfig,确认[*] Prompt for development and/or incomplete code/drivers要选中
然后进入Networking options
再进入IP:Netfilter Configuration,会看到增加很多模块,每个新增的后面都会出现"NEW",把其想要的选中为模块"M"
保存、退出,至此,给netfilter打补丁工作完成
(三).编译netfilter模块
1.这里只需要编译netfilter,不需要编译整个内核和模块.这里我只需要ipv4的,ipv6我还没用到,所以不管了
cd /usr/src/linux-2.4
make dep
make modules SUBDIRS=net/ipv4/netfilter
2.建立一个新目录备份原来模块,以防万一:
mkdir /usr/src/netfilter
cp /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/*.o  /usr/src/netfilter/
3.应用新的模块
cp -f /usr/src/linux-2.4/net/ipv4/netfilter/*.o /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/
4.更新你的modules.dep
depmod -a
当出现这个时,可以不用理会,因为ipchains, ipfwadm模块都没用,也可以把出错的删除.
depmod: *** Unresolved symbols in /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipchains_core.o
depmod: *** Unresolved symbols in /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipfwadm_core.o
(四).编译安装新的iptables
解压后有目录iptables-1.3.1
cd /usr/src/iptables-1.3.1
export KERNEL_DIR=/usr/src/linux-2.4
export IPTABLES_DIR=/usr/src/iptables-1.3.1
make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install

三.安装完成,测试及应用
1.内容过滤
iptables -I FORWARD -m string --string "腾讯" -j DROP
iptables -I FORWARD -s 192.168.3.159 -m string --string "qq.com" -j DROP
iptables -I FORWARD -d 192.168.3.0/24 -m string --string "宽频影院" -j DROP
iptables -I FORWARD -s 192.168.3.0/24 -m string --string "色情" -j DROP
iptables -I FORWARD -p tcp --sport 80 -m string --string "广告" -j DROP
2.备注应用
iptables -I FORWARD -s 192.168.3.159 -p tcp --dport 80 -j DROP -m comment --comment "the bad guy can not online"
iptables -I FORWARD -s 192.168.3.159 -m string --string "qq.com" -j DROP -m comment --comment "denny go to qq.com"
3.并发连接应用
模块 connlimit 作用:连接限制
--connlimit-above n 限制为多少个
--connlimit-mask n 这组主机的掩码,默认是connlimit-mask 32 ,即每ip.
这个主要可以限制内网用户的网络使用,对服务器而言则可以限制每个ip发起的连接数...比较实用
例如:只允许每个ip同时5个80端口转发,超过的丢弃:
iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
例如:只允许每组ip同时10个80端口转发:
iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP
例如:为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃.
/sbin/iptables -A INPUT -s 192.186.1.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
/sbin/iptables -A INPUT -s 192.186.1.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

4.ip范围应用
iptables -A FORWARD -m iprange --src-range 192.168.1.5-192.168.1.124 -j ACCEPT
5.每隔N个匹配
iptables -t mangle -A PREROUTING -m nth --every 10 -j DROP
6.封杀BT类P2P软件
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
7.配额匹配
iptables -I FORWARD -s 192.168.3.159 -p tcp --dport 80 -m quota --quota 500 -j DROP
iptables -I FORWARD -s 192.168.3.159 -p tcp --dport 80 -m quota --quota 500 -j ACCEPT
以上均测试通过,只有geoip的geoipdb.bin没下载到,所以没测试
在此仅为抛个砖头,更多的应用,要根据自己的需要来组合各个规则和模块了.


本来此篇文章和<<netfilter/iptables模块功能中文介绍>>是写在一起的,由于篇幅太长,所以份成两篇. 如果有更新请见我的blog: http://kindgeorge.at.3322.org

相关资料:
kindgeorge的
http://blog.chinaunix.net/article.php?articleId=19778&blogId=4543
http://bbs.chinaunix.net/forum/viewtopic.php?t=525525    netfilter/iptables模块功能中文介绍
platinum的 http://bbs.chinaunix.net/forum/viewtopic.php?t=505370 如何给iptables添加新的模块v2.2(含视频教程)
hongfengyue的 http://www.chinaunix.net/jh/4/508312.html iptables 添加模块 (for kernel 2.6)
官方: http://www.netfilter.org/documentation/HOWTO/netfilter-extensions-HOWTO.html


apache+mod_ssl

[不指定 2005/08/08 23:03 | by ipaddr ]
参改了一位前人的文章《Apache2 + mod_ssl + php5 完全安装实录》,在此表示感谢

1.安装openssl

一般,RH的系统会自带了RPM包的openssl,可以直接
rpm -ivh openssl*.rpm

另外,需在源代码安装,可参考:
下载最新版本的openssl: http://www.openssl.org/source/
# tar zxvf openssl-0.9.7d.tar.gz
# cd openssl-0.9.7d
# ./config
# make
# make install

2.整合安装mod_ssl

下载apache2: http://httpd.apache.org/download.cgi
我需要mod_ssl的支持,和apache1不同的是,mod_ssl不在是单独的模块,而是放在apache发行包里面了,默认是不启用的,config的时候选择上就可以了。
我使用DSO方式编译安装apache,同时将全部模块都编译好,以方便后来可能的需要。只要编辑httpd.conf,在里面去掉不想要的模块(注释或者删除对应模块的LoadModule行),就可以定制自己的apache咯。
# tar zxvf httpd-2.0.50.tar.gz
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=shared --enable-mods-shared=all --with-ssl=/usr/local/ssl
# make
# make install


Apache有两种使用模块的方法,其一是永久性包含进核心;
如果操作系统支持动态共享对象(DSO),而且能为autoconf所检测,则模块还可以被动态编译。
DSO模块的存储是独立与核心的,可以被核心使用由mod_so模块提供的运行时刻配置指令包含或排除。
如果编译中包含有任何动态模块,则mod_so模块会被自动包含进核心。如果希望核心能够装载DSO,而不实际编译任何动态模块,需要明确指定--enable-so。
(http://kajaa.bbs.us/ApacheManual/install.html)

第一次按照上述方法编译的apache,启动的时候会报错:
# cd /usr/local/apache2
# ./bin/apachectl startssl
Syntax error on line 251 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/modules/mod_ssl.so into server: /usr/local/apache/modules/mod_ssl.so: undefined symbol: X509_free

原因是什么呢?看 http://www.smartframeworks.com/qt-apache-ssl.html
因为按照下面的方法(参看:Apache2 + mod_ssl + php5 完全安装实录(2))安装的openssl默认是没有编译成动态链接库的,因为其文档说openssl的动态链接库还不成熟,可以使用 ./config shared 编译带动态链接库的openssl,但是还处于试验阶段。
解决这个问题的办法是:将mod_ssl静态的编译到apache里面。
请使用下面的方法重新来过:)
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=static --with-ssl=/usr/local/ssl --enable-mods-shared=all
# make
# make install
(ipaddr注:好象要先mkdir /usr/local/ssl,另外,--enable-mods-shared=all可以不要)

这次启动apache的时候又发现一个错误:
# cd /usr/local/apache2
# ./bin/apachectl startssl
Syntax error on line 108 of /usr/local/apache2/conf/ssl.conf:
SSLCertificateFile: file '/usr/local/apache2/conf/ssl.crt/server.crt' does not exist or is empty

这又是什么原因呢?因为我们没有配置ssl,需要生成ssl需要的证书。
以前使用apache1+mod_ssl的时候,make之后有一个这样的步骤
$ make certificate
可以用来生成ssl所用到的证书。
现在没有这个工具了,只能自己动手生成了,对证书不熟悉的人,有一个工具可以使用:http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz
# cd /usr/local/apache2/conf
# tar zxvf ssl.ca-0.1.tar.gz
# cd ssl.ca-0.1
# ./new-root-ca.sh                         (生成根证书)
No Root CA key round. Generating one
Generating RSA private key, 1024 bit long modulus
...........................++++++
....++++++
e is 65537 (0x10001)
Enter pass phrase for ca.key:              (输入一个密码)
Verifying - Enter pass phrase for ca.key:  (再输入一次密码)
......
Self-sign the root CA...                   (签署根证书)
Enter pass phrase for ca.key:              (输入刚刚设置的密码)
........
........                                   (下面开始签署)
Country Name (2 letter code) [MY]:CN
State or Province Name (full name) [Perak]:JiangSu
Locality Name (eg, city) [Sitiawan]:NanJing
Organization Name (eg, company) [My Directory Sdn Bhd]:Wiscom System Co.,Ltd
Organizational Unit Name (eg, section) [Certification Services Division]:ACSTAR
Common Name (eg, MD Root CA) []:WISCOM CA
Email Address []:acmail@wiscom.com.cn

这样就生成了ca.key和ca.crt两个文件,下面还要为我们的服务器生成一个证书:
# ./new-server-cert.sh server              (这个证书的名字是server)
......
......
Country Name (2 letter code) [MY]:CN
State or Province Name (full name) [Perak]:JiangSu
Locality Name (eg, city) [Sitiawan]:NanJing
Organization Name (eg, company) [My Directory Sdn Bhd]:Wiscom System Co.,Ltd
Organizational Unit Name (eg, section) [Secure Web Server]:ACSTAR
Common Name (eg, www.domain.com) []:acmail.wiscom.com.cn
Email Address []:acmail@wiscom.com.cn

这样就生成了server.csr和server.key这两个文件。
还需要签署一下才能使用的:
# ./sign-server-cert.sh server
CA signing: server.csr -> server.crt:
Using configuration from ca.config
Enter pass phrase for ./ca.key:             (输入上面设置的根证书密码)
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'JiangSu'
localityName          :PRINTABLE:'NanJing'
organizationName      :PRINTABLE:'Wiscom System Co.,Ltd'
organizationalUnitName:PRINTABLE:'ACSTAR'
commonName            :PRINTABLE:'acmail.wiscom.com.cn'
emailAddress          :IA5STRING:'acmail@wiscom.com.cn'
Certificate is to be certified until Jul 16 12:55:34 2005 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
CA verifying: server.crt <-> CA cert
server.crt: OK
(如果这里出现错误,最好重新来过,删除ssl.ca-0.1这个目录,从解压缩处重新开始。)

下面要按照ssl.conf里面的设置,将证书放在适当的位置。
# chmod 400 server.key
# cd ..
# mkdir ssl.key
# mv ssl.ca-0.1/server.key ssl.key
# mkdir ssl.crt
# mv ssl.ca-0.1/server.crt ssl.crt

然后就可以启动啦!
# cd /usr/local/apache2
# ./bin/apachectl startssl

对于这个提示:
httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
只需要编辑httpd.conf,找到ServerName xxxx这一行,去掉前面的注释即可。

//很大部分参考《Apache2 + mod_ssl + php5 完全安装实录》,只做了一些小说明,原文作者写得太详细了。

在此基础上可直接安装PHP,不再重复PHP的安装了。

11个笑话让你领悟人生

[不指定 2005/08/04 22:36 | by ipaddr ]
父子二人看到一辆十分豪华的进口轿车。儿子不屑地对他的父亲说:“坐这种车的人,肚子里一定没有学问!”父亲则轻描淡写地回答:“说这种话的人,口袋里一定没有钱!”

■你对事情的看法,是不是也反映出你内心真正的态度?


晚饭后,母亲和女儿一块儿洗碗盘,父亲和儿子在客厅看电视。突然,厨房里传来打破盘子的响声,然后一片沉寂。儿子望着他父亲,说道:“一定是妈妈打破的。”“你怎么知道?”“她没有骂人。”

■我们习惯以不同的标准来看人看己,以致往往是责人以严,待己以宽。


有两个台湾观光团到日本伊豆半岛旅游,路况很坏,到处都是坑洞。一位导游连声说路面简直像麻子一样。而另一个导游却诗意盎然地对游客说:“我们现在走的正是赫赫有名的伊豆迷人酒窝大道。”

■虽是同样的情况,然而不同的意念,就会产生不同的态度。思想是何等奇妙的事,如何去想,决定权在你。


同样是小学三年级的学生,他们将来的志愿同是当小丑。中国老师斥之为:“胸无大志,孺子不可教也!”外国老师则会说:“愿你把欢笑带给全世界!”

■身为长辈的我们,不但要求多于鼓励,更以狭窄界定了成功的定义。


妻子正在厨房炒菜。丈夫在她旁边一直唠叨不停:“慢些、小心!火太大了。赶快把鱼翻过来、油放太多了!”妻子脱口而出:“我懂得怎样炒菜。”丈夫平静地答道:“我只是要让你知道,我在开车时,你在旁边喋喋不休,我的感觉如何……”

■学会体谅他人并不困难,只要你愿意认真地站在对方的角度和立场看问题。


一辆载满乘客的公共汽车沿着下坡路快速前进着,有一个人在后面紧紧追赶着这辆车子。一个乘客从车窗中伸出头来对追车子的人说:“老兄!算啦,你追不上的!”“我必须追上它,”这人气喘吁吁地说:“我是这辆车的司机!”

■有些人必须非常认真努力,因为不这样的话,后果就十分悲惨了!然而也正因为必须全力以赴,潜在的本能和不为人知的特质终将充分展现出来。


甲:“新搬来的邻居好可恶,昨天晚上三更半夜跑来猛按我家的门铃。”乙:“的确可恶!你有没有马上报警?”甲:“没有。我当他们是疯子,继续吹我的小喇叭。”

■事出必有因,如果能先看到自己的不是,答案就会不一样。


张三在山间小路开车,正当他悠哉地欣赏美丽风景时,突然迎面开来的货车司机摇下窗户大喊一声:“猪!”张三越想越气,也摇下车窗大骂:“你才是猪!”刚骂完,他便迎头撞上一群过马路的猪。

■不要错误地诠释别人的好意,那只会让自己吃亏,并且使别人受辱。


小男孩问爸爸:“是不是做父亲的总比做儿子的知道得多?”爸爸回答:“当然啦!”“电灯是谁发明的?”“爱迪生。”“那爱迪生的爸爸怎么没有发明电灯?”

■权威往往只是一个经不起考验的空壳子,尤其在现今这个多元开放的时代。


小明洗澡时不小心吞下一小块肥皂,他的妈妈慌慌张张地打电话给家庭医生求助。医生说:“我现在还有几个病人在,可能要半小时后才能赶过去。”小明妈妈说:“在你来之前,我该做什么?”医生说:“给小明喝一杯白开水,然后用力跳一跳,你就可以让小明用嘴巴吹泡泡消磨时间了。”

■事情既然已经发生了,何不坦然自在地面对。担心不如宽心,穷紧张不如穷开心。


一把坚实的大锁挂在大门上,一根铁杆费了九牛二虎之力,还是无法将它撬开。钥匙来了,他瘦小的身子钻进锁孔,只轻轻一转,大锁就“啪”地一声打开了。

■每个人的心,都像上了锁的大门,任你再粗的铁棒也撬不开。惟有关怀,才能把自己变成一把细腻的钥匙,进入别人的心中。
分页: 50/57 第一页 上页 45 46 47 48 49 50 51 52 53 54 下页 最后页 [ 显示模式: 摘要 | 列表 ]