Oct 17 2008

节能。。。

Category: 技术ssmax @ 14:26:15

今天刚搞好freeradius,向总又来说有东西要搞。。。节能。。。tmd老板这么多钱节约个头啊,要晚上把服务器休眠或者关机,然后早上用网卡wake on lan,tnnd这个东西不是每个网卡都支持的,而且网络环境不同,magic wake up的包未必能传送到目标机器啊,郁闷。

ethtool eth0 看看网卡支持什么模式
Supports Wake-on: g
Wake-on: d

一般就是g了,ethtool -s eth0 wol g
写在shutdown脚本或者其它地方,如果bios里面不改好的话好像每次都会改回来的。

wol p|u|m|b|a|g|s|d…
Set Wake-on-LAN options. Not all devices support this. The
argument to this option is a string of characters specifying
which options to enable.
p Wake on phy activity
u Wake on unicast messages
m Wake on multicast messages
b Wake on broadcast messages
a Wake on ARP
g Wake on MagicPacket(tm)
s Enable SecureOn(tm) password for MagicPacket(tm)
d Disable (wake on nothing). This option clears all previous
options.


Oct 16 2008

NoCatAuth 支持每个账号限制一个网卡登陆

Category: 技术ssmax @ 17:09:26

NoCatAuth ,这个和802.1x一起发展来的东西,已经很多年没用更新了,NoCatAuth的好处是不需要配置客户端,基本所有无线的网络都可以使用它来验证,因为它是在网关那里拦截数据,通过iptables之类的防火墙动态建立规则,拦截或者通过用户请求,所以用户能连上wap也不能连上网关以外,防止有人勾线。
不过缺点也很明显,还是做不到所谓的安全wap网络。。。

这两天研究了一下,基本上搭建好了,用mysql,没有管理页面。。。
首先是安装。。。弹出。。。
No supported firewalls detected! Check your path.”
Supported firewalls include: iptables, ipchains, ipf, pf.

因为版本太旧了,检测写死只能在linux核心2.4上面装,改一下检测脚本就好了。。。
vi bin/detect-fw.sh

elif which iptables >/dev/null 2>&1 && \
test X”`uname -sr | cut -d. -f-2`” = X”Linux 2.4″; then
FIREWALL=iptables
FW_BIN=iptables

把Linux 2.4 改成 Linux 2.6,好了,linux上面一般都是用iptables的了

顺便改了一下,让它支持单账号单用户,有多的话就踢人。
主要就是修改gateway的lib/NoCat/Gateway.pm

permit 函数那里加上
sub permit {
my ( $self, $peer, $class ) = @_;
my $fw = $self->firewall( GatewayAddr => $peer->gateway_ip );
my $action;

# delete the same user
while ( my ($token, $pcheck) = each %{$self->{Peer}} ) {
$self->log( 5, “debug User:”, $pcheck->user, ” Mac:”, $pcheck->mac);

if ( $pcheck->user eq $peer->user and $pcheck->mac ne $peer->mac) {
$self->log( 5, “User:”, $pcheck->user, ” Mac:”, $pcheck->mac, ” has been replaced by new Mac:”, $peer->mac);
$self->deny($pcheck);
}
}

但是这样还不够,它是分了子线程出来的,在deny的时候会通知父节点,其实就是用一长串字符串调用pipe,所以deny和permit的操作写到了一起,要把它分开来处理,要修改函数 accept_child,改成下面的样子,增加了split分开每个消息而已。。。

sub accept_child {
my ($self, $listen) = @_;
my $r = read( $listen, my $msg_o, 500_000 ); # arbitrary limit
if ($r) {
my @msgs = split(/InitCmd/, $msg_o);
for my $msg (@msgs) {
next if ( length($msg) eq 0 );

# The child process has news about a peer.
# Parse that info and store it.
my $peer = $self->peer( $self->parse(“InitCmd”.$msg) );
my $action = delete( $peer->{Action} ) || “”;

$self->log( 10, “Got notification $action of peer”, $peer->id );

if ( $action eq DENY ) {
$self->remove_peer( $peer );
} else {
$self->add_peer( $peer );
}
if ( $action eq PERMIT ) {
# Increment this only once per connection.
$self->{TotalConnections}++;

# Note the connection time.
$self->{LastConnectionTime} = scalar localtime;
}
}
} elsif (not defined $r) {
$self->log( 2, “Can’t read from child pipe: $!” );
}

# if $r returned false, but not undef, then the child quit
# normally, but with nothing to say?

$self->pool->remove( $listen );

my $result = $listen->close;
$self->log( 10, “Child process returned $result” ) if $r;
}

这样改好以后重启就可以实现单账号单网卡登陆了,一旦有人盗用你的账号,你就被人踢。。。。郁闷吧,哈哈。
搞了两天估计都是无用功了,要安全。。。那就用最高级的WPA AES吧。。。
明天继续看WPA PEAP 模式登陆,用FreeRadius就可以实现,应该不是太难吧。。。


Oct 16 2008

perl cpan

Category: 技术ssmax @ 10:35:17

用perl cpan安装模块

首先配置CPAN Module,方法是在bash下面运行

$ perl -MCPAN -eshell

配置过程会询问一些问题,其中CPAN的镜像,是/root/.cpan/sources/MIRRORED.BY文件,从官方网站找完整版的
http://www.cpan.org/MIRRORED.BY
配置好,中国的站点基本都垃圾不更新了,通过 o conf init 重新配置,选到好的为止。。。

接下来要更新CPAN Module,而不是直接装LWP。否则会遇到undefined subroutine &Digest::base::new之类的错误。方法是运行

cpan> install Bundle::CPAN

这一步是关键,切记切记。我开始不知道,还在网上搜索这个错误信息,发现有人说是Perl的问题,我就把整个Cygwin更新到1.5.19.4,结果啥用也没有,还把其它东西弄得一塌糊涂。
装好新的CPAN Module,先退出,然后再运行perl -MCPAN -eshell
命令进入CPAN的shell,这时就可以装LWP了

cpan> install Bundle::LWP

安装Bundle::LWP意味着不仅安装LWP,而且安装它需要的其它module。


Oct 15 2008

windows下面的find

Category: 技术ssmax @ 09:45:26

没有linux下面这么方便,windows下面的find是直接搜字符串的,不过结合dir就可以实现linux find的一些功能

dir /p /s path | find “string” > result.txt

/p就是以普通格式输出
/s就相当于遍历

当然windows下面也有实现全功能的find,只要安装微软的
Windows Services for UNIX
这个包,就可以实现unix下面所有基本功能了,连UFS都可以挂得上去。


Oct 14 2008

rrd tool

Category: 技术ssmax @ 21:55:39

一个很好的保存时间数据的数据库实现

可以自动实现近期数据详细,历史数据概要和自动生成图片,用来做存放监控数据十分方便

可惜就是默认不是线程安全的,需要做同步锁,不过还好监控的东西一般都是并发访问并不大,单线运行也没有什么问题。


Oct 12 2008

硬盘

Category: 乱up当秘笈ssmax @ 16:47:14

西数的120G硬盘终于挂了,smart经常不通过,坏道这里一块那里一块,修复了都无用,有些块读取大于500ms了,这只是03年7月买的,基本在学校以10m bytes/s下载和上传的速度bt。挺到现在都算不错了,从老爷机上面拆下一直火球7代 3.2G先用着吧。哈哈,竟然还能用,正好10年了。。。


Oct 11 2008

Category: 乱up当秘笈ssmax @ 21:19:15

今天某猪吃了4只螃蟹,本人对螃蟹不感冒,每次都吃不到多少肉,后来就干脆不吃了,不知道下周二客服的饭局是吃什么的呢,竟然要去到芳村这么远,上次去那边吃饭好像是吃果子狸的。。。。


Oct 09 2008

snmpget读取squid的信息

Category: 技术ssmax @ 17:10:14

net-snmp版本是2.5.4,比较新,squid文档里面的方法都有点错误了。。。

首先是squid的配置文件squid.conf

acl monitor src ip/mask

acl snmppublic snmp_community topsecret
snmp_access allow snmppublic monitor
snmp_access deny all

这里定义了哪个机器可以访问snmp agent,还有snmp community string,这个community string一定要记住,类似验证字符串的东西,估计是加密解密传输数据用到的种子。

然后看看squid的

share/mib.txt

这个就是squid mib的id信息,有很多,随便找个

— SQUID-MIB  { iso org(3) dod(6) internet(1) private(4) enterprises(1) 3495 }

。。。。。

nlanr OBJECT IDENTIFIER ::= { enterprises 3495 }

squid MODULE-IDENTITY
    LAST-UPDATED “9809220000Z”
    ORGANIZATION “National Laboratory for Applied Network Research”
    CONTACT-INFO
            ”        Squid Developers

             E-mail: squid@squid-cache.org
    DESCRIPTION
                “Squid MIB defined for the management of the Squid
                proxy server. See http://www.squid-cache.org/.”

    REVISION      “9809220000Z”
    DESCRIPTION
                “Move to SMIv2. Prepare to split into proxy/squid.”
    REVISION      “9901010000Z”
    DESCRIPTION
                “Added objects and corrected asn.1 syntax and
                descriptions.”
    ::= { nlanr 1 }


— OID Assignments

        cacheSystem     OBJECT IDENTIFIER ::= { squid 1 }
        cacheConfig     OBJECT IDENTIFIER ::= { squid 2 }
        cachePerf       OBJECT IDENTIFIER ::= { squid 3 }
        cacheNetwork    OBJECT IDENTIFIER ::= { squid 4 }
        cacheMesh       OBJECT IDENTIFIER ::= { squid 5 }

— cacheSystem group

        cacheSysVMsize OBJECT-TYPE
                SYNTAX Integer32
                MAX-ACCESS read-only
                STATUS current
                DESCRIPTION
                        ” Storage Mem size in KB ”
        ::= { cacheSystem 1 }

 

 

– SQUID-MIB  { iso org(3) dod(6) internet(1) private(4) enterprises(1) 3495 }

第一行的意思就是mib oid开头是怎么样子的,squid的全部是 .1.3.6.1.4.1.3495

 

nlanr OBJECT IDENTIFIER ::= { enterprises 3495 }

nlanr 代表前面那串

squid  一大串最后 ::= { nlanr 1 } 表示 squid  是 enterprises.3495.1

cacheSystem     OBJECT IDENTIFIER ::= { squid 1 }

表示 cacheSystem     是squid 后面的1。enterprises.3495.1.1

 

下面就是具体数据,比如squid->cacheSystem->cacheSysVMsize 是 .1.3.6.1.4.1.3495.1.1.1

        cacheSysVMsize OBJECT-TYPE
                SYNTAX Integer32
                MAX-ACCESS read-only
                STATUS current
                DESCRIPTION
                        ” Storage Mem size in KB ”
        ::= { cacheSystem 1 }

cacheSysVMsize 是 cacheSystem 下面的1

 

都有说明数值和类型。。。

然后用新版的net-snmp命令snmpget,协议版本用1和2c都可以,估计2c是向下兼容,3就不行。

squid默认的snmp端口是3401,udp方式,照写就好了。配置里面可以通过snmp_port改端口。

snmpget -v 2c -c topsecret udp:ip:port “.1.3.6.1.4.1.3495.1.1.1”

这样是get一个数值。

snmpwalk -v 2c -c topsecret udp:ip:port “.1.3.6.1.4.1.3495”

这样就可以把所有squid mibs都get出来了,然后具体分析就看模板怎么搞了,继续研究之。。。

或者可以把mib.txt复制都本机,或者snmp的mib模块目录,然后

snmpwalk -m “./mib.txt” -v 2c -c topsecret udp:ip:port “squid”

这样不用这么长,出来的数据的直观一点了。。。


Oct 08 2008

cacti/nagios/snmp

Category: 乱up当秘笈ssmax @ 19:30:23

最近要做cdn机组的监控,tmd这些机房没有完善的监控软件,竟然要自己做?很汗啊。

完全没有接触过,随便看了一下,好像snmp就是把简单问题复杂化,nagios是用cgi的,改起来太麻烦,cacti是php的,勉强过得去。。。慢慢看看吧。。。


Oct 07 2008

手艺

Category: 乱up当秘笈ssmax @ 13:12:09

中午去修主板串口,32核的那块,国内没有维修的。。。随便找了一下,很多家都说焊不了,找到一家全部都是电烙铁的,估计手艺不错,专业的,问,答曰没问题,两分钟立刻焊好,手不抖,焊出来还不错,手艺好啊。。。来回taxi都比维修费贵,还好老板出,不管,嘿嘿。。。


« Previous PageNext Page »