计算机
yum报错: rpmdb: Lock table is out of available locker entries rpmdb: Unknown locker ID: bc1 error: db4 error(22) from db->close: Invalid argument error: cannot open Packages index using db3 – Cannot allocate memory (12) error: cannot open Packages database in /var/lib/rpm TypeError: rpmdb open failed 解决方法A: 备份rpm所用的数据库 cd /var/lib/rpm/ mv __db.* ~/ 重建该数据库 rpm –rebuilddb [...]
服务器记录文件以及其后的报告中的数据来评估组织的活动,包括防火墙和VPN安全相关的活动,带宽的使用,以及其他各种各样的记录、管理、确认、授权和会计职能。由于服务器记录的是来自不同主机的信息,因此时间的准确性显得非常必要,否则的话就可能出现不同的事件顺序和故障排除的根源问题,使得与时间有关的一切数据都变得毫无意义。即使是在路由器里,像路由器配置改变、接口状态、调制解调器事件、安全警报、环境条件、CPU处理过载等主要的配置事件和系统错误信息,都要有准确的时间戳,这些数据才有意义。 网络时间协议简介 NTP(Network Time Protocol)是由美国德拉瓦大学的David L. Mills教授于1985年提出,除了可以估算封包在网络上的往返延迟外,还可独立地估算计算机时钟偏差,从而实现在网络上的高精准度计算机校时,它是设计用来在Internet上使不同的机器能维持相同时间的一种通讯协定。时间服务器(time server)是利用NTP的一种服务器,通过它可以使网络中的机器维持时间同步。在大多数的地方,NTP可以提供1-50ms的可信赖性的同步时间源和网络工作路径。 网络时间协议(NTP)的详细说明在RFC-1305[Mills 1992]中。RFC-1305对 NTP协议自动机在事件、状态、转变功能和行为方面给出了明确的说明。它以合适的算法以增强时钟的准确性,并且减轻多个由于同步源而产生的差错,实现了准确性低于毫秒的时间服务,以满足目前因特网中路径量测的需要。 NTP 是一个跨越广域网或局域网的复杂的同步时间协议,它通常可获得毫秒级的精度。RFC2030[Mills 1996]描述了SNTP(Simple Network Time Protocol),目的是为了那些不需要完整NTP实现复杂性的主机,它是NTP的一个子集。通常让局域网上的若干台主机通过因特网与其他的NTP主机同步时钟,接着再向局域网内其他客户端提供时间同步服务。 * 网络时间服务的工作模式 o Sever/Client mode:用户向一个多几个服务器提出服务请求,根据所交换的信息,从中选择认为最准确的时间,并调整本地的时钟。 o Multicast/Broadcast mode:此种模式是适用于用在高速的LAN上。利用一个或多个服务器在固定的周期向某个多播地址做广播。 o Symmetric mode:二个以上的Server互相进行时间消息的通讯,可以互相校正对方的时间,以维持整个subnet的时间一致性。 * 保持网络节点时间同步的机制 o ntpdate 命令:此命令被用来立即同步客户端和服务器的时间。这是同步客户端和服务器的时间的最快方式。系统每次启动的时候会使用这个命令,用来确保客户端和服务器的时间的同步。这个命令通常指定一个NTP服务器作为一个参数,客户端的时钟被设置为和服务器的时间匹配。当这个命令使用多个NTP服务器作为参数时,客户端会使用最低级的NTP服务器。如果级别相等,客户端会使用加权平均数。 o ntpd守护进程:此进程在后台持续运行,并且会定时校验客户端的时钟和NTP服务器的时间。xntpd守护进程通常是在系统启动的时候启动。因为客户端的时钟可能产生漂移,以致与实际的NTP时钟有差异。xntpd守护进程会周期性地发送一个NTP服务器的网络请求,并且与客户端的时钟对比,在必要的时候修正客户端的时间,同时将时间差存到名为/etc/ntp.drift文件。默认的xntpd时间检查的间隔为64秒,在第一次检查的时候,客户端的时钟和NTP服务器上的时钟的差异会被记录下来,同时依靠这个时间差异来计划下一次检查。如果这个时间差异很大,下一次的时间检查会很快发生。如果这个差异很小,下一次的检查到来的时间会相应的延长。这样就避免每次都去查询网络中的时间服务器,从而可以减轻网络负载。查询NTP服务器的次数会慢慢变少。直到达到NTP请求的最小值。 o 注:在命令行方式下,可以采用"ntpd -q"或者"ntpdate [-b] pool.ntp.org"进行对时。使用ntpd进行时间同步时,应事先配置好ntp.conf文件。 #yum update ntp vi [...]
Continue reading about linux NTP(Network Time Protocol)服务器配置
Unicode是一种字符编码规范 。 先从ASCII说起。ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits) 因此,ASCII编码可以表示的最大字符数是256,其实英文字符并没有那么多,一般只用前128个(最高位为0),其中包括了控制字符、数字、大小写字母和其他一些符号 。 而最高位为1的另128个字符被成为“扩展ASCII”,一般用来存放英文的制表符、部分音标字符等等的一些其他符号,这种字符编码规范显然用 来处理英文没有什么问题。(实际上也可以用来处理法文、德文等一些其他的西欧字符,但是不能和英文通用),但是面对中文、阿拉伯文之类复杂的文字,255 个字符显然不够用 于是,各个国家纷纷制定了自己的文字编码规范,其中中文的文字编码规范叫做“GB2312-80”,它是和ASCII兼容的一种编码规范,其实就是利用扩展ASCII没有真正标准化这一点,把一个中文字符用两个扩展ASCII字符来表示。 但是这个方法有问题,最大的问题就是,中文文字没有真正属于自己的编码,因为扩展ASCII码虽然没有真正的标准化,但是PC里的ASCII码 还是有一个事实标准的(存放着英文制表符),所以很多软件利用这些符号来画表格。这样的软件用到中文系统中,这些表格符就会被误认作中文字,破坏版面。而 且,统计中英文混合字符串中的字数,也是比较复杂的,我们必须判断一个ASCII码是否扩展,以及它的下一个ASCII是否扩展,然后才“猜”那可能是一 个中文字 。 总之当时处理中文是很痛苦的。而更痛苦的是GB2312是国家标准,台湾当时有一个Big5编码标准,很多编码和GB是相同的,所以……,嘿嘿。 这时候,我们就知道,要真正解决中文问题,不能从扩展ASCII的角度入手,也不能仅靠中国一家来解决。而必须有一个全新的编码系统,这个系统 要可以将中文、英文、法文、德文……等等所有的文字统一起来考虑,为每个文字都分配一个单独的编码,这样才不会有上面那种现象出现。 于是,Unicode诞生了。 Unicode有两套标准,一套叫UCS-2(Unicode-16),用2个字节为字符编码,另一套叫UCS-4(Unicode-32),用4个字节为字符编码。 以目前常用的UCS-2为例,它可以表示的字符数为2^16=65535,基本上可以容纳所有的欧美字符和绝大部分的亚洲字符 。 UTF-8的问题后面会提到 。 在Unicode里,所有的字符被一视同仁。汉字不再使用“两个扩展ASCII”,而是使用“1个Unicode”,注意,现在的汉字是“一个字符”了,于是,拆字、统计字数这些问题也就自然而然的解决了 。 但是,这个世界不是理想的,不可能在一夜之间所有的系统都使用Unicode来处理字符,所以Unicode在诞生之日,就必须考虑一个严峻的问题:和ASCII字符集之间的不兼容问题。 我们知道,ASCII字符是单个字节的,比如“A”的ASCII是65。而Unicode是双字节的,比如“A”的Unicode是0065,这就造成了一个非常大的问题:以前处理ASCII的那套机制不能被用来处理Unicode了 。 另一个更加严重的问题是,C语言使用’\0′作为字符串结尾,而Unicode里恰恰有很多字符都有一个字节为0,这样一来,C语言的字符串函数将无法正常处理Unicode,除非把世界上所有用C写的程序以及他们所用的函数库全部换掉 。 于是,比Unicode更伟大的东东诞生了,之所以说它更伟大是因为它让Unicode不再存在于纸上,而是真实的存在于我们大家的电脑中。那就是:UTF。 UTF= UCS Transformation Format UCS转换格式,它是将Unicode编码规则和计算机的实际编码对应起来的一个规则。现在流行的UTF有2种:UTF-8和UTF-16 。 其中UTF-16和上面提到的Unicode本身的编码规范是一致的,这里不多说了。而UTF-8不同,它定义了一种“区间规则”,这种规则可以和ASCII编码保持最大程度的兼容 。 UTF-8有点类似于Haffman编码,它将Unicode编码为00000000-0000007F的字符,用单个字节来表示; 00000080-000007FF的字符用两个字节表示 00000800-0000FFFF的字符用3字节表示 因为目前为止Unicode-16规范没有指定FFFF以上的字符,所以UTF-8最多是使用3个字节来表示一个字符。但理论上来说,UTF-8最多需要用6字节表示一个字符。 在UTF-8里,英文字符仍然跟ASCII编码一样,因此原先的函数库可以继续使用。而中文的编码范围是在0080-07FF之间,因此是2个字节表示(但这两个字节和GB编码的两个字节是不同的),用专门的Unicode处理类可以对UTF编码进行处理。 下面说说中文的问题。 由于历史的原因,在Unicode之前,一共存在过3套中文编码标准。 GB2312-80,是中国大陆使用的国家标准,其中一共编码了6763个常用简体汉字。Big5,是台湾使用的编码标准,编码了台湾使用的繁体汉字,大概有8千多个。HKSCS,是中国香港使用的编码标准,字体也是繁体,但跟Big5有所不同。 这3套编码标准都采用了两个扩展ASCII的方法,因此,几套编码互不兼容,而且编码区间也各有不同 因为其不兼容性,在同一个系统中同时显示GB和Big5基本上是不可能的。当时的南极星、RichWin等等软件,在自动识别中文编码、自动显示正确编码方面都做了很多努力。 他们用了怎样的技术我就不得而知了,我知道好像南极星曾经以同屏显示繁简中文为卖点。 后来,由于各方面的原因,国际上又制定了针对中文的统一字符集GBK和GB18030,其中GBK已经在Windows、Linux等多种操作系统中被实现。 GBK兼容GB2312,并增加了大量不常用汉字,还加入了几乎所有的Big5中的繁体汉字。但是GBK中的繁体汉字和Big5中的几乎不兼容。 GB18030相当于是GBK的超集,比GBK包含的字符更多。据我所知目前还没有操作系统直接支持GB18030。 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题: [...]
在nagios的libexec下有check_nt这个插件,它就是用来检查windows机器的服务的,其功能类似于上一章讲的check_nrpe.不过还需要搭配另外一个软件NSClient,它则类似于NRPE ,NSClient与nrpe最大的区别就是: –被监控机上安装有nrpe,并且还有插件,最终的监控是由这些插件来进行的.当监控主机将监控请求发给nrpe后,nrpe调用插件来完成监控.–NSClient则不同,被监控机上只安装NSClient,没有任何的插件.当监控主机将监控请求发给NSClient后,NSClient直接完成监控,所有的监控是由NSClient完成的. 安装NSClient 从 http://sourceforge.net/projects/nscplus 下载NSClient++-Win32-0.3.5.msi(或者NSClient++-x64-0.3.5.msi,64位机),双击安装。 在开始-运行里面输入services.msc打开”服务”,启动服务: NSClientpp 编辑NSC.ini文件, C:\Program Files\NSClient++ 将 [modules]部分的所有模块前面的注释都去掉,除了CheckWMI.dll, RemoteConfiguration.dll,SysTray.dll。 在[Settings]部分设置’password’选项来设置密码,作用是在nagios连接过来时要求提供密码.这一步是可选的. 将[Settings]部分’allowed_hosts’选项的注释去掉,并且加上运行nagios的监控主机的IP. allowed_hosts=127.0.0.1/32,172.16.8.153 以逗号相隔.这个地方是支持子网的,如果写成192.168.0.0/24则表示该子网内的所有机器都可以访问.如果这个地方是空白则表示所有的主机都可以连接上来. [NSClient]的’port’选项取消注释,,这是NSClient的默认监听端口 port=12489 查看服务,在cmd里面执行netstat –an可以看到已经开始监听tcp的12489端口了。 防火墙也要打开tcp的12489端口,否则nagios检查此服务的时候会报socket 超时错误. 监控主机的配置 在监控主机上做的就是: 1.安装监控windows的插件(已经默认安装了,check_nt) 2.定义命令 3.定义要监控的项目 cd /usr/local/nagios/etc/servers vi services.cfg //这里只举一个例子 define service { use remote-service host_name eblog service_description CPULOAD check_command check_nt!CPULOAD! -l [...]
远程主机(被监控机)安装部分 #yum install openssl rpm -ihv gd-devel-2.0.28-4.4E.1.i386.rpm 安装nagios-plugin groupadd nagios useradd nagios -g nagios -s /sbin/nologin mkdir -p /usr/local/nagios mkdir -p /usr/local/nagios/etc tar zxf nagios-plugins-1.4.13.tar.gz -C /usr/local/src cd /usr/local/src/nagios-plugins-1.4.13 ./configure -prefix=/usr/local/nagios-plugins -enable-redhat-pthread-workaround make -j6 && make install cp -a /usr/local/nagios-plugins/libexec /usr/local/nagios # –enable-redhat-pthread-workaround 这个参数可以在出现checking for redhat spopen problem… 错误时使用 安装nrpe(主要是使用check_nrpe模块) tar zxf nrpe-2.12.tar.gz -C /usr/local/src [...]
创建nagios用户及其组,让nagios的运行用户为nagios 而不是root。再把目录/usr/local/nagios的属主设置为nagios,以保证系统的安全。 1、添加系统帐户nagios: useradd nagios 就很容易的把用户和组nagios添加到系统。有的类型的linux发行版添加用户和组要麻烦一些-需要要添加组,然后再执行 useradd -g nagios nagios这样的操作。在实际的运用场景,nagios用户并没有必要作为系统用户来登录linux系统,因此可以不必设置nagios的用户密码,甚至可以把nagios用户的登录shell设置成/bin/false。 2、更改目录属组:chown -R nagios.nagios /usr/local/nagios 。请注意,有的unix/linux的版本用户和属组分隔符号不是“.”,可能会是这样的形式 chown -R nagios:nagios /usr/local/nagios 。 3、sendmail。看看sendmail是否正常运行?我们需要使用sendmail来发送故障报警信息,所以这个包必须能够正常工作。Sendmail分为服务器和客户端两部分,有2种发送报警邮件的方式: (1)nagios所在的机器通过sendmail客户端程序把邮件发送到专门的邮件服务器,再由邮件服务器把消息发送到用户邮箱。 (2)邮件客户端和服务器端就用nagios所在系统sendmail。第一种方式用起来非常规范,但更麻烦,例如需要做地址解析、修改邮件服务器的配置;另外还有一个问题-它还依赖别的系统,增加了故障点和复杂度。第二种方法十分简单,只需启动sendmail服务即可,而且它不再依赖于别的系统和服务。在我工作的实际场景,这两种方法都使用,用专门的邮件服务器会有发送延迟的情况(因为邮件服务器要处理很多其他用户邮件的收发);而直接用sendmail做服务器和客户端就异常简单和方便了。非常幸运的是,几乎所有的linux/unix发行版都默认安装并启动了sendmail。 4、手机短信发送工具。如果有自己的短信通道,直接把发送短信的客户端程序sms_send拷贝到目录/usr/local/bin/下。如果没有短信下发的网关通道,那怎么办呢?网络上有很多短信发送的客户端程序,很有名的就是smsclient,把它下载下来,解包后安装。不要忘记购买手机modem和手机卡,modem只支持SIM卡而不支持 cdma。安装完smsclient软件和硬件modem后,测试一下是否正常。如果没有modem又怎么办?办法还是有的:让你的手机号可以接受邮件,这需要你去营业厅开通这项功能。短信报警功能是最有用的功能,我们不可能成天盯着监视屏幕,也不可能成天接受电子邮件,但我们的手机却可以24小时在线,只要被监控对象发生故障,马上就可以收到故障报警短信。还可以用中国移动的飞信。建议启用nagios的短信故障报警功能。 配置 一、apache 配置 第一步是修改apache的配置文件httpd.conf,这里的文件路径是 /usr/local/httpd/conf/httpd.conf 。把apache的运行用户和运行组改成nagios。 vi /usr/local/httpd/conf/httpd.conf 修改: User nagios Group nagios 添加: Alias /nagios/cgi-bin/images/ "/usr/local/nagios/share/images/" <Directory "/usr/local/nagios/share/images/"> [...]
nagios是一款网络管理软件,开源的软件。能够对网络内的主机和硬件设备进行状态监控。nagios的优势: 免费;开源;高扩展性。 nagios能实现的功能: 1. 状态监控 2. 预警处理 3. 集中,规模化管理 4. 可视化显示方式 nagios的实现方式:nagios采用分布-集中的管理模式。在nagios服务器上安装nagios主程序,在被监控主机上安装nagios代理程序。通过nagios主程序和nagios代理程序之间的通讯,监视主机状态。主程序和代理程序之间有两种工作方式,一种是主程序–>Active–>代理程序;另一种是主程序–>passive–>代理程序;顾名思义,是以一方向另一方主动提出通讯需求来划分的。 nagios服务器上需要安装以下包,nagios主程序,nagios的plugin程序,check_nrpe程序,imagepak包; 没有插件,nagios将什么作用也没有,插件也是nagios扩展功能的强大武器,除了下载常用的插件外,我们还可以根据实际要求编写自己的插件。插件与nagios之间的版本关联不大。在配置过程指定的安装路径是/usr/local/nagios,而不是/usr/local/nagios-plugin,安装完成后,将在目录/usr/local/nagios生成目录libexec(里面有很多文件),这正是nagios所需要的。 安装web服务器apache Web服务不是nagios所必须的,但是如果nagios没有web,只有通过查看nagios的日志来判断状态,而不能直观查看。 安装 操作系统: cat /etc/redhat-release CentOS release 4.4 (Final) rpm -ihv gd-devel-2.0.28-4.4E.1.i386.rpm groupadd nagios useradd nagios -g nagios -s /sbin/nologin 下载 wget http://nchc.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.6.tar.gz tar zxf nagios-3.0.6.tar.gz -C /usr/local/src cd /usr/local/src/nagios-3.0.6/ ./configure -prefix=/usr/local/nagios #–with-gd-lib=/usr/local/lib –with-gd-inc=/usr/local/include make -j6 all && make [...]
支持ipv6,参考rfc1912配置。 Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。 操作系统: centos 下载: wget http://ftp.isc.org/isc/bind9/9.6.0-P1/bind-9.6.0-P1.tar.gz 最新bind 9需要安装新版本openssl: 安装zlib tar xfj zlib-1.2.3.tar.bz2 -C /usr/local/src cd /usr/local/src/zlib-1.2.3 ./configure make -j6 && make install echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig 安装openssl http://www.openssl.org/source/ tar zxf openssl-0.9.8k.tar.gz -C /usr/local/src cd /usr/local/src/openssl-0.9.8k ./config –prefix=/usr/local/openssl –openssldir=/usr/local/openssl shared zlib make && make test && make install /usr/local/openssl/lib/ echo [...]
PPTP vpn在windows客户端不需要安装特殊的软件,配置简单。在2.6.13以上内核mppc压缩未配置成功。 PPTP:点对点隧道协议(Point to Point Tunneling Protocol) 点对点隧道协议(PPTP)是一种支持多协议虚拟专用网络的网络技术。通过该协议,远程用户能够通过 Microsoft Windows NT 工作站、Windows 95 和 Windows 98 操作系统以及其它装有点对点协议的系统安全访问公司网络,并能拨号连入本地 ISP,通过 Internet 安全链接到公司网络。 PPTP 可以用于在 IP 网络上建立 PPP 会话隧道。在这种配置下,PPTP 隧道和 PPP 会话运行在两个相同的机器上,呼叫方充当 PNS。PPTP 使用客户机-服务器结构来分离当前网络访问服务器具备的一些功能并支持虚拟专用网络。PPTP 作为一个呼叫控制和管理协议,它允许服务器控制来自 PSTN 或 ISDN 的拨入电路交换呼叫访问并初始化外部电路交换连接。 PPTP 使用 GRE 的扩展版本来传输用户 PPP 包。 操作系统: centos5 确定内核是否支持mppe: modprobe ppp-compress-18 && echo ok 如果显示ok,内核已经具备了mppe支持。 用以下命令检查PPP是否支持MPPE: strings ‘/usr/sbin/pppd’ |grep [...]
硬盘以前装了mac os,被转换成了GPT,安装centos 5.3时提示: Your boot partition is on a disk using the GPT partitioning Scheme but this machines cannot boot using GPT. 用linux live CD,推荐slax on usb disk,启动系统以后,执行: 查看硬盘的设备名称: fdisk -l 假设是/dev/sdb parted select /dev/sdb mklabel msdos quit 或者运行 parted -s /dev/sdb mklabel msdos 然后就可以正常安装了。 可以用 parted -s /dev/sdc print来查看分区情况 补充一些知识: 目前我们可以接触到的大部分pc依然采用上世纪遗传下来的 BIOS + MBR [...]
近期评论