Socks5代理协议 Socks V5

Socks代理协议是作为【应用层】与【传输层】之间的一个中间层。

一、首先客户端向服务器端发起socks代理请求
+—-+———-+———-+
|VER | NMETHODS | METHODS |
+—-+———-+———-+
| 1 | 1 | 1 to 255 |
+—-+———-+———-+
上面的数字表示字节数。VER段为协议版本就是0×05,NMETHODS为后面METHODS的字节数量,每一个字节表示一种方法。

二、服务器回应给客户端
+—-+——–+
|VER | METHOD |
+—-+——–+
| 1 | 1 |
+—-+——–+
VER同样是版本号 0×05,METHOD为服务器端选择的方法,如果传递一个 0xFF,表示没有可以让服务器接受的方法,客户端此时就必须终止连接。

目前的传输方法有:

o X’00′ 无身份验证
o X’01′ GSSAPI
o X’02′ 用户名/密码
o X’03′ to X’7F’ IANA指派
o X’80′ to X’FE’ 保留私用的方法
o X’FF’ 无可接受的方法

三、客户端收到服务器的响应后,如果不是 0xFF,那就表示服务器可以接受客户端的代理请求。然后向服务器端发送
+—-+—–+——-+——+———-+———-+
|VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT |
+—-+—–+——-+——+———-+———-+
| 1 | 1 | X’00′ | 1 | Variable | 2 |
+—-+—–+——-+——+———-+———-+
o VER 版本号: X’05′
o CMD 指令
o 连接 X’01′
o 绑定 X’02′
o UDP相关 X’03′
o RSV 保留的就设置为 0×00
o ATYP 地址类型
o IPv4地址: X’01′
o 域名: X’03′
o IPV6地址: X’04′
o DST.ADDR 目标地址
o DST.PORT 目标端口

如果地址类型为 IPV4,那么就会使用 4个字节分别表示 IP地址的4段。
如果地址类型为 域名,那么就第一个字节表示域名的长度,不用空字节来判断结束。
如果地址类型为 IPV6,那就么会用16个字节来表示IPV6地址。
比如这里我们以 域名 kejibo.com为例:
050100030a6b656a69626f2e636f6d0050
05就是版本号
01表示连接
00保留位
03表示地址类型,这里我们使用域名就是0×03
0a表示域名的长度这里我们是 kejibo.com刚好10个字节。0a就表示10个字节
6b656a69626f 表示 kejibo
2e表示 点
636f6d 表示 com
0050表示端口号 80

四、收到上面的请求后,服务器向客户端发送
+—-+—–+——-+——+———-+———-+
|VER | REP | RSV | ATYP | BND.ADDR | BND.PORT |
+—-+—–+——-+——+———-+———-+
| 1 | 1 | X’00′ | 1 | Variable | 2 |
+—-+—–+——-+——+———-+———-+
o VER 版本号: X’05′
o REP 回复字段:
o X’00′ 成功
o X’01′ SOCKS服务器出错
o X’02′ 连接不合规则
o X’03′ 网络不可连接
o X’04′ 主机不可连接
o X’05′ 连接被拒绝
o X’06′ TTL 超时
o X’07′ 命令不可接受
o X’08′ 地址类型不可授受
o X’09′ to X’FF’ 未分配
o RSV 保留位 0×00
o ATYP 地址类型
o IP V4地址: X’01′
o 域名: X’03′
o IP V6 地址: X’04′
o BND.ADDR 服务器绑定的地址
o BND.PORT 服务器绑定的端口

客户端收到响应后,如果收到的回复是【成功】,那么就可以向服务器端发起常见的请求了,比如 http ftp smtp telnet之类的请求了,服务器端传发这些请求到目标服务器,然后把目标服务器的回应再转给客户端。

发送此篇文章就是通过Chrome,使用Chrome Switchy连接 自己写的一个Go语言的 socks代理服务器,发送出去的。
转载请注明:http://kejibo.com/socks5/

kloxo yum update升级后suphp 500 Internal Server Errors错误的解决方法

闲着没事的时候把一台kloxo面板的服务器yum update升级了一下,因为之前几次升级完全没有问题,所以这次也就没多想就yum update了。

不过yum update后,发现所有php网页都是显示500错误
“Internal Server Errors”。

因为网页从升级前到升级后一直没变过所以肯定不是网页权限的问题。

网上找到把web服务器换到lighttpd,再切换回httpd,还是老样子。

查看/var/log/httpd/suphp_log 文件,里面完全正常,都是一些 [info]信息,没有什么错误或警告。
类似于:
Tue Mar 13 16:48:15 2012] [info] Executing “/home/someone/domain.com/file.php” as UID 1075, GID 1075

所以suphp也应该是正常的。

查找 httpd log日志,找到一些错误信息,都一一下解决,发现问题依旧,所以也不是这个问题。

试了一下:
php-cgi 随便一个php文件。

出来神奇的错误信息:
I/O warning : failed to load external entity “/etc/php-fpm.conf”
Mar 13 16:09:45.354190 [ERROR] fpm_conf_init_main(), line 522: failed to load configuration file: failed to parse conf file

奇怪 kloxo php-5.2.17 不是没有使用php-fpm 吗?怎么出现这种错误,
在自己电脑上的 php-cgi 试了一下就不会出现这个 php-fpm 提示的错误,所以问题也有眉目了,应该是 php版本的问题。

于是:
yum downgrade php*
降级的这个几个包分别是
Downgrading:
php i386 5.2.17-1 lxcenter-updates 3.9 M
php-bcmath i386 5.2.17-1 lxcenter-updates 56 k
php-cli i386 5.2.17-1 lxcenter-updates 2.7 M
php-common i386 5.2.17-1 lxcenter-updates 231 k
php-devel i386 5.2.17-1 lxcenter-updates 544 k
php-gd i386 5.2.17-1 lxcenter-updates 318 k
php-imap i386 5.2.17-1 lxcenter-updates 95 k
php-mbstring i386 5.2.17-1 lxcenter-updates 1.3 M
php-mcrypt i386 5.2.17-1 lxcenter-updates 36 k
php-mhash i386 5.2.17-1 lxcenter-updates 18 k
php-mysql i386 5.2.17-1 lxcenter-updates 254 k
php-pdo i386 5.2.17-1 lxcenter-updates 151 k
php-xml i386 5.2.17-1 lxcenter-updates 305 k

然后再重启一下 httpd
service httpd restart 就行了。

typecho转换到wordpress

typecho快一年多没有更新过了,虽然使用感觉还算不错,不过还是经不住wordpress庞大插件库的诱惑,因为博客本来就没有多少流量,所以也不担心负载的问题,所以就把博客转换到wordpress了。特此做一记录。
使用的转换程序都是网上找的。
转换程序适合:typecho0.8 (10.8.15)到wordpress3.03版本。
typecho2wordpress
WordPress.v3.0.3.Incl.Simp.Chinese.Pack.v1-wpcng
可转换内容:
1、博客
2、附件
3、评论
4、分类
5、标签
转换步骤:
1、在原typecho博客的主机上安装wordpress3.03版本。
2、上传typecho2wordpress转换程序,开始转换。
3、转换完后,将原typecho里面的 /usr/uploads下面的附件放到 wordpress的 /wp-content/uploads 里面。

转换后残留问题:
1、打开wordpress的媒体库,看不到图片,这是因为转换程序将附件记录的里面 post_status 没有设置成 inherit.将 post_type为attachment的posts的post_status属性改为 inherit。
2、博客文章里面的图片及附件链接没有更新,比如typecho附件的图地址为/attachment/id 图片地址为 /usr/uploads/*** 需要更新为wordpress的 /wp-content/uploads/***

于花了一点时间稍微修改了一下转换程序:
typecho2wordpress-kejibo
使用前请自行备份数据库,如果造成任何损失,本人概不负责!
成功转换到 wordpress3.03后,通过wordpress后台自动更新到wodpress最新版本3.21完全没有问题。