SOCKS5协议是一组由Internal工程工作小组(IETF)所开发出来的开放软件开放标准,用来处理网络安全的事宜。这个词不是英文字母缩写,而是一个与TCP/IP的socket端口有关的安全标准,作用于TCP/IP协议栈的应用层与传输层之间,处于OSI的7层标准模型的会话层,提供了会话层到会话层之间的安全方案,不受应用层变化的影响。
协议设计的目的是让高权限的用户穿过防火墙的限制访问外部资源,而一般用户则限制访问外部资源。当时设计者考虑到几乎所有使用TCP/IP通信的应用软件都使用socket(套接字,实际上是一组应用程序接口)完成底层的数据通信。为了方便软件开发者使用该协议,协议设计者就刻意对应了几组socket编程最经典的操作,并且将协议定名为SOCKS。SOCKS5是第五版,相对第四版作了大幅度的增强。首先,它增加了对UDP协议的支持;其次,它可以支持多种用户身份验证方式和通信加密方式;最后,修改了SOCKS服务器进行域名解析的方法。
上层应用软件连接网络时,如果使用的是TCP/IP协议,而且支持SOCKS5的接口,那么就可以使用代理服务器访问网络。代理服务器实现了SOCKS5的具体协议,本文选择的Linux下广泛使用的ss5代理服务器。Windows下有nec的sock5代理服务器也很好,另外还有CCproxy。
由于本人使用的是一台新的VPS服务器,基本编译环境都没有,需要首先安装:
apt-get install build-essential
apt-get install gcc
上述环境安装好之后,可以测试一下gcc是否安装完成:
gcc --version
首先需要下载ss5服务器源码:
wget -c http://sourceforge.net/projects/ss5/files/ss5/3.8.9-6/ss5-3.8.9-6.tar.gz/download
直接安装ss5服务器会报如下的错误:
checking for security/pam_misc.h... no
configure: error: *** Some of the headers weren't found ***
因此需要安装pam开发包,Ubuntu、Debian、Mint使用:
apt-get install libpam0g-dev
CentOS、Fedora或者RHEL使用:
yum install gcc pam-devel
之后还需要安装ldap开发包,否则make阶段会出错:
SS5OpenLdap.c:29:18: fatal error: ldap.h: No such file or directory
安装ldap包:
apt-get install libldap2-dev
之后make的时候还会出现openssl/md5.h不存在的错误,因此还需要安装:
apt-get install openssl
apt-get install libssl-dev
这样安装完成之后,进行make,到最后会发现出现链接错误:
undefined reference to `MD5_Init'
经过查找资料,了解到这个是环境变量的问题,解决办法如下:
如果在编译时提示undefined reference to `MD5_Final’之类的信息,需要在运行configure前,执行export EXTRA_LIBS=’-lcrypto’
尝试上述办法之后,make && make install就安装完成。
默认情况下配置文件在/etc/opt/ss5文件夹下,默认使用的是1080端口,任何用户都可以连接,需要配置之后来控制权限。
对于ss5.conf文件配置使用用户名密码验证,同时可以添加指定ip的访问规则:
auth 0.0.0.0/0 - u
permit u 0.0.0.0/0 - 0.0.0.0/0 - - -....
在ss5.passwd文件中设置用户名和密码,格式为:
user1 password1
最后还可以修改默认端口。在/etc/rc.d/init.d/ss5文件中启动的命令后添加端口号:
daemon /usr/sbin/ss5 -t $SS5_OPTS -b 0.0.0.0:port
在/etc/sysconfig/ss5中将SS5_OPTS取消注释:
SS5_OPTS=” -u root”
最后启动服务器,也可以加入到开机自启动的服务中:
/etc/rc.d/init.d/ss5 start chkconfig --add ss5 chkconfig --level 345 ss5 on
SOCKS5代理需要在本地安装客户端,个人的本地电脑是Windows,推荐使用Proxifier,非常好用,可以指定应用程序上网。
参考:
1、http://wuzh.me/ubuntu-11-10-%E5%AE%89%E8%A3%85ss5-%E5%92%8C-stunnel/
2、http://linux.cn/article-5508-1.html
3、http://blog.csdn.net/denny_233/article/details/7445005
4、http://lxsym.blog.51cto.com/1364623/769691/