今天去新办公室半点事情,IT管新办公室叫 14SHA。
14SHA 和老办公室的环境差距还是蛮大的,用 Luey 的话说,就是差了10年。周围都是老民房。看似熙攘的金陵东路,其实也陈旧不堪。
唯一好的是,边上有个小公园,里面还有篮球场。多少能让人心情好点。
ubuntu
(1960 unread)
All things about ubuntu.
今天去新办公室半点事情,IT管新办公室叫 14SHA。
14SHA 和老办公室的环境差距还是蛮大的,用 Luey 的话说,就是差了10年。周围都是老民房。看似熙攘的金陵东路,其实也陈旧不堪。
唯一好的是,边上有个小公园,里面还有篮球场。多少能让人心情好点。
中午闲来无事,带着相机到公司周围转转。在摩比源的时日也不多了,看看这里也是一个黄金宝地了。中共一大会址、博物馆、时代广场、兰生影院、淮海公园……
多少算留个纪念吧。
中午转了转东台路-古玩街,滨湖路。
打开照片速度太慢?去Yupoo看看吧!
还有 Picasa!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/usr/bin/perl -w
$x=int rand(100);
$x++;
while (<>) {
if (/\d/) {
my $number=
($_==$x)?"correct.":
($_<$x)?"small":
($_>$x)?"biggerr": "unknow";
print "$number\n";
} else {
print "Please enter a number\n";
}
} |
公司两台服务器用RHCS做HA, 最近出了问题, HA状态显示failed。无奈重启node1后发现cman起不来,报错:
Oct 29 14:14:51 ccsd[5232]: Cluster is not quorate. Refusing connection.
Oct 29 14:14:51 ccsd[5232]: Error while processing connect: Connection refused
Oct 29 14:14:51 kernel: CMAN: sending membership request
fence进程也启动不了
查阅资料无数, 解决方法如下:
把node2上cluster进程全部关闭,然后依次重新启动服务,顺序如下
service rgmanager stop
service fenced stop
service cman stop
service ccsd stop
然后按相反的顺序启动service,即
node2上 service ccsd start
node1上 service ccsd start
node2上 service cman start
node1上 service cman start
………
………
总算干净了
本文记录一次 telnet email server 发邮件的过程。邮件排错中,通常用这种方式比较直观,同时更容易看到“返回信息”,来帮助管理员工作。对 email 发送的过程也可以有了解。
telnet a.b.c.d 25
Trying a.b.c.d…
Connected to a.b.c.d.
Escape character is ‘^]’.
220 XXX SMTP System
HELO localhost // 与服务器打招呼,并告知客户端使用的机器名字,可以随便填写
250 OK
AUTH LOGIN //使用身份认证登陆指令,如果这个指令返回“Send hello first”的错误,那么需要将上面的HELO改成EHLO重试登录
334 dXNlcm5hbWU6
casDsdezMw== //输入已经base64_encode()过的用户名. base64加密字符可以google一下,输入明文就可以得到加密后的字符串
334 UGFzc3dvcmQ6
MbSddwq3NQ== //输入已经base64_encode()过的密码
235 Authentication successful
MAIL FROM: test@test.com //告诉服务器发信人的地址,这里是test@test.com
250 Mail OK
RCPT TO: yourname@test.com//告诉服务器收信人的地址,这里是yourname@test.com
250 Mail OK
DATA //正面开始传输信件的内容,且最后要以只含有 . 的特殊行结束。
354 End data with .
To:yourname@test.com
From:test@test.com
Subject:test mail
test body
. //结束传输信件
QUIT //退出服务器
turn off indexing
edit httpd.conf file and locate the following line
Options Indexes FollowSymLinks MultiViews
Add a minus sign in front of the Indexes statement it should look like this when completed
Options -Indexes FollowSymLinks MultiViews
Apache banner
edit httpd.conf and change the value of servertokens as following:
ServerTokens Prod
Trace/Track :
edit httpd.conf and set as following:
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
Preventing Web-based Directory Enumeration Attacks
Customize a 404 page 404.html in documentroot directory,and add following in httpd.conf
ErrorDocument 404 /404.html
ErrorDocument 403 /404.html
ErrorDocument 500 /404.html
ErrorDocument 501 /404.html
SSL configuration
SSLEngine on
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!ADH:+SHA1:+MD5+HIGH:MEDIUM
SSLRequire %{SSL_CIPHER_USEKEYSIZE} >= 128
SSLCipherSuite HIGH:MEDIUM
Solve utf-7 vulnerability
There are several workarounds in Apache HTTP Server to dodge this particular vulnerability on your own sites, including
AddDefaultCharset ISO-8859-1
and by enabling multilanguage error docs (each translation with an explicit charset) by simply uncommenting this Include of the default httpd.conf file;
# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf
mod_security
Strong recommend to use mod_security to protect apache.
Please refer to this [www.modsecurity.org]
上周朋友给了一个 Cisco VPN 工具。通过导入 pcf 配置文件,连接到公司VPN服务器。用起来非常方便。而且 Cisco VPN 路由定义的非常好,有需要的地方才加路由,不像 Windows PPTP 服务器–一刀切。
但是我大多数的工作时间都呆在了 Arch Linux 下。如何在 Linux 下实现呢?VPNC 可以做到。
一、安装
pacman -S vpnc
二、配置
1. 配置文件结构
vpnc 只读取一个配置文件,第一个读取的是 /etc/vpnc/default.conf ,当此文件不可用时 /etc/vpnc.conf 成为了第二选择。
2. 配置文件内容
其基本内容如下:
IPSec gateway vpngateway.domain.org
IPSec ID group_id
IPSec secret group_password
Xauth username network_signon
Xauth password network_password
可能还会带有类似内容:
IKE Authmode psk
IKE DH Group dh2
ipsec 的加密方式之前已经讨论过了,相信这些字段不陌生。
配置描述:
IPSec gateway #VPN网关地址,可以是域名,可以是 IP。
IPSec ID #取个名字
IPSec secret #交换密钥
Xauth username #登录用户名
Xauth password #登录使用密码,如果配置文件不包含此字段,会在连接时请求输入。
3. PCF 文件的转换
Windows 环境下经常可以下载到 pcf 配置文件,vpnc 已经包含了 pcf2vpnc 工具。可以快速将 pcf 转换为 vpnc 配置文件。
pcf2vpnc pcffilename > /etc/vpnc.conf
三、 VPNC 连接
1. 模块加载
确定 tun 模块是否加载:
lsmod | grep tun
加载 tun 模块:
modprobe tun
查看 TUN 模块加载 dmesg 信息:
dmesg | grep TUN
tun: Universal TUN/TAP device driver, 1.6
当然,在这之前,你要确定 TUN 被编译成了模块,或者已经编译进了内核中:
Device Drivers —>
Networking support —>
[*] Universal TUN/TAP device driver support
2. 建立链接
sudo vpnc
建立此链接需要 root 权限。
3.断开链接
sudo vpnc-disconnect
四、查看链接信息
1. tun 设备
#ip add show
6: tun0: mtu 1412 qdisc pfifo_fast state UNKNOWN qlen 500
link/[65534]
inet 1.1.1.30/32 scope global tun0
2. 路由信息
#ip route show
63.149.188.150 via 172.16.5.1 dev eth0 src 172.16.5.2 mtu 1500 advmss 1460
172.16.21.10 dev tun0 scope link
172.16.21.11 dev tun0 scope link
192.168.6.0/24 dev tun0 scope link
1.1.75.0/24 dev tun0 scope link
172.16.5.0/24 dev eth0 proto kernel scope link src 172.16.5.2
192.168.3.0/24 dev tun0 scope link
192.168.50.0/24 dev tun0 scope link
172.16.150.0/24 dev vmnet8 proto kernel scope link src 172.16.150.1
192.168.2.0/24 dev tun0 scope link
172.16.0.0/24 dev tun0 scope link
192.168.15.0/24 dev tun0 scope link
192.168.12.0/24 dev tun0 scope link
192.168.27.0/24 dev vmnet1 proto kernel scope link src 192.168.27.1
10.80.0.0/16 dev tun0 scope link
10.2.0.0/16 dev tun0 scope link
10.3.0.0/16 dev tun0 scope link
172.24.0.0/16 dev tun0 scope link
10.16.0.0/16 dev tun0 scope link
10.32.0.0/16 dev tun0 scope link
10.55.0.0/16 dev tun0 scope link
10.101.0.0/16 dev tun0 scope link
10.6.0.0/16 dev tun0 scope link
172.30.0.0/16 dev tun0 scope link
10.100.0.0/16 dev tun0 scope link
10.102.0.0/16 dev tun0 scope link
172.18.0.0/16 dev tun0 scope link
172.19.0.0/16 dev tun0 scope link
172.16.0.0/16 dev tun0 scope link
172.17.0.0/16 dev tun0 scope link
172.22.0.0/16 dev tun0 scope link
172.20.0.0/16 dev tun0 scope link
172.21.0.0/16 dev tun0 scope link
default via 172.16.5.1 dev eth0
其他 unix 可以用 netstat -r 查看。话说我还是很佩服 Linux 的高级路由的。
可以清楚的看到,只有特定路由被定义到了 tun 设备上。
好了,基本的功能就介绍到这里。其他高级功能,比如按需自动拨号之类,网上搜搜也能搜到很多了。
本周做了一个jboss cluster,配置过程不说了,网上多的是,讲讲容易出现问题的地方:
1 jboss的监听地址一定要写网卡绑定的ip,要跟前端apache mod_jk配置中指定的ip一致,不要偷懒写0.0.0.0,否则出现问题的时候会让你抓狂。
2 jboss cluster最好取个名字,不要使用默认的,否则同网段其他jboss的服务器也可能会加入进来,带来麻烦。
自定义名字也很简单,只需要在jboss启动脚本中加入“-Djboss.partition.name=yourcluster”, yourcluster改成你要的名字。
朋友那里有两台 Sun Fire T2000G 的小型机出了问题,本来想去帮忙做排错的。但是去了以后,为了赶时间,系统就直接重装了。之后一天就在弄 zone 和 zfs。晚上还遇到了一点 NIS 客户端的问题。开篇文章总结一点内容。
一、 Zone
Zone 是 Solaris 中的虚拟机系统。这个虚拟机系统和 VMware 之流看起来不太一样。其更像 chroot 的感觉。但是 Solaris 加工之后,可以对这种概念的虚拟机进行资源重新分配,比如:内存、CPU、网卡配置。这样就大大方便了使用。而且效率还非常高。用过 chroot 的都知道,大家一般是将宿主机很多环境参数直接赋予虚拟 chroot。
以下是一些参考文档:
How to Configure the Zone –此文可以完成 zone 虚拟机的一般配置,但不是所有配置都需要参考里面的。
其中 Dataset 和 special 等参数的设定都是非必须的。可以根据 Using ZFS on a Solaris System With Zones Installed 一文来做写改动。
而设置了 ncpus=1-2 之后,由于虚拟机会动态调用 CPU 资源,需要参考 Enabling and Disabling the Pools Facility 一文来对 system/pools/dynamic 服务进行调整。
另外,在 net 配置中还有 exclusive 和 shared 的概念。参考 Security Differences Between Shared-IP and Exclusive-IP Non-Global Zones 一文可以帮助理清概念。(我自己还没弄清楚)
在我昨天的配置中 exclusive 无法通过 verify。
二、ZFS
最初认识 ZFS 的概念是从 OpenSolaris新特性解析之二:ZFS 一文了解的。给我的基本概念是 ZFS 是 LVM 的更底层、全面的实现。ZFS 本身已经包含了文件系统,硬盘管理这两个任务。而 LVM 只完成了硬盘、分区管理这一块。
ZFS 的配置很简单,弄个 ZFS 存储池,甚至不分区就可以开始用了。这个看看上面给的文章就能搞定了。
三、NIS
NIS 还没有系统的学习,只记录昨天遇到的一个问题。
Q:当用户登陆到主机之后,/home/ 目录无法挂载用户在 NIS 服务器上的目录。查看日志能看到含有“Not Ownner”之类的字段。
A:(Vincent 邮件原文)
We need to configure the file “nfs” under /etc/default/ and set NFS_CLIENT_VERSMAX=3 Because the Solaris’s default version is 4 and our nis server is 3 .They do not match . So the automount does not work.
谢谢 Vincent 兄弟给的机会,很少能接触到 Sparc 小型机。
日志里面没有给出大段大段的配置文件,那是因为 Sun 的文档已经写的比较全了。大家可以在,Solaris Express System Administrator Collection 找到很多文档。PDF 也整理的很漂亮。
等系统学习了 NIS 之后,如果有需要会再写一篇文档。
又是好久没看 Perl 了,本来就没学多少东西。这下都忘记了,还得重头看一遍。先把第七章自己写的答案贴上来。
7.1
1 2 3 4 5 6 7 | #!/usr/bin/perl -w
while ( <> ) {
if ( /fred/ ){
print $_;
}
} |
7.2
1 2 3 4 5 6 7 | #!/usr/bin/perl -w
while ( <> ) {
if ( /fred|Fred/ ){
print $_;
}
} |
7.3
1 2 3 4 5 6 7 | #!/usr/bin/perl -w
while ( <> ) {
if ( /\./ ){
print $_;
}
} |
7.4
1 2 3 4 5 6 7 | #!/usr/bin/perl -w
while ( <> ) {
if ( /[[A-Z][a-z]/ ){
print $_;
}
} |
7.5
1 2 3 4 5 6 7 8 9 | #!/usr/bin/perl -w
while (<>) {
if (/wilma/) {
if ( /fred/ ) {
print $_;
}
}
} |