有时候,一台机器有多个IP,然后你希望每次可以用指定的某个IP访问外面的网络服务。我也碰到一个同样的需求,在网上找到Daniel Ryde写的一个程序,分享给大家:
编译安装 链接库

wget -O bind.c http://www.ryde.net/code/bind.c.txt
gcc -nostartfiles -fpic -shared bind.c -o bind.so -ldl -D_GNU_SOURCE
strip bind.so
cp -i bind.so /usr/lib/

使用办法:

BIND_ADDR="222.73.1.3" LD_PRELOAD=/usr/lib/bind.so curl http://www.whatismyip.org/

222.73.1.3 必须是你机器绑定的IP地址

为了测试百度蜘蛛的勤劳程度,昨天做了一个测试。新申请一个域名,将网站设置好后,到一个百度爬的比较快的网站加了一条链接。
链接是在傍晚18:11加上的,18:20,百度蜘蛛来了,而且一爬就是源源不断的,大概以5秒一次的频率在抓取网页。今天早上到百度搜索,发现网站首页已经被收录了。百度蜘蛛2.0估计有了突破性的性能提升,能够以更快的速度抓取网站,百度的搜索技术估计在容量上也大大提升了。按以前的做法,百度基本都要1个星期才能收录新站的,而且只是抓取首页。

上周一个朋友和我说,他们的网站无法访问了。仔细一问,原来他们的域名备案刚被注销了,机房有白名单,没备案的域名无法访问。
朋友的服务器是自己购买的,托管在广东一家机房,已经付了一年费用,才刚过几个月。他们的网站数据库比较庞大,程序写的又比较烂,一般的服务器跑起来非常慢,备案花费时间据说2个星期到2个月都有可能。大家讨论了几个方案:
一. 干脆搬到国外去,不鸟这个备案了。 缺点:服务器是新买的,托管费也是才交了没几个月,这样子亏大了,他们也不是有钱的人。优点:以后都可以不用管TG的备案了。
二. 注册一个临时域名,将站搬到国外服务器,主域名继续留在国内备案。 缺点:能顺畅运行他们网站的服务器,月租大概要一千元,还是有点贵,网站数据需来回同步。优点:花费比方案一少。
三. 注册一个临时域名,购买一个VPS,通过反向代理方式访问。 缺点: 速度会比较慢,得绕地球一个来回呢。 优点:花费少,对国内速度较好的 linode vps 每月只要130出头。数据不用迁移。

最后大家讨论的结果是使用方案三先测试。

介绍一下环境:
国内服务器: Centos 5.0 32位, nginx 7.x + php 5.2.x 硬件: Cpu Xeon X34xx, 8G 内存 (对于32位系统,容我吐槽一下,安装配置操作系统的人真是天才啊)
国外VPS: Debian 6 64位 , nginx 7.x 硬件: cpu 是Xeon L5520 共享, 512M 内存

做法:
一. 两边服务器都安装openvpn, 建立VPN加密连接。 如果不会,请去Google ,应该有很多文档
二. 在国内服务器上配置nginx:
nginx.conf 的http 部分,增加两行, 10.10.8.0/24 是openvpn使用的IP范围,
set_real_ip_from 10.10.8.0/24;
real_ip_header X-Real-IP

虚拟主机配置上,增加新申请的临时域名
在这里,如果nginx抱怨 set_real_ip_from 是非法的配置,请重新编译你的nginx,加上选项 –with-http_realip_module

三.在国外的vps配置nginx

创建 /var/cache/nginx 目录,权限设为777
在nginx.conf 的http 部分,增加一行
proxy_cache_path /var/cache/nginx levels=2:2 keys_zone=one:100m max_size=5G;
创建一个虚拟主机配置,下面是例子:

server {
listen 80;
server_name newdomain.com www.newdomain.com;
access_log /var/log/nginx/newdomain.com.log;
root /var/www/default;
index index.html index.htm ;

location / {
proxy_pass http://10.10.8.1:80;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
}

location ~ .*\.(ico|png|jpg|gif|css|js)?$ {

proxy_cache one;
proxy_pass http://10.10.8.1:80;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_valid 200 304 60m;
proxy_cache_valid 404 1m;

}

}

newdomain.com 是新申请的域名,对于一些不会经常改动的文件,如图片文件,js文件,css文件,我设了让它缓存60分钟,以减少带宽消耗,加快用户速度。 10.10.8.1 是国内服务器的vpn ip。
经过测试,这个方案运作还算不错,除了速度比以前慢,其它表现完全一致。
最后就是一个收尾工作,将原来网站上,使用老域名的绝对连接改为相对连接。
可以将老域名也指到国外服务器上,发个公告通知用户,过几天再将老域名指回国内服务器,申请备案。
备案下来就可以启用老域名了,所有数据都一模一样。

http://www.baidu.com/search/spider.htm

百度网页搜索spider的User-Agent字段内容近期将更新,请网站管理员关注,谢谢!
更换时间:
2011年5月10日

更换内容:
baiduspider在爬取网页时,发送请求的User-Agent字段内容将更新。
目前的字段内容是
Baiduspider+(+http://www.baidu.com/search/spider.htm)
更换后的字段内容是
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)

更换后您需要做什么:
如果您已在robots文件中封禁了百度网页搜索的User-Agent,本次更新不会产生任何影响,也无需修改robots文件。
如果您此前主动在服务器端封禁了百度网页搜索的User-Agent,那么建议修改服务器端要封禁的User-Agent字段,或者更换为robots封禁。
如果还有其他问题,请通过投诉中心联系百度 http://tousu.baidu.com/

老婆说要听听新歌,让把百度mp3 新歌TOP 100下载下来。为了节省劳动,网上找了一圈,发现里面好了好几个下载mp3的小程序。
不过由于百度经常修改页面代码和js加密,结果没一个可用的,于是在 http://code.google.com/p/getsong/ 基础上,修改了一下解析代码,弄了一个可用的版本。谁有需要下载百度新歌的可以下载试试。反正在2011-03-11 这个时间点是可用的。
使用方式:
下载新歌100: python getsong.py -1
下载新歌500: python getsong.py -5

程序下载链接:getsong

有时候,linux 由于硬盘或者其它原因,某个进程挂住了,怎么也杀不死,输入 reboot 命令也无法重启。这时候,一般只能按机箱上的reset健来重启了。 如果是远程ssh,那怎么办呢? 下面两行命令可以搞定:
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger

昨天注册了一个goddady 促销的一刀域名,每个信用卡仅限一个,今天拿来做了测试站。

lightwave.net是美国Sanjose的一家小型IDC,提供服务器、vps租用。半个月前申请了他们家的xen tiny vps,过了几天升级到xen small,感觉这家公司提供的产品性价比不错,向大家推荐下,优点如下:
1. 机房位于美国西海岸的Sanjose,接入HE机房带宽,是对国内速度最好的美国机房之一
2. 8个磁盘做的RAID10, IO性能和可靠性都很好
3. 可以使用到8个CPU核心(这家用的是2颗AMD 4核CPU)
4. 磁盘和带宽给的都比较充裕,比Linode的实惠,实际使用性能和Linode 机器接近。
其中最便宜的Xen Tiny配置如下:
256 MB Dedicated Memory
512 MB swap
20 GB Disk
400 GB Transfer
1 Static IPv4 Address
SolusVM Control Panel

如果碰到一个小硬盘空间的vps,然后你有不少的文本文件,可以用fusecompress 来节省空间

fusecompress -o fc_c:lzo,allow_other /home/zipdir /mnt/zip

exFAT(Extended File Allocation Table File System,扩展FAT,即扩展文件分配表)是Microsoft在Windows Embeded 5.0以上(包括Windows CE 5.0、6.0、Windows Mobile5、6、6.1)中引入的一种适合于闪存的文件系统,为了解决FAT32等不支持4G及其更大的文件而推出。对于闪存,NTFS文件系统不适合使用,exFAT更为适用。详细的介绍可以看Wiki上的介绍。目前,Linux已经支持exFat的读写
在Debian 下可以很方便的安装这个补丁,实现对exfat格式的读写。

  1. apt-get install scons  libfuse-dev subversion
  2. svn co http://exfat.googlecode.com/svn/trunk/ exfat-read-only
  3. cd exfat-read-only
  4. scons
  5. scons install

使用:
mount -t exfat-fuse -o allow_other /dev/sdc1 /mnt/

已经留级一天了,本周再不出来就会被关到小房间的啊

现在换到了linode,不受和谐的困扰

Question:
Nat + Squid Server Error:
ip_conntrack: table full, dropping packet.
Solution:

把这个文档里的参数:/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
调小一些,默认是5天,太长了,减少到一个小时,假如网上有病毒,一会conntrack table就满了

但是,2.6内核才有./ netfilter/ip_conntrack_tcp_timeout_established这个文档(uname ?r查看内核版本)2.4及以下kernel里应该没有这个文档,需要重新编译kernel到2.6以上才会有这个文档。

nc 和socat
这两篇文章挺有用的。
通过ssh隧道进行udp转发
socat帮助手册

从Debian 3.1 到 5.0 ,远程ssh 升级,祈祷成功!
不想跑机房去…

update:
升级果然还是出问题了,但是幸好不用跑机房去。升级过程还是比较简单的.
1. 更改 /etc/apt/sources.list 的sarge 为 etch
2. apt-get update ; apt-get dist-upgrade. 完成后再进行一次 apt-get dist-upgrade。
3. 更改 /etc/apt/sources.list 的 etch 为 lenny
4. 重复 2
5. 发现内核没了. 于是 apt-get install linux-image-2.6 。

服务器硬件唯一特别的就是插了一块scsi卡,系统安装在 scsi硬盘上, 另外还有一个ide硬盘做数据备份。
原来的内核是2.6.8, grub的启动分区是 hd1,0 。 安装手册有提到新系统有可能设备编号会改变,我多了个心眼,在 /boot/grub/menu.lst 里面增加了一个启动选项,指向 hd0,0。
重启.. 等了5分钟后,还是没起来。找托管商,结果发现网管不知机房里。2小时后网管终于到机房里,让他接上显示器,选择最后一个启动选项,终于起来了… 赶紧修改 menu.lst,将hd1,0 都改成 hd0,0,重启一次,这次顺利启动了..

然后就是一些收尾工作,php-mysql 没了,安装。proftpd的配置文件有些改动,再改改。
这两天服务器都很正常,升级还算比较顺利。

下一页 »