2,268 views 三月 28, 10 by Timothy
俺的VPS是基于OpenVZ的,因而不支持PPTP VPN,唯一的办法,是搭建OpenVPN。和PPTP VPN相比,OpenVPN的搭建要稍微麻烦一些。并且服务端和客户端需要生成证书,以及修改配置文件。下面把BurstNET VPS上,Ubuntu系统中搭建OpenVPS的流水账记录一下,供日后参考:
1.前期工作,OpenVPN,需要TUN支持,默认情况下,是没有开启的,需要到后台管理平台中,点击Enable Tun/Tap即可开通。开通后,用命令
如果返回 cat: /dev/net/tun: File descriptor in bad stat,表明已经成功启用TUN支持。
另外,需要iptables_nat模块支持,用命令
1
| iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE |
检查,如果返回iptables: Unknown error 4294967295,表明系统还不支持,需要联系客服开通。
2.安装OpenVPN,这个最简单不过了:
1
| sudo apt-get install openvpn |
安装好后,默认的路径在 /usr/share/openvpn,进入 /usr/share/openvpn/easy-rsa/2.0 目录,用vim修改vars文件,加入自己的信息,这些信息在生成证书的时候会用到,下面是示例:
1
2
3
4
5
| export KEY_COUNTRY="CN"
export KEY_PROVINCE="SC"
export KEY_CITY="ChengDu"
export KEY_ORG="FreedomUnion"
export KEY_EMAIL="admin@xiaozhou.net" |
修改好后,保存文件,用命令 . ./var运行,注意两个点之间有个空格。运行后,会设置好变量,接下来按照下面顺序,运行命令,生成证书:
1
2
3
4
| ./build-ca
./build-key-server timothy-vps
./build-key ClientName
./build-dh |
./build-key-server 用来生成服务端证书,./build-key用来生成客户端证书,有几个客户端,就需要生成几个。
生成好后,接下来需要配置服务端配置文件,把/usr/share/openvpn/easy-rsa/2.0/keys目录下所有生成好的证书文件,拷贝到 /etc/openvpn/keys,接下来,编辑服务端配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| cd /etc/openvpn
vim server.conf
#输入以下内容到配置文件
port 1194
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/timothy-vps.crt
key /etc/openvpn/keys/timothy-vps.key
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3 |
编辑好后,保存文件,用vim编辑 /etc/sysctl.conf,把net.ipv4.ip_forward=0改成 net.ipv4.ip_forward = 1,运行 sysctl -p命令,编辑/etc/init.d/iptables,加入以下规则:
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT –to-source Your-VPS-IP
接下来,服务端配置基本结束,运行命令,启动OpenVPN客户端:
1
| /usr/sbin/openvpn --config /etc/openvpn/server.conf & |
如果需要开机启动,把上面命令加入到/etc/rc.local即可
服务端启动成功截图

接下来,配置客户端了,Windows下使用OpenVPN,需要下载最新版的OpenVPN安装程序。安装好后,将在VPS上生成好的证书文件,下载到客户端,包括ca.crt证书,以及客户端证书:timothy.crt timothy.key,将它们统统拷贝到OpenVPS安装目录下的config目录,编写客户端文件,保存为client.ovpn,内容如下:
client
dev tun
proto tcp
remote Your-VPS-IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert timothy.crt
key timothy.key
ns-cert-type server
comp-lzo
verb 3
保存好后,右键点击client.ovpn,选择“Start OpenVPN on this config file”,建立VPN连接,建立好后,命令行会有如下提示: Initialization Sequence Completed,表示连接成功,这下,可以VPN上网了。去ip138.com,看看你的IP,应该是VPS的IP了:

463 views 三月 16, 10 by Timothy
这两天加班,没时间顾及VPS。晚上没事用SecureCRT,通过SSH连接VPS,发现VPS拒绝连接。奇怪了,VPS的站点能访问,iptables也没限制SSH端口,除非是sshd服务挂了。登陆VPS的web管理界面一看,果然sshd这进程从列表中消失了。直接运行/etc/init.d/ssh start,系统返回异常:ssh 无法启动, /dev/null is not a character device 这错误提示看得我一头雾水,难道sshd服务,还跟那个/dev/null设备有关系?带着疑问去请教了下google老师,原来别人也有遇到这样的问题。sshd确实和这设备有关,如果/dev/null被损坏,ssh启动,就会有如此提示。既然问题找到了,是/dev/null损坏,我们需要重建一个,用下面的命令即可修复:
1
2
3
| rm /dev/null
mknod /dev/null c 1 3
chmod 666 /dev/null |
待/dev/null重建好后,直接在VPS的web管理页面中,运行 /etc/init.d/ssh start,久违的sshd服务就回来了。回忆了下,前两天打开了corn服务,有个每天定时执行的和日志关的脚本,会去修改/dev/null,立马屏蔽之,重启cron服务后,一切正常。
655 views 三月 05, 10 by Timothy
VPS正式上线,先恭喜下自己 ,嘿嘿。
经过多方比较,最后选了BurstNET的VPS最低配置的那一款,具体配置如下:
VPS Software: vePortal™ / OpenVZ™
CPU: 1000MHZ GUARANTEED
Memory: 512MB GUARANTEED
Disk Space: 20GB (RAID BASED CONFIG)
Bandwidth: 1000GB/MONTH
IP Addresses: 2
Management: BASIC MANAGED
DDOS Protection: CISCO™ GUARD
可惜是基于OpenVZ的,不支持PPTP的VPN,只能架OpenVPN。其他的地方还比较满意,2个IP,1TB月流量是亮点。装上了Ubuntu 9.10 32bit系统,用PHP+MySql+Nginx+FastCGI 搭建了WordPress环境自上次重启后,用uptime命令查询了一下,运行了两天又十小时,还算稳定。free -m命令,显示剩余内存131MB,为了测试速度,打开了到vps的ping,自家的成都电信ADSL,自测速度如下:
麻烦各位天南地北的同学帮我测试一下速度(ping vps.xiaozhou.net),在回帖中告诉下我你的宽带是网通、电信还是其他,ping平均多少ms延时。非常感谢!
1,039 views 二月 26, 10 by Timothy
忙乎了一两天,俺的VPS算是上线了,基于Ubuntu Linux的,512MB内存,20G硬盘,1TB月流量,赠送2个IP,还不错。不过,现在还没有把博客迁移过去的打算,此VPS仅作为练手而用,只是建了一些ssh账号,供自己和同事跨栏用,还简单的搭建了基于Nginx+MySql+PHP+FastCGI的WordPress环境,并成功拉过来俺的一位同事在上面安了个blog,嘿嘿。
提到VPS,最重要的还是安全,毕竟你的系统是直接面向公网,如果不加强防范,很容易成为别人手里的肉鸡。Linux中的iptables,用过的同学都知道,是一个基于Linux内核的防火墙,功能比较强大,下面是iptable的一些常用的规则设置:
1
2
3
4
5
6
7
8
9
10
11
12
| /sbin/iptables -P INPUT DROP #禁止掉服务器所有入口请求,后面的规则只允许部分常用的服务端口
/sbin/iptables -P OUTPUT ACCEPT #允许服务器访问出口请求
/sbin/iptables -A INPUT -i lo -j ACCEPT #允许本地接口访问
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP #禁止ping,因为ping是基于icmp协议的
/sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT #允许部分常用端口入口请求访问
/sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT #允许所有已经连接端口请求
/sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP #DROP掉所有失效或者新的请求 |
可以把上述脚本保存起来,执行,然后用命令/sbin/iptables -L -n查看规则是否生效
把上述脚本再完善一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:~/bin
export PATH
case "$1" in
start)
echo -n "Staring to write your Iptbales:..."
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP
echo "Ok"
;;
stop)
echo -n "Cleaning your Iptables:..."
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
echo "Ok"
;;
restart)
echo -n "Cleaning your Iptables:..."
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
echo "Ok"
echo -n "Staring to write your Iptbales:..."
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP
echo "Ok"
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac
exit 0 |
这样,我们就可以用start/stop/restart的参数来启用、禁止iptables防护了,很方便。另外,可以把此脚本放入/etc/init.d,让它像系统服务一样,在VPS启动的时候自动运行。
PS:
1.此脚本参考自网上,并作了部分修改
2.搜狗云输入法,也有郁闷的时候,在写文章的时候,候选词半天不出来,很卡,囧rz 是我打字速度太快,还是网速很慢?……
797 views 二月 21, 10 by Timothy
这段时间对Linux相当痴迷,玩了下CentOS,现在又看上了Ubuntu。对Ubuntu偶早有所闻了,以前也在虚拟机上装过,那漂亮的UI是各个Linux版本中相当出众的,安装、维护的简单和方便,也是至今都Ubuntu拥有众多追随者的原因。正好,俺家中有一台老牛机(以前大学时候用的台式机),这机器历史算长久了,从大二一直跟随俺到现在,有7、8年历史了。毕业后把这台机器略升级了一下,到现在都一直闲置在书房中,完全成了摆设。自从用上了笔记本,老婆也用上了上网本,这台台式机更是没人用了。昨天突然心血来潮,决定在老牛机上装个Ubuntu玩玩,没事了还可以开着下下高清BT,充分利用下闲置资源。
老牛机配置如下:
CPU: Athlon 1700+
内存: KingSton 1.5GB(1G*1+256*2)
硬盘: 希捷80G IDE接口
显卡: Geforce 6200
主板: nForce2
开始行动
说干就干,首先在Ubuntu的老家拖了个最新的Ubuntu 9.10 32bit Desktop Edition的ISO。老牛机的光驱,经久失修,已经是个残废了。本来想扔掉的,但机箱面板那个挡板也被我搞掉了,扔掉光驱就有个缺口,不美观,只有留下了。主板支持4个USB接口,两个坏掉了,剩下两个还可用,刚好偶又有个2G的U盘(捡来的),所以打算通过U盘来安装系统。用U盘装系统好处多多,不用刻盘,并且速度比光驱快,嘿嘿。
用Ultra ISO利器,把安装镜像写入到U盘:
写完后的U盘驱动器图标:
安装系统
拔下U盘,插上老牛机器,一步一步安装,Ubuntu从此跑在了老牛机上,发现比以前的XP快不少。并且Ubuntu支持大部分硬件,无须驱动,显卡驱动可以用Ubuntu默认的,也可以自己单独安装。安装界面也相当的友好,即使是第一次使用的用户,也能根据向导来完成安装。
一点使用体验
1.5G的内存,运行Linux当然会快很多,从开机和系统加载的速度就可以感受到,比以前的XP快不少。装上显卡驱动后,能打开一些可视化特效,比较炫。
由于Ubuntu自带Firefox浏览器,于是立马装上了AutoProxy插件,再用Linux自带的ssh命令,加上一个国外的SSH帐号,立马实现了跨栏的效果……为了以后方便,做了个简单的shell脚本:
1
2
| echo "ssh -N -D 127.0.0.1:7070 ssh-account@server-address" > connect.sh
chmod +x connect.sh |
-N: 不需要shell登陆
-D: 建立本地端口映射,这里使用的7070端口,把这端口配置到AutoProxy里面去,就OK了
后面是ssh-username@server-ip
控制台运行此脚本后,会提示输入ssh密码,输入后,连接完毕,可以打开Firefox畅游了
关于BT下载工具,偶用Transmission,貌似Ubuntu已经自带了,没有的也可以单独安装。
关于中文输入法,偶一般是在浏览网页时输入中文,Firefox可以装一个搜狗的云输入插件,方便、绿色、环保,强烈推荐下。
小结一下
老牛机器装上Linux感觉挺赞,如同重新焕发了活力一般。家有闲置老牛机的同学不妨试一试。
4,935 views 二月 12, 10 by Timothy
自从手机刷了WM6.5的最新版系统后,以前常用的短信聊天模式没了,变成了普通模式,感觉很是不习惯。于是请教了下Google老师,很快找到了答案。原来,WM6.5的短信聊天模式,是在注册表中设定的。二话不说,打开注册表编辑器,定位到注册表的如下路径:HKEY_CURRENT_USER\Software\Microsoft\Inbox\Settings ,将SMSavailable这个键的值,由默认的0(普通模式),改为1(聊天模式)即可。保存修改,重启手机,熟悉的聊天模式又回来了。
6,838 views 一月 29, 10 by Timothy
不知道大家平时是用什么方式访问那些“不知道什么原因,突然就不能访问的”网站,其实最常用的,也是最简单的方式,就是通过VPN。网上有不少的免费VPN方式的客户端软件,比如Hotspot Shield,和theFreeVPN。自从Hotspot Shield挂了后,我就一直用的theFreeVPN,需要在你的机器单独安装客户端软件,并且要安装相关驱动,所以为了系统的干净,我一直在Win7的XP Mode下面用。这样也有很多不方便的地方,每次要访问那些“不知道什么原因,突然就不能访问的”网站,都要先启动虚拟机,然后再打开theFreeVPN,比较麻烦。最近theFreeVPN也开始收费,尽管免费的服务器也可以连接,不过也不稳定,还有随时掉线的情况。除了免费的VPN,也有收费的VPN,可以在万能的淘宝购买。某日,在一篇不知道某位大虾写的文章中,我知道了有AutoProxy这个东东,装在Firefox上,感觉这是个很有创意的插件,它能帮你自动切换是否需要用代理来访问某些站点,并且订阅的站点列表可以随时在线更新,你也可以通过设置插件,让所有的网站访问请求,都从代理服务器出去。假设你已经有了一个代理通道,暴露的代理端口是本机的端口,通过AutoProxy的设置,就能轻松的实现通过代理去访问网站了。
下面先介绍下AutoProxy的简单设置方法,在上面的AutoProxy连接,安装好插件后,你会发现Firefox上的状态栏,或者工具栏,会有下面的图标:
点击图标的弹出菜单,就会打开AutoProxy的主界面。
打开Edit ProxyServer,来到代理入口的管理界面,这里可以编辑、增加、删除代理入口,代理入口怎么来的呢?文章的后面我会介绍。
来到选择代理服务器入口的界面,把默认的代理服务器,设置为你刚才添加好的代理入口的名称。
到此为止,AutoProxy的设置,就完了。
其实关键的地方,还在后面,怎样建立代理入口呢?网上的方法很多的,首先推荐一个最近我发现的不错的软件:GTunnel。有了GTunnel,你就可以通过常用的方式,来建立自己的代理隧道,支持的方式有:Skype,GTalk Account,Tor。只要你有其中的一个帐号,就可以通过此软件,建立好代理隧道,比如下图中,隧道代理的入口地址,就是127.0.0.1:8081,还记得上面AutoProxy的那个地址管理界面吗?去AutoProxy设置好代理隧道的地址和端口,并把此代理设置为默认代理,就大功告成了,通过Firefox就能访问那些“不知道什么原因,突然就不能访问的”网站,并且速度还相当不错。我用我的GTalk Account,建立连接后,访问站点速度都令人满意,只是目前唯一让人不太满意的是GTunnel会在连接计时达到半个小时的时候,提示你是普通用户,已经达到使用限制,程序会自动退出。重新打开后,才可以继续使用。
还有个软件,值得推荐,也是我现在用的方法,SSH Account+MyEnTunnel+Firefox+AutoProxy。道理是一样的,只是替换了建立隧道代理的那部分,通过MyEnTunnel,你可以利用你的SSH帐号,建立一个加密的隧道代理,并且暴露出端口类似127.0.0.1:1080(端口可以自己设定)。把这个地址,同样的方法,加入到AutoProxy,就可以了。前提是你需要一个SSH帐号。(SSH帐号,其实就是一个Unix/Linux的可登陆的帐号,SSH只是一种远程加密访问的方式),国外有些网站可以免费申请到,或者追求速度和稳定的同学,可以去万能的淘宝购买。
另外,还有其他的软件,网上评价也不错,比如Puff 。
其实平时上网,也主要就是通过代理看一些网站,其他的用处还不大,所以感觉用代理的方式,比VPN要轻量级一些。如果你是为了游戏,那绝对推荐VPN了。自从用上了SSH Account+MyEnTunnel+Firefox+AutoProxy,从此惬意多了,那些“不知道什么原因,突然就不能访问的”网站,不知道为什么,突然就可以访问了,挖哈哈~~强烈推荐大家使用。
535 views 十二月 30, 09 by Timothy
自从上次手机刷机到WM6.5-23052后,哥折腾手机的脚步就从来没闲过,呵呵。正所谓生命无止境,折腾不停息,这次哥又手痒了,自从在cnbeta看到MS又放出新版ROM的新闻后,就又重操旧业,开始了折腾的脚步,把俺可怜的Touch Pro又给洗脑了一次。下载ROM,连上电脑,不到10分钟,一个新ROM就顺利的运行在小T上了。这次的ROM是用了一个国外的比较有名小组TAEL定制的英文版ROM,界面清新,重要的是,总体感觉比上次的ROM流畅了很多,集成新版的HTC Sense界面,相当漂亮!刷机后,发现中文不能正常显示,全是框框一样的乱码,装了个中文字体的安装包就解决了。一直以来,Windows Mobile的运行速度都不尽人意,尤其是性能方面,不过微软视乎注意到了这一点,随着ROM版本号的不断升高,能感觉到微软在Windows Phone性能方面的改进,嗯嗯,如果再不重视性能和运行速度,或许Windows Phone会流失大量的Fans和用户,转而投向Android和iPhone。虽然Windows Phone 7.0的正式发布还遥遥无期,不过偶还是非常期盼的。总体评价,这次的ROM让哥很满意,上两张图炫耀下:

