HostMonkey:$10 256MB OpenVZ VPS

hostmonkey

HostMonkey 的一个创办人也是去年我们介绍的 Nixism 的创办人,后来 Nixism 卖给了 HostDime,对于一家 one man 服务商来说能被 HostDime 这种 Hosting 公司收购算是不错的结局,至少没有跑路,如果客户能最后被妥善安置就更好了。他们的服务器还放在 Orlando FL 的 HostDime,难道没有什么竞争收购者间的停止竞争协议什么的么?把 VPS 业务卖给了 HostDime,然后回过头来在 HostDime 租用服务器继续卖 VPS?他们的 VPS 使用 SolusVM 控制面板。现在他们在 WHT 上有活动,128MB VPS 只要5美元,能提供 24/7/365 在线技术支持。虽然这是家很新的服务商(域名今年4月才注册),但是考虑到创办人多年的技术积累和行业经验,应该还是值得信赖的。虽然 10美元的 256 OpenVZ 有点小贵,可是这个行业就是一分钱一分货(所有行业其实都一样),运气好的话一分钱可以买到一分货,运气不好一分钱只能买到半分货或者花了一分钱受了一肚子气。VPS 配置如下:

256MB RAM
356MB Burst
20GB 硬盘
100GB 流量
2个 IP
10美元

服务器硬件配置信息:

Dual Quad Core Intel(R) Xeon(R) CPU E5410 @ 2.33GHz, 8 GB of DDR system RAM, 100 Mbps Ports

用 iptables 屏蔽来自某个国家的 IP

星期六我们一位客户受到攻击,我们的网络监测显示有连续6小时的巨大异常流量,我们立即联系了客户,没有得到回应,我们修改和限制了客户的 VPS,使得个别 VPS 受攻击不会对整个服务器和其他 VPS 用户造成任何影响,我们一直保持这个 VPS 为开通状态(尽管一直受攻击),攻击又持续了24小时,星期天攻击仍在继续,我们忍无可忍,但是仍然无法联系到客户,我们向客户网站的另一负责人询问是否需要我们介入来帮助解决,这位负责人答应后我们立即投入到与 DDoS 的战斗中(我们动态扫描屏蔽坏 IP,现在客户网站已恢复。整个过程很有意思,以后有时间再写一篇博客来描述)。登录到客户 VPS 第一件事情就是查当前连接和 IP,来自中国的大量 IP 不断侵占80端口,典型的 DDoS. 所以第一件事是切断攻击源,既然攻击只攻80端口,那有很多办法可以切断,直接关闭网站服务器、直接用防火墙/iptables 切断80端口或者关闭所有连接、把 VPS 网络关掉、换一个 IP,⋯,等等。因为攻击源在国内,所以我们决定切断来自国内的所有访问,这样看上去网站好像是被墙了而不是被攻击了,有助于维护客户网站的光辉形象:D,那么如何屏蔽来自某个特定国家的 IP 呢?

方法很容易,先到 IPdeny 下载以国家代码编制好的 IP 地址列表,比如下载 cn.zone:

# wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone

有了国家的所有 IP 地址,要想屏蔽这些 IP 就很容易了,直接写个脚本逐行读取 cn.zone 文件并加入到 iptables 中:

#!/bin/bash
# Block traffic from a specific country
# written by vpsee.com

COUNTRY="cn"
IPTABLES=/sbin/iptables
EGREP=/bin/egrep

if [ "$(id -u)" != "0" ]; then
   echo "you must be root" 1>&2
   exit 1
fi

resetrules() {
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
}

resetrules

for c in $COUNTRY
do
        country_file=$c.zone

        IPS=$($EGREP -v "^#|^$" $country_file)
        for ip in $IPS
        do
           echo "blocking $ip"
           $IPTABLES -A INPUT -s $ip -j DROP
        done
done

exit 0

好 IP 和坏 IP 都被屏蔽掉了,这种办法当然不高明,屏蔽 IP 也没有解决被攻击的问题,但是是解决问题的第一步,屏蔽了攻击源以后我们才有带宽、时间和心情去检查 VPS 的安全问题。公布一份我们客户被攻击的网络流量图,在18点到0点所有带宽都被攻击流量占用,这时候客户无法登录 VPS,访问者也无法访问网站:

ddos

UK-VPS:£3.5 128MB Xen/OpenVZ VPS

uk-vps

UK-VPS 一看就知道来自英国,母公司是 Switchlink,而 Switchlink 的母公司是 Britbank Media Limited. 他们的机房在英国的曼彻斯特和美国的达拉斯,作为 VPS hosting 服务商他们的官方网站却放在另外一个 hosting 服务商 Servage 的共享主机上面。如果自己不敢把网站放在自己的 VPS 上面,别人敢不?他们的母公司的母公司号称有 “Over 5 Years of business trading” 的经验。他们提供 Xen HVM 和 OpenVZ 的 VPS,并同时支持32位和64位的系统,在他们官网的介绍上他们甚至把 OpenVZ 虚拟技术理解错了 “using the Xen Hypervisor and OpenVZ Para-Virtualization.” OpenVZ 不是用的 para-virtualization 技术,不应该分类到半虚拟化,这个好像不是笔误。值得称赞的是他们 UK 的机器用的都是 Dell PowerEdge 服务器,采用 RAID 10 存储方案。VPS 配置如下:

VPS Tiny VPS 500
128MB RAM 256MB RAM
5GB 硬盘 10GB 硬盘
100GB 流量 350GB 流量
1 IP 1 IP
3.50英镑 5.99英镑

服务器硬件配置信息:

All of our UK VPS operate on Enterprise Grade Dell PowerEdge Servers using only the highes specification technology.

HostRail:$7.99 128MB OpenVZ VPS

hostrail

HostRail 和我们以前介绍的 Mrwebserver 好像是一家的,从 Mrwebserver 网站的 VPS 链接进去就连到 HostRail,也许是被收购了。他们的公司是私人持有的,创立于2004年,为个人和企业提供托管方案。他们的数据中心在 Dallas 和 Chicago,官方网站托管在 Dallas 的 Limestone Network,服务器也有部分在 Limestone Network,公司在 Phoenix,Phoenix 也有一些不错的机房为什么他们要舍近求远呢?HostRail 网站的导航太让人迷糊了,上面、右面、下面都是导航,中间内容还有一些链接,不知道都链到哪。VPSee 下午1:37(Phoenix 时间)测试他们的 Live Chat 没人回应,长时间 Offline 状态。要注意的是这款 OpenVZ VPS 没有 burst 内存,128MB 用完就可能会挂掉。VPS 配置如下:

0.3 Ghz CPU
128MB RAM
30GB 硬盘
200GB 流量
1个 IP
7.99美元

没有服务器配置信息。

1GB 的 VPS 只有 727MB?

上周六我们一位客户报告了一个奇怪的问题,他在我们这里购买的 1024MB 内存的 VPS 只有 727MB,我们立即检查了 Xen 服务器上的配置和他的 VPS 运行情况,没有发现问题,他的 Xen VPS 配置文件以及 Xen 工具都是显示的是他有 1024MB 内存,客户发来了截图,并且给了我们 root 密码,我们登录进去看到客户的 VPS 确实只有 727MB,更奇怪的是我们可以通过动态调整来减少这个 VPS 的内存到 512MB,但是不能加到 1024MB,总是在 727MB 这个地方就加不上去了。我们服务器上有足够的内存,我们检查了各种 Xen 配置文件和 Xen 的日志,没有发现任何异常,Xen 技术已经相当成熟,如果是 bug 的话,应该早就有人遇到和解决了,所以我们估计和客户的系统有关。

这是一个很有意思的问题,VPSee 很想弄明白怎么回事,但是又不能不停的重启客户的 VPS 来测试,也没办法在自己机器上重现。这个时候客户给了我们一条重要的提示信息,他自己编译过 Linux 内核。和其他 VPS 服务商采用公共的内核不同,我们的 VPS 支持用户自己定义和编译内核。我们开始怀疑客户编译内核的时候某些选项弄错了,我们让客户发来他编译内核时用到的配置选项,他自己编译和使用的是64位的内核,而我们提供的 Linux VPS 是32位的,刚开始简单怀疑是32位程序使用64位内核的问题,可能部分32位程序调用64位内核提供的64位系统调用的时候出的问题。不过这个说法说不过去,因为64位是向下兼容的,运行大部分32位程序应该没问题(反过来32位内核运行64位程序就不一定了,因为64位程序指针会被32位内核截断成32位可能造成程序错误)。

周日下午连上服务器新建了一个 1024MB Arch Linux VPS,VPS 正常显示的是 1024MB,没有问题,按照客户的说明和这篇:在 ArchLinux VPS 上编译内核 提供的默认内核配置文件编译后,问题来了,启动系统后果然内存只有 727MB,打印内核信息只看到 727MB 内存:

# dmesg | more
...
last_pfn = 0x40000 max_arch_pfn = 0x1000000
Warning only 727MB will be used.
Use a HIGHMEM enabled kernel.
...

估计就是内核配置低端内存 LOWMEM 限制的问题,找到问题就好办了,检查默认的内核配置文件发现没有启用 HIGHMEM(CONFIG_NOHIGHMEM=y):

# vi kernel26-xen/config
...
CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_X86_PAE=y
...

把上面的相关部分改成下面的配置就可以了:

# vi kernel26-xen/config
...
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
CONFIG_X86_PAE=y
...

重新编译安装内核并加入到 grub,最后重启系统登录后就会看到 1024MB 内存回来了:

# makepkg --asroot
# pacman -U kernel26-xen-2.6.34.1-1-i686.pkg.tar.xz
# pacman -U kernel26-xen-headers-2.6.34.1-1-i686.pkg.tar.xz

# vi /boot/grub/menu.lst
...
timeout 5
default 0

title Xen for ArchLinux (VPSee)
root (hd0,0)
kernel /boot/vmlinuz26-xen root=/dev/xvda1 ro console=/dev/xvc0
initrd /boot/kernel26-xen.img
...

# reboot

谢谢我们的客户给我们提供充分的信息和截图帮助我们找到和解决问题,也很感谢客户对我们的信任、遇到问题及时向我们反映而不是猜测和抱怨,不了解的人还以为我们在忽悠人呢。

什么吃掉了我的硬盘?

经常收到我们的 VPS 用户询问,“我的 VPS 没装新东西,为什么硬盘越用越少了?”,这多半是因为系统上的各种日志长期积累下来的结果,比如 nginx, apache 等留下来的访问日志信息长时间不清理、而且访问量大的话会很容易就膨胀到 GB;有时候某种应用程序的日志藏在文件系统的深处,不易发觉;有时候自己拷贝了一些大文件放在某个地方时间长了就忘了。那么如何在 Linux 系统上找到这些占用硬盘空间的文件呢?

首先我们可以统计一下根目录下各个目录占用硬盘的情况,找出最占用硬盘的那个目录:

# du -sh /*
6.2M	/bin
17M	/boot
136K	/dev
97M	/etc
147G	/home
584M	/lib
16M	/lib64
16K	/lost+found
8.0K	/media
12K	/mnt
252K	/opt
0	/proc
1.7G	/root
28M	/sbin
8.0K	/selinux
3.1M	/srv
0	/sys
20K	/tmp
1.9G	/usr
748M	/var

从上面可看出 /home 占用了最多的硬盘,我们去看看 /home 下哪些用户占用了最多的空间:

# du -sh /home/*
4.0K	/home/bak
106M	/home/cos
28K	/home/guest
16K	/home/lost+found
105G	/home/vpsee
33G	/home/somebody
8.2G	/home/abc

可以看到 vpsee 这个用户和他的 home 目录 /home/vpsee 用掉了最多的硬盘(105GB),我们再看看 /home/vpsee 下究竟哪些文件占用了空间,用下面的一行命令找出某个目录下(这里是 /home/vpsee)大小超过 500MB 的文件(打印前40行并按照 MB 从小到大排列):

# find /home/vpsee -printf "%k %p\n" | sort -g -k 1,1 | \
awk '{if($1 > 500000) print $1/1024 "MB" " " $2 }' |tail -n 40

647.68MB  /home/vpsee/linux/debian-504-amd64-CD-1.iso
675.664MB /home/vpsee/linux/Fedora-13-i686-Live.iso
677.656MB /home/vpsee/unix/osol-0906-x86.iso
678.172MB /home/vpsee/linux/ubuntu-10.04-server-amd64.iso
700.133MB /home/vpsee/linux/ubuntu-10.04-desktop-i386.iso
1304.64MB /home/vpsee/mac/MacTeX.mpkg.zip

可以看到 /home/vpsee 是个 iso 收藏狂,收了一堆 Linxu ISO 安装文件,以前拨号上网时代大家都喜欢收集一些软件和工具存在硬盘里,现在网络这么发达,这些旧习惯已经没必要了,ISO 文件可有可无,需要的时候就去下一个最新的,用不着自己保留,网络就是我们的硬盘。

node40:£4 128MB Xen VPS

node40

node40 是今年5月才开始的一家英国服务商,是 Leicestershire 的一家叫做 Red-Core.NET 的网络服务提供商的 hosting 部门。他们的服务器机房在英国的 Maidenhead. 欧洲的 hosting 服务商有个毛病就是慢,和欧洲的整个气氛很合拍,回复 ticket 又慢,遇到个下午茶估计客户的 ticket 都可以丢在一边。值得赞的是他们的硬件采用的都是 DELL 服务器,个人觉得对于一家新来的服务商来说,把这种昂贵的品牌服务器拿来提供低价 VPS 不是个好主意,高昂的成本带来极低的回报,这种做法将很难撑过过渡期,熬不过头一年的话跑路的概率很高。这家服务商创业不到3个月,网上的评论和 review 几乎没有。他们的 VPS 采用 Xen 虚拟技术,具体配置如下:

128MB RAM
10GB 硬盘
150GB 流量
1个 IP
4英镑(约6.35美元)

服务器硬件配置信息:

Running on Dell Dual AMD Processors Server, running RAID 1:
CPU #1: AMD Opteron 2200 @ 2.8GHz (2 Cores)
CPU #2: AMD Opteron 2200 @ 2.8GHz (2 Cores)
Installed Memory: 12GB of RAM DDR 667HMz SDRAM
Raid: Raid 1 – Mirror
HDD #1: Samsung EcoGreen F2 1TB Hard Drive SATAII 32MB Cache 7.2K
HDD #2: Samsung EcoGreen F2 1TB Hard Drive SATAII 32MB Cache 7.2k

在 NetBSD 上安装和配置 OpenVPN

关于 OpenVPN 在 Linux 上的安装配置都写烂了,搜索一下到处都有,但是 NetBSD 上的资料并不多,VPSee 在这里简单记录一下在 NetBSD 上配置 OpenVPN 的过程,步骤和流程都是和 Linux 一样的,只不过具体操作的细节不同,相信我们的客户和熟悉 Linux 上 OpenVPN 的朋友能很快用我们的 64MB NetBSD VPS 架设一台经济实惠的个人用 OpenVPN 服务器出来。以下步骤在我们的 NetBSD VPS 上执行通过:

安装 OpenVPN Server

源码安装 OpenVPN 服务器(如果自己 /usr/ 下没有 pkgsrc 这个目录的话参考这篇文章:下载 pkgsrc 去下载解压一个):

# cd /usr/pkgsrc/net/openvpn
# make install clean clean-depends

拷贝 openvpn 启动配置文件到 NetBSD 的启动配置目录下,然后编辑 /etc/rc.conf 以便系统启动的时候自动运行 NetBSD:

# cp  /usr/pkg/share/examples/rc.d/openvpn /etc/rc.d

# vi /etc/rc.conf 
openvpn=YES

拷贝创建认证需要的一些脚本到 openvpn 的配置目录:

# cp /usr/pkg/share/openvpn/easy-rsa/* /usr/pkg/etc/openvpn/

给 vars 文件加写权限,然后做一些必要的编辑和定制:

# chmod +w /usr/pkg/etc/openvpn/vars
# vi /usr/pkg/etc/openvpn/vars

因为 vars 脚本需要 bash 才能运行,所以要先在 NetBSD 上安装 bash:

# cd /usr/pkgsrc/shells/bash2
# make install clean clean-depends

安装完 bash 后切入到 bash shell,然后运行:

# bash
bash-2.05b# source /usr/pkg/etc/openvpn/vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/pkg/etc/openvpn/keys

现在开始创建 certificate authority (CA):

# cd /usr/pkg/etc/openvpn/
# ./build-ca

给服务器创建 certificates 和 private key:

# ./build-key-server server

给客户端创建 keys:

# ./build-key client

创建 Diffie Hellman 密钥,Diffie–Hellman 是一种安全协议,可让双方在没有任何对方预先信息的条件下通过不安全隧道创建一个密钥,并且这个密钥可用在后续的通讯中来加密通讯内容。OpenVPN 必须要 Diffie Hellman 密钥:

# ./build-dh

拷贝 OpenVPN Server 的样例配置文件到 openvpn 的配置文件目录(如果客户端不幸需要通过 http 代理访问 openvpn server 的话,可以在 server.conf 做一些设置,具体看:用代理连接 OpenVPN 的问题):

# cp /usr/pkg/share/examples/openvpn/config/server.conf /usr/pkg/etc/openvpn/

启动 OpenVPN 服务器,首次启动出错是因为没有找到 dh1024.pem 文件,把 dh1024.pem 等文件从 /usr/pkg/etc/openvpn/keys 里拷到上级目录后再次启动就成功了:

# /etc/rc.d/openvpn start
Starting openvpn.
Aug  4 20:20:19  openvpn[1266]: Cannot open dh1024.pem for DH parameters: error:02001002:system library:fopen:No such file or directory: error:2006D080:BIO routines:BIO_new_file:no such file

# mv /usr/pkg/etc/openvpn/keys/* /usr/pkg/etc/openvpn/

# /etc/rc.d/openvpn start
Starting openvpn.
add net 10.8.0.0: gateway 10.8.0.2

查看 OpenVPN 服务器正常启动后是否生成 tun 设备:

# ifconfig -a
tun0: flags=8051 mtu 1500
        inet 10.8.0.1 -> 10.8.0.2 netmask 0xffffffff
        inet6 fe80::216:3eff:fe55:4f16%tun0 ->  prefixlen 64 scopeid 0x3

在内核打开 IP 转发功能,并把 IP 转发写到启动文件:

# sysctl -w net.inet.ip.forwarding=1

# vi /etc/sysctl.conf
net.inet.ip.forwarding=1

安装 OpenVPN Client

OpenVPN 客户端软件有多种、有支持 Linux, MacOS X 和 Windows 的、有图形界面的、也有命令行的,根据自己系统和喜好挑一个客户端,在 Mac 上 VPSee 推荐开源的 Tunnelblick,不同客户端的配置都差不多,主要是把服务器上的 ca.crt, client.crt, .csr, .key 等文件拷到客户端,然后调整一下客户端的配置以连接上服务器。

连接测试

连接后就会在客户端的日志看到类似这样的成功连接信息:

tunnelblick

GarmanOnline:$3.5 64MB OpenVZ VPS

garmanonline

Garman Online 的域名是2008年注册的,创办人 Patrick 不是科班出身,自学了网页设计,用草根站长的话说就是 “搞网站的”,然后现在做起了 hosting/IDC,数据中心/机房在佛罗里达的 Orlando 和华盛顿 DC,其中佛罗里达的服务器放在 DimeNOC,也就是 HostDime,顺便提一下 HostDime,这是佛罗里达最有名的一家 Hosting 服务公司,业务涉及 web hosting, vps, dedicated, colocation 等。Garman Online 的 VPS 价格很实在,3.5美元 64MB 30GB 流量,没有超售的意思,看 Patrick 的照片就知道是个老实人,玩 OpenVZ 不超售就没有意义了,在保持服务器整体性能的情况下适当的超售是可以的,有助于提高服务器的整体效率。如果有人有兴趣在 WHT 或个人网站上 review 他们的话,他们会送10美元小费:Please send us a link to any reviews you post to either your personal site or at a community like WebHostingTalk and we will send you your $10. 呵呵,不知道小费能坚持多久~~要注意的是,因为是 OpenVZ,所以 burst 内存一用完就可能会挂。VPS 配置如下:

VPS1 VPS2
64MB RAM 128MB RAM
128MB Burst 256MB Burst
3GB 硬盘 5GB 硬盘
30GB 流量 50GB 流量
1 IP 1 IP
3.5美元 5美元

服务器硬件配置信息:

Processor: Dual Intel Xeon

YDGH:$5 512MB OpenVZ VPS

ydgh

YDGH 在2008年开始做共享主机,2009年2月注册这个域名开始提供 VPS, dedicated server 等其他 hosting 业务。他们的 VPS 采用 OpenVZ 虚拟技术和 vePortal 控制面板,问题是他们的配置中都没有提供 burst 内存,不知道用户使用过量内存后是否会立即挂掉。他们的服务器租用的是 colo4dallas 的硬件,数据中心在 Dallas. 他们的服务条款(TOS)上有这么一条很雷人:All sites are restricted to a usage of 30% over 60 seconds total load on our processers, memory, disk at any one time including disk space. Sites exceeding our load limit will be temporarily banned, notified, and given a chance to correct load issues. 这么严格限制 CPU 和资源?这不是共享主机的风格么?这也是大多数人不喜欢 OpenVZ 的原因,OpenVZ 只能在操作系统层隔离,不能像 Xen/VMware 那样的 hypervisor 做到硬件层的隔离,所以 OpenVZ 管理员能对用户的 VPS 做更多的控制和限制。他们家提供 27×7 的服务和30天退款保障。VPS 配置如下:

VPS1 VPS2
512MB RAM 1024MB RAM
20GB 硬盘 40GB 硬盘
1000GB 流量 1000GB 流量
2 IPs 2 IPs
5美元 9.88美元

没有服务器配置信息。