分类目录归档:自建服务

关于搭建各种服务器的研究

在OpenWrt上部署OpenVPN服务器

话说这标题意外的微妙呢……其实相当一段时间之前就已经弄好的,只是最新更新了trunk的固件,决定重新写一次而已。

在部署的过程中经历了不少曲折,可是最后终究还是做好了。还是外国人的东西靠谱,找到的几分中文教程里面的配置文件完全不给力啊,最后还是在官方Wiki里面找到能用的教程。

http://wiki.openwrt.org/doc/howto/vpn.openvpn

真是一份优秀的教程啊,其他平台的部署也可以略作参考。

下面是咱的人手翻译,说是这样说,其实也只是把大部分的命令弄过来而已……

—————————————–首先是服务器的配置————————————–

首先是安装软件包

opkg update
opkg install openvpn openvpn-easy-rsa

然后是稍微改一下easy-rsa的配置文件(不过如果你对手动签署证书比较熟悉的话也可以手动)

vi /etc/easy-rsa/vars

在文件底部添加环境变量

export KEY_COUNTRY="US"
export KEY_PROVINCE="TX"
export KEY_CITY="Houston"
export KEY_ORG="My Cool Place"

接着是签署证书,一共3份,根证书,服务器证书,客户证书。签署的过程需要填写一些信息,自己看着填,详细可以参考这个里面的说明
根证书

clean-all
build-ca
build-dh

服务器证书

build-key-server server

客户证书

build-key Jimmy
build-key Sara
build-key Soandso
...

将CA证书,服务器证书,dh密钥,服务器私钥拷贝到openvpn文件夹

cd /etc/easy-rsa/keys
cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn/

接着,把CA证书,客户端证书,dh密钥,客户端私钥拷贝到客户端。

然后,在luci(还是要有图形界面啊)的网络-接口-LAN里面,把tap0加到桥接里面,然后就不需要考虑转发啊什么的了,方便的很。

guide.openvpn.inttab

guide.openvpn.tapbridge

下面是server的配置文件,这个写在/etc/config/openvpn

config 'openvpn' 'lan'
        option 'enable' '1'
        option 'port' '1194'
        option 'proto' 'udp'
        option 'dev' 'tun0'
        option 'ca' '/etc/openvpn/ca.crt'
        option 'cert' '/etc/openvpn/server.crt'
        option 'key' '/etc/openvpn/server.key'
        option 'dh' '/etc/openvpn/dh1024.pem'
        option 'ifconfig_pool_persist' '/tmp/ipp.txt'
        option 'keepalive' '10 120'
        option 'comp_lzo' '1'
        option 'persist_key' '1'
        option 'persist_tun' '1'
        option 'status' '/tmp/openvpn-status.log'
        option 'verb' '3'
        option 'server_bridge' '192.168.1.1 255.255.255.0 192.168.1.200 192.168.1.219'

接着是防火墙啊,dhcp啊之类的,默认就可以了。

再贴一个通用版本的config,这个可以直接用openvpn来运行而不必依靠luci

port 1194
proto tcp
dev tun

### Certificate and key files
ca /etc/easy-rsa/keys/ca.crt
cert /etc/easy-rsa/keys/server.crt
key /etc/easy-rsa/keys/server.key
dh /etc/easy-rsa/keys/dh1024.pem

server 192.168.30.0 255.255.255.0
push "route 0.0.0.0 0.0.0.0"
push "dhcp-option DNS 10.1.254.250" # Change this to your router's LAN IP Address
client-to-client

### (optional) compression (Can be slow)
comp-lzo
persist-key
persist-tun

verb 3
keepalive 10 120

————————————————–接下来是客户端(OpenWrt)—————————————

配置文件:

client
tls-client
dev tun
proto tcp

remote <server address> 1194 # 改成服务器的IP
resolv-retry infinite
nobind

persist-tun
persist-key

ca ca.crt #CA证书,可以改成绝对路径,下同
cert Jimmy.crt
key Jimmy.key
dh dh1024.pem

comp-lzo
verb 3

然后可以用

openvpn --config 配置文件 --daemon

运行客户连接

另外原文还有Windows版的Client配置文件,有兴趣的可以过去看看。

[转载]全球可信并且唯一免费的HTTPS(SSL)证书颁发机构:StartSSL

[文章作者:张宴 本文版本:v1.0 最后修改:2009.11.14 转载请注明原文链接:http://blog.s135.com/startssl/]

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容请看SSL。

它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

1、自行颁发不受浏览器信任的SSL证书:
HTTPS的SSL证书可以自行颁发,Linux下的颁发步骤如下:

openssl genrsa -des3 -out api.bz.key 1024
openssl req -new -key api.bz.key -out api.bz.csr
openssl rsa -in api.bz.key -out api.bz_nopass.key

Nginx.conf的SSL证书配置,使用api.bz_nopass.key,在启动Nginx是无需输入SSL证书密码,而使用api.bz.key则需要输入密码:

server
{
server_name sms.api.bz;
listen 443;
index index.html index.htm index.php;

root /data0/htdocs/api.bz;

ssl on;
ssl_certificate api.bz.crt;
ssl_certificate_key api.bz_nopass.key;
......
}

自行颁发的SSL证书虽然能够实现加密传输功能,但得不到浏览器的信任,会出现以下提示:

2、受浏览器信任的StartSSL免费SSL证书: 继续阅读

Lighttpd开启/关闭目录浏览

原文地址:http://hi.baidu.com/panzhiqi/blog/item/3e66abad0d489d0c4a36d624.html

相当于apache 中的 Options Indexes功能
编辑 lighttpd.conf

  1. 开启所有目录的目录浏览
dir-listing.activate = "enable"
  1. 开启特定目录的目录浏览
$HTTP["url"] =~ "^/upload($|/)" {
dir-listing.activate = "enable"
}
  1. 开启所有目录,关闭特定目录的目录浏览
dir-listing.activate = "enable"
$HTTP["url"] =~ "^/www($|/)" {
dir-listing.activate = "disable"
}

因权限造成lighttpd无法启动

最近不知道为什么lighttpd又跑不动了(当然不是VPS上的,而是路由上的) ,运行

lighttpd -f /etc/lighttpd/lighttpd.conf -D

得到了下面这堆奇怪的结果

2012-3-20 13:55:54: (log.c.172) server started
2012-3-20 13:55:54: (mod_fastcgi.c.1087) the fastcgi-backend /usr/bin/php-fcgi failed to start:
2012-3-20 13:55:54: (mod_fastcgi.c.1091) child exited with status 13 /usr/bin/php-fcgi
2012-3-20 13:55:54: (mod_fastcgi.c.1094) If you're trying to run your app as a FastCGI backend, make sure you're using the FastCGI-enabled version.
If this is PHP on Gentoo, add 'fastcgi' to the USE flags.
2012-3-20 13:55:54: (mod_fastcgi.c.1398) [ERROR]: spawning fcgi failed.
2012-3-20 13:55:54: (server.c.928) Configuration of plugins failed. Going down.

接着就无法启动了……

我擦勒,不带这样玩的啊喂,这种莫名其妙的东西是什么啊,到底是什么问题你说一下啊。不得已,只得在网上不断的搜索,都没有相关的资料……最后从某个英文的网站找到了一个指引(明灯啊!)strace

大概是一个调试的东东,在opkg的info里面的介绍是“A useful diagnostic, instructional, and debugging tool. Allows you to track whatsystem calls a program makes while it is running.”

接着我根据那位大神所说的,运行了一次

strace -ff lighttpd -D -f /etc/lighttpd/lighttpd.conf

结果出来了一大串一大串文字,刷屏了,而且看不到头。不过看到了一个很重要的信息

运行/usr/bin/php-fcgi的时候出现了“permission denied”。嗯?有问题?权限的话是755,应该没问题啊,尝试直接用root来运行lighttpd,报告说不能用root来运行。于是又新建了一个www-data的用户来运行,在用su切换账户的时候发现问题了。这个问题之前也提到过,于是就顺手改了过来。接着切换过去一运行/usr/bin/php-fcgi,没问题了。再运行lighttpd,也没问题了……

这可真蛋疼啊,明明之前的版本都可以直接用其他用户来运行的,现在的话还有自己动手。

proftpd:无法启动

嘛……因为新买了的路由只有trunk版,可是trunk版并没有vsftpd,只有proftpd,这下子麻烦了,又要重新接触一个新的软件……嘛,就稍微研究了一下。

继续上参考:

http://www.deepvps.com/proftpd-failed-to-start.html

——————————————————————————-

愚蠢的proftpd啊,居然连自动分析IP都不能,如果没有在配置文件里面写上IP的话就死活不能启动 (= =b),真是够愚蠢的。

如果出现了

- warning: unable to determine IP address of 'OpenWrt'
- error: no valid servers configured
- Fatal: error processing configuration file '/etc/proftpd.conf'

之类的文字,就在配置文件里面加上服务器的IP吧

DefaultAddress 192.168.11.1

之后就能成功启动了

结果最后发现该死的,编译的时候没有加入语言支持,最后不得不放弃这软件,投入pure-ftpd的怀抱…

为luci添加HTTPS验证

嘛~是因为准备做来练练手什么的,于是我就弄出来了。

以下是参考书:
http://www.chinaunix.net/jh/6/16469.html

成品:

到Luci的安全连接

到Luci的安全连接

 

要求的软件包:
openssl-util
luci-ssl
uhttpd-mod-tls

切换目录到/etc/ssl/certs
———————————————–开端的分割线————————————————-
首先,是创建自己的证书:

openssl genrsa -out ca.key 1024

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

*这里需要输入信息
Country Name: CN 两个字母的国家代号
State or Province Name: GuangDong 省份名称
Locality Name: GuangZhou 城市名称
Organization Name: Family Network 公司名称
Organizational Unit Name: Home 部门名称
Common Name: Ferrets 你的姓名
Email Address: [email protected] Email地址
得到ca.crt
这是CA证书,添加到“受信任的证书颁发机构”,或是“受信任的发布者”,以信任自己所颁发的证书

 

openssl genrsa -out server.key 1024

 得到密钥

openssl req -new -key server.key -out server.csr

这是证书签署请求,在自己签署之后可以删掉

 

接下来是签署(sign.sh)

上面是一个sign.sh的脚本,用来签署证书,请放到/etc/ssl/certs,加上可以运行的属性。

./sign.sh server.csr

然后就是确认信息,确认添加数据到数据库(虽然我不知道用不用的上)

得到server.crt
这是服务器证书,添加到“个人”,以信任自己的网站。

————————————————承上启下的分割线———————————————–
接下来是启用这个自己签署的证书了。
在装上luci-ssl和uhttpd-mod-tls之后,uhttpd应该就可以监听443端口了。
修改“/etc/config/uhttpd”
找到“option cert” 修改后面的值为“/etc/ssl/certs/server.crt”
找到“option key” 修改后面的值为“/etc/ssl/certs/server.key”
*这里要注意一下,如果你没有ipv6的路由的话就不要监听[::]:443,会找不到的,监听0.0.0.0:443
保存,重启uhttpd。
————————————————华丽谢幕的分割线————————————————
接下来,请尝试用https来访问自己的路由吧~

使用vhost

因为最新换了Lighttpd呢,在装Wordpress的过程中,看见了一些比较有趣的代码($HTTP[“host”] )就稍微研究了一下,发现,这个vhosts真的是非常强力啊,V5的一比那啥。在使用同一个IP地址的时候,根据不同的域名,进入不同的网站根目录……

恩,然后现在直接访问网站IP和访问域名会得到不同的结果,这可真是厉害的说。

感叹完了,以下是相关使用说明:

参考:

Lighttpd virtualhost configuration ~ name-based virtual hosting 


Lighttpd的vhosts配置是

$HTTP[“host”] =~ “domain1\.com” {
server.name = “domain1\.com”
server.document-root = “/home/lighttpd/domain1.com/http”
}

 可以写在lighttpd.conf,也可以写在外部然后在lighttpd.conf里面写上include。当然也可以加上其他的设置,比如说server.dir-listing,之类的(更多的设定我也没有接触到)。

似乎还有Alias之类的虚拟文件夹,以后再研究。

 

 

WordPress使用Lighttpd的rewrite规则

嗯,即使lighttpd和php都打开了rewrite,可是在Wordpress上,使用的话,还要做点手脚才行。

参考: Lighttpd wordpress Permalink rewrite 办法

Lighttpd virtualhost configuration ~ name-based virtual hosting 

我使用的办法如下:
创建 /etc/lighttpd/wp-rewrite.conf 文件,内容为

url.rewrite-once = (
“^” + wpdir + “(wp-.+).*/?” => “$0”,
“^” + wpdir + “(sitemap.xml)” => “$0”,
“^” + wpdir + “(xmlrpc.php)” => “$0”,
“^” + wpdir + “keyword/([A-Za-z_0-9-])/?$” => wpdir + “index.php?keyword=$1”,
“^” + wpdir + “(.+)/?$” => wpdir + “index.php/$1”
)

然后修改 /etc/lighttpd/lighttpd.conf

$HTTP[“host”] =~ “” {
var.wpdir = “/”
include “wp-rewrite.conf”
}

PS:$HTTP[“host”] =~ “” 中两个“”里面什么也没有是因为我没有用vhost,直接在根目录

重装了VPS,将Apache换成了Lighttpd

好吧,总感觉我将这个VPS折腾的不成样子了,根据不完全统计,买来这一个月已经被我重装系统超过10次(- -b),虽然很大部分是客服的原因(有些系统装上之后跑不动啊),不过不得不承认我太喜欢折腾着东西了……(或许是因为重装挺方便?)

这次重装是因为这个Apache太吃内存了,Gnome也太吃内存了,平常溜进去看看的时候,内存占用都在480M左右,SWAP也要吃掉100~200M,感觉太费劲了,就琢磨了,哎,换成Lighttpd吧,反正也就挂一个Blog,没多少东西,顺便也把Gnome给换掉吧,反正只要有桌面环境就可以了(方便使用DropBox,synaptic等),于是又装回Ubuntu(我装过那串50+的系统列表里面的大概20个,只有3,4个能用,其他都不能启动),顺便找到一个非常简单的桌面环境,叫做Fluxbox(真的很简陋!),把lighttpd,php,mysqlserver等装上之后,顺利的跑起来,内存的话大概占用了350+M,SWAP吃掉10几M,感觉心里暗爽了很多。

不过再重新安装Blog的时候完全的把我吓一跳啊,直接用命令mysqldump来把之前备份的数据库导入的时候,居然没有读出来,还是一个新新的wordpress,把我吓出一身冷汗,结果后来再在phpMyAdmin里面导入之后,数据又回来了,真是险过剃头一百倍。

而且换成Lighttpd之后,rewrite不能正常工作,还要做点手脚,结果是相当的折腾人的说。

不过首次感受到了Dropbox的方便啊,后台静默备份,还原也相当方便,真好啊。

CentOS 5.3 下快速安装配置 PPTP VPN 服务器

来源:http://blog.s135.com/pptp_vpn/

 

—————————————————————

一、CentOS 5.3 下 PPTP VPN 服务器安装

1、安装相关软件

32位版:

yum install -y ppp iptables
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.4.0-1.rhel5.x86_64.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm

64位版:

yum install -y ppp iptables
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.4.0-1.rhel5.x86_64.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.x86_64.rpm

2、配置文件编写

①、配置文件/etc/ppp/options.pptpd

mv /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
vi /etc/ppp/options.pptpd

输入以下内容: 继续阅读