So Tired !_! 逆水行舟, 不进则退!

8Feb/11

解决godaddy的windows vps timezone设置后自动还原的问题

Posted by Nick Xu

godaddy上的vps怎么设置系统时间都无效,过几分钟就自动设置回原本的-7小时的时差,这个问题还挺严重的.估计是VPS自动同步母机的时间了.

参考老外的一些文章,找到了解决方案:)

其实很简单,只要几个步骤即可解决时间问题.

1.打开注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones,为了安全起见,我们还是先备份一下,右键Time Zones,选择export,自己命名保存一份.

2.以中国时间为例,把Time Zones下面的子目录除了China Standard Time,其它的全都删了,如图:

3.删除注册表后,关闭注册表编辑器.然后去设置系统时区,应该只有一个时区可以选择(UTC +08:00) Bejing, Chongqing, Hong Kong, Urumqi,保存即可,如图:

4.这样几个简单的步骤已经解决了系统时间自动还原的问题,如要设置其它国家的时间,请按照以上步骤如法炮制:P

31May/10

64MB VPS 上优化 Debian 5

Posted by Nick Xu

64MB 的 VPS 能不能跑一个小规模访问量的 WordPress 博客,这里的小规模是指每日500 PV 以下。然后分别试着跑了一下 Debian 和 CentOS,默认安装后跑Debian没有问题,但是运行 CentOS 时明显感到系统很慢。CentOS/RHEL 官方推荐的最小配置(不带图形界面)虽然是 64MB 内存,但是考虑到同时要跑 MySQL,PHP,Wordpress 等程序 64MB CentOS就有点吃力了。还有一个考虑就是运行一次 yum 需要比 apt-get 多得多的内存资源。所以按照我的 VPS 配置,64MB内存,128MB 交换,2.5GB 的硬盘,就只能选 Debian 了。

Debian 是一个古老,严谨,自由而且流行的 Linux 发行版,有 n 多的软件包可以用,有很好的稳定性和安全性,是各大 Linux hosting 服务商的主流系统之一,几乎所有 Linux VPS 都支持 Debian 版本。安装 Debian 的系统最低内存要求是 64MB,但是官方文档也说了真正的最低内存配置要比 64MB 低一些,根据不同的硬件体系安装在只有 48MB 的 i386 上也是可能的。

查看 VPS 配置
1、查看以下 VPS 的硬件信息,做到心中有数

# free# cat /proc/cpuinfo

安装和升级系统
2、登录 VPS 安装 Debian 5

3、安装完毕后马上升级整个系统

# apt-get update && apt-get upgrade
寻找小资源的替代软件
4、用 pdksh 替代 bash

当你在使用 64MB VPS 的时候,为了多压榨一些可用的内存通常不得不去用一些轻量的程序替代那些笨重的程序,比如用 niginx/lighttpd 替代 apache,把省下来的内存留给那些必须的程序,像省钱一样不是吗?,把一些不必要的开支省下来应付那些必不可少的开支,用在刀刃上。

Bash 是现在大多数 Linux 发行版本的默认 shell,是大多数 Linux 命令行用户的默认界面。从本人十多年前接触 Linux 以来,换过很多发行版本,换过不同的邮件服务器,换过不同的 web/ftp 服务器。不过从来没有换过 shell,期间试过一些不同的 shell,如csh,korn shell,不过总是感觉不满意。随着 bash 功能的增强,多年下来 bash 也变得越来越臃肿,消耗越来越多的 CPU 资源,占据越来越多的内存。由于我的电脑也在与时俱进的更新换代,硬件越来越强大,所以 bash 用到的那一点点资源都不是问题,甚至都感觉不到。当有一天我需要在一个 64MB 的 VPS 上运行 WordPress的时候,才发现 bash 的”身材”一点也不苗条。一个只有 64MB 的机器如果有多人同时登录的话,bash 占据的内存就显得比较可观了(那可是只有 64MB 的 VPS)。所以需要用一个轻量级的 shell 来替换 bash。

在网上搜了一圈,最终落在 pdksh 上,pdksh 是从 korn shell 的分出来的一个版本,这里有更多关于 pdksh 的介绍。运行一个 bash 需要 4MB 左右的内存,而运行一个 pdksh 只要 1MB 左右。如果你的习惯和我一样一登录上来就启6个 ssh 的话,那么替换掉bash绝对必要,那可是约 18MB 左右的内存,对于只有 64MB 的主机来说是一个大买卖。让我来解释一下买卖 : ),对于一般用户来说现在 VPS 提供的硬盘够用了,带宽够了,CPU 也够了,唯独 VPS 配置里面最紧缺的就是内存。现在提供 64MB VPS 主机的 hosting服务商一般都把价格定在8美元每月到20美元每月之间,那 18MB 可就是省了2美元到6美元每个月。pdksh 看上去像是个很好的 bash 替代品,简单,自动 tab 补齐, history 记录,bourne shell 的语法(如果你不喜欢 csh/tcsh 的话),这已经足够了,正是我需要的。如果你对 shell 感兴趣的话,这里有更多关于不同shell的比较。

# ps -C bash v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 1254 ? Ss 0:00 26 663 2272 36 1.2 /bin/bash –# apt-get install pdksh# chsh -s /bin/pdksh重新用 ssh 登录 VPS# ps -C pdksh v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND27700 pts/0 Rs 0:00 17 174 1765 344 0.5 -pdksh
值得注意的是,如果你用的是 VPSLink 的 VPS 的话会发现即使替换掉了 bash 系统还是会自动启动一个bash进程出来,原来 VPSLink 在 /etc/inittab 的最后加了一行,只要把最后一行的 /bin/bash 改成 /bin/sh 或者 /bin/pdksh,运行 init q 重新载入 init(1),然后 kill 掉那个 bash 进程就可以了。

shell 是个很个人的事情,一旦你习惯了一种 shell 就不大容易马上替换掉它,就像虽然我知道 nano 比 vi 更小巧更简单,需要的内存更少,但是我也不会用 nano 来替换 vi 的,我不能没有 vi。

5、用 Dropbear 替代 OpenSSH

OpenSSH 是个必不可少的服务程序,不过如果同时很多次登录 ssh 的也会吃掉很多内存,用一个轻量级的程序替代的话会省下更多的内存。Dropbear 是一个相对较小的 SSH 2 服务器,这里有更多关于 Dropbear介绍 的信息。如果不需要 OpenSSH 其他强大的功能的话 Dropbear 是一个不错的替代品,很多嵌入式产品,如:路由器,交换机等都把 Dropbear 作为默认的 SSH 服务。Dropbear 体积小还有一个原因是:如果你用非 root 用户登录,Dropbear 只需要创建1个进程,而 OpenSSH 则需要创建2个进程,更多的进程意味着更多的地址空间,更多的内存资源。虽然从功能上说 Dropbear 目前还不如 OpenSSH 强大,不过如果只想拿它来做远程登录 VPS,打打几个命令来管理一下 VPS 还是可以的。重要的是相对于 OpenSSH 的庞大体积来说,Dropbear 省了大约30%到50%的内存。

# touch /etc/ssh/sshd_not_to_be_run# apt-get install dropbear# vi /etc/default/dropbear# /etc/init.d/dropbear start
6、用 syslog-ng 替代 rsyslog

Rsyslog 是 Debian 5 的默认日志工具,是一个专注于安全和稳定的增强型多线程日志工具,有着丰富的功能,强大的可定制能力,可以把日志写入数据库(支持 MySQL,PostgresSQL,Oracle 等),E-mail 警报,可定制的日志输出等等,不过对于一个运行在 64MB VPS 的博客/网站来说,Rsyslog 未免显得过于强大,功能强大就意味着占用更多的 CPU/内存 资源。但是也不能没有一个日志工具,没有系统日志记录功能的系统是非常危险的,尤其是受到外部或者内部的威胁的时候,监控排错都需要一个好的日志系统的支 持。不用日志系统就像用 gcc 不用 gdb 一样,调试程序不用 debug 一样。

Syslog-ng 是一个不错的 Rsyslog 替代品,被 SUSE,Fedora,旧版本 Debian, Gentoo 等发行版当作默认日志工具。不过 apt-get install syslog-ng 后发现 syslog-ng需要 libevtlog0, libglib2.0-0,libglib2.0-data 软件包,并且需要约 5349KB 的额外硬盘空间,这对一个只有2.5GB硬盘的 VPS 来说”太”大了,5MB 空间可以写500篇左右的博客啊。

看了这篇 Limitations of syslogd on Unix 和这篇 Logging with syslog-ng 以后觉得 syslog-ng 的增强功能对于我这个小小 VPS 来说不必要,用简单的 syslogd 就可以满足我的要求,于是决定用 syslogd 来替代 Rsyslog。注意安装 syslogd 的软件包名字是 sysklogd。

# ps -C rsyslogd v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 20441 ? Sl 0:00 0 27 32836 1220 1.8 /usr/sbin/rsyslogd -c3# apt-get install sysklogd && dpkg –purge rsyslog# ps -C syslogd v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND27769 ? Ss 0:00 11 25 1806 324 0.4 /sbin/syslogd

Tagged as: , , No Comments
26May/10

在VPS中安装配置OpenVPN

Posted by Nick Xu

如果VPS的带宽和内存充足,通过它使用VPN代理上网是非常方便的。本文以Ubuntu系统为例,介绍OpenVPN的安装与配置。 OpenVPN身份验证使用的是证书文件,而非账号密码形式。

安装配置OpenVPN之前,请确保VPS已支持tun/tap,且iptables已支持NAT。ramhost的VPS默认都是支持的。

如果还没有安装iptables请先安装iptables:
apt-get install iptables

安装OpenVPN:

apt-get install openvpn

拷贝文件夹,以方便后续配置:

cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn

生成服务端和客户端的密钥及证书文件:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./clean-all
./build-ca
./build-key-server server
./build-key clientsteven
./build-dh

其中遇到需要输入信息的步骤全部按回车过去,直到最后一个步骤提示是否生成证书,按Y即可。

配置iptables规则,以转发来自VPN的请求:
chmod 755 /etc/rc.local
vim /etc/rc.local

将rc.local文件修改为以下内容:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# add iptables rule for openvpn
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to 202.248.185.66

/etc/init.d/openvpn start

exit 0

其中,202.248.185.66是VPS的IP.

注意:上面那行尾SNAT --to 202.248.185.66,是两个“-”号,WP把两个变成一个了,不知道为什么

创建OpenVPN的配置文件:
vim /etc/openvpn/openvpn.conf

openvpn.conf文件内容如下:
dev tun
proto tcp
port 1194

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

user nobody
group nogroup
server 10.8.0.0 255.255.255.0

persist-key
persist-tun

#status openvpn-status.log
#verb 3
client-to-client

push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

comp-lzo

启动OpenVPN:
/etc/init.d/openvpn start
/etc/rc.local

至此,服务端的配置结束,接下来是Windows客户端的配置。

下载以下几个文件到客户端机器:
/etc/openvpn/easy-rsa/2.0/keys/ca.crt
/etc/openvpn/easy-rsa/2.0/keys/clientsteven.crt
/etc/openvpn/easy-rsa/2.0/keys/clientsteven.key

下载安装OpenVPN,下载链接:
http://openvpn.net/release/openvpn-2.1.0-install.exe

将下载的ca.crt、clientsteven.crt、clientsteven.key三个文件拷贝到OpenVPN安装目录的config 文件夹下,并新建clientsteven.ovpn文件,内容如下:
client
dev tun
proto tcp

# The hostname/IP and port of the server.
# CHANGE THIS TO YOUR VPS IP ADDRESS
remote 202.248.185.66 1194

resolv-retry infinite
nobind

persist-key
persist-tun

ca ca.crt
cert clientsteven.crt
key clientsteven.key

comp-lzo
verb 3

其中,202.248.185.66是VPS的IP.

若之后还需要添加其他的VPN账号,则需要以下命令:
cd /etc/openvpn/easy-rsa/2.0
./build-key clientsusan

而后下载相应的文件到客户端,并按照之前介绍的步骤配置客户端。

Tagged as: , , No Comments
22May/10

openvz ubuntu安装openvpn并配置iptables防火墙

Posted by Nick Xu

对于买了openvz vps,想开立vpn的朋友们,首先应该发送Ticket联络你的提供商,开启TUN/TAP和iptables相关的模块,并开启iptables相关 的组件。

我们先检测下是否己经有开通tun和tap,检测是否开启tun功能的方法是:

lsmod | grep tun

如果没有显示, 再试试下面的命令

modprobe tun

这种检测手段并不很准确,为了保险起见 ,你还是联系下提供商,记住,一 定要开启TUN/TAP和iptables相关组件,不然配置会不成功。

等待提供商为你开启了相关功能后,下面就正式动手进行配置了。

以下命令都是在命令行进行手动敲入的,因为自动化脚本并不能解决在安装openvpn过程中遇到的各种小问题,所以需要手动来配置,才能最后让 openvpn正常运作。所以请大家耐心的进行复制粘贴。出现了错误,仔细分析前因后果。

记住需要使用到的常量,在下面输入的时候,要记得用这些变量的值,替换变量,不要原封不动的复制粘贴代码。

$HOSTNAME 你的vps服务器的机器名,可输入hostname命令获取

$IP 你vps对外的IP地址,公网IP,可输入ifconfig查询。

服务器安装配置

安装openvpn开始,先更新下源

apt-get update

安装openvpn和必须的类库

apt-get install openvpn libssl-dev  openssl

转到openvpn的配置文件夹

cd /etc/openvpn/

拷贝工具过来,准备生成Key

cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/

进入工作目录

cd /etc/openvpn/easy-rsa/2.0/

改变文件可执行状态

chmod +rwx *

编辑配置文件,修改默认用户信息 vim ./vars

找到下列内容进行替换成你自己的,比如国家可以自US改成CN

    export KEY_COUNTRY=“US”
 
    export KEY_PROVINCE=“CA”
 
    export KEY_CITY=“SanFrancisco”
 
    export KEY_ORG=“Fort-Funston”
 
    export KEY_EMAIL=“me@myhost.mydomain”

编辑完毕后,保存一下,执行下面的命令

source vars
 
    ./clean-all
 
    ./build-dh
 
    ./pkitool --initca
 
    ./pkitool --server server

进入key目录

cd keys

生成key

    openvpn --genkey --secret ta.key
 
    cp  ./{ca.crt,ca.key,ta.key,server.crt,server.key,dh1024.pem} /etc/openvpn/

编辑openvpn配置文件

vim /etc/openvpn/openvpn.conf

用下面的内容替换原来的内容

    port 1194
 
    proto udp
 
    dev tun
 
    ca ca.crt
 
    cert server.crt
 
    key server.key
 
    dh dh1024.pem
 
    server 10.8.0.0 255.255.255.0
 
    push “redirect-gateway def1”
 
    push “dhcp-option DNS 8.8.8.8”
 
    push “dhcp-option DNS 8.8.4.4”
 
    ifconfig-pool-persist ipp.txt
 
    keepalive 10 120
 
    client-to-client
 
    comp-lzo
 
    user daemon
 
    group daemon
 
    persist-key
 
    persist-tun
 
    status openvpn-status.log
 
    verb 3

配置文件保存后,现在开始配置网络相关设置,先开启转发功能

echo “net.ipv4.ip_forward=1” >> /etc/sysctl.conf

使设定生效

sysctl -p

开始配置防火墙了,先清空防火墙现有的设置,遇到错误,不用管它,进行下一个操作。

iptables -t nat -F
 
    iptables -t nat -X
 
    iptables -t nat -P PREROUTING ACCEPT
 
    iptables -t nat -P POSTROUTING ACCEPT
 
    iptables -t nat -P OUTPUT ACCEPT
 
    iptables -t mangle -F
 
    iptables -t mangle -X
 
    iptables -t mangle -P PREROUTING ACCEPT
 
    iptables -t mangle -P INPUT ACCEPT
 
    iptables -t mangle -P FORWARD ACCEPT
 
    iptables -t mangle -P OUTPUT ACCEPT
 
    iptables -t mangle -P POSTROUTING ACCEPT
 
    iptables -F
 
    iptables -X
 
    iptables -P FORWARD ACCEPT
 
    iptables -P INPUT ACCEPT
 
    iptables -P OUTPUT ACCEPT
 
    iptables -t raw -F
 
    iptables -t raw -X
 
    iptables -t raw -P PREROUTING ACCEPT
 
    iptables -t raw -P OUTPUT ACCEPT

设置防火墙,允许nat,端口转发和常用的服务,需要注意的是第一行的-o venet0 在openvz下面是venet0,在xen下面可能是eth0,这是网卡的编号,大家可以用ifconfig查看,看第一块网卡是eth0还是 venet0,不要搞错了,搞错了就访问不了外面的互联网。

 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
 
    iptables -A INPUT -i lo -j ACCEPT
 
    iptables -A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT
 
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
    iptables -A OUTPUT -j ACCEPT
 
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 
    iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
 
    iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
 
    iptables -A INPUT -p udp --dport 1194 -j ACCEPT
 
    iptables -A INPUT -s 10.8.0.0/24 -p all -j ACCEPT
 
    iptables -A FORWARD -d 10.8.0.0/24 -j ACCEPT
 
    iptables -A INPUT -i tun+ -j ACCEPT
 
    iptables -A FORWARD -i tun+ -j ACCEPT
 
    iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
 
    iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix “iptables denied: ” --log-level 7
 
    iptables -A INPUT -j REJECT
 
    iptables -A FORWARD -j REJECT

保存 防火墙规则,让它在下次启动系统时自动生效

iptables-save > /etc/iptables.up.rules

新建网络启动时加载的脚本 vim /etc/network/if-pre-up.d/iptables
输入下面的内容

#!/bin/bash
 
    /sbin/iptables-restore < /etc/iptables.up.rules

改变执行权限

chmod a+x /etc/network/if-pre-up.d/iptables

等下次你启动系统的时候,防火墙就会以现在的规则执行。

现在既然配置都己经好了,那就重启openvpn服务吧

/etc/init.d/openvpn restart

客户端配置文件

cd /etc/openvpn/easy-rsa/2.0/
 
    source vars
 
    ./pkitool client1
 
    cd keys/

编辑客户端配置文件 vim $HOSTNAME.ovpn

输入下面的内容

client
 
    remote $ip 1194
 
    dev tun
 
    comp-lzo
 
    ca ca.crt
 
    cert client1.crt
 
    key client1.key
 
    route-delay 2
 
    route-method exe
 
    redirect-gateway def1
 
    dhcp-option DNS 10.8.0.1
 
    verb 3

注意把上面的$ip,$HOSTNAME变量替换为真实的主机名和IP地址,不得有误
打包密匙,供客户端使用

tar -zcvf  keys.tar.gz ca.crt ca.key client1.crt client1.csr client1.key ta.key $HOSTNAME.ovpn

移动到Root的主目录下面

mv keys.tar.gz ~/

你可以用Winscp等软件,把这个下载回来。解压放到你的openvpn目录下面使用

这些密匙和配置文件是放在C:Program FilesOpenVPNconfig 下面,需要使用vpn的时候,点开openvpn,直接connect即可。

客户端我们用的是openvpn gui工具,在windows下面可以很方便的连接openvpn服务器上。

在服务器端己经启动了,我们就可以用GUI工具进行连接了,右键点击托盘栏的小图标,启动connect即可连接vpn了。

   
site
site