一、 socks概述
socks其实是一种网络代理协议。该协议所描述的是一种内部主机(使用私有ip地址)
通过socks服务器获得完全的inte.net访问的方法。具体说来是这样一个环境:用一台运行s ocks的服务器(双宿主主机)连接内部网和inte.net,内部网主机使用的都是私有的ip地址 ,内部网主机请求访问inte.net时,首先和socks服务器建立一个socks通道,然后再将请求 通过这个通道发送给socks服务器,socks服务器在收到客户请求后,向客户请求的inte.net 主机发出请求,得到相应后,socks服务器再通过原先建立的socks通道将数据返回给客户。 当然在建立socks通道的过程中可能有一个用户认证的过程。
socks和一般的应用层代理服务器是完全不同的。一般的应用层代理服务器工作在应 用层,并且针对不用的网络应用提供不同的处理方法,比如http、ftp、smtp等,这样,一旦 有新的网络应用出现时,应用层代理服务器就不能提供对该应用的代理,因此应用层代理服务器的可扩展性并不好;与应用层代理服务器不同的是,socks代理服务器旨在提供一种广义 的代理服务,它与具体的应用无关,不管再出现什么新的应用都能提供代理服务,因为sock s代理工作再线路层(即应用层和传输层之间),这和单纯工作在网络层或传输层的ip欺骗(
或者叫做网络地址转换nat)又有所不同,因为socks不能提供网络层网关服务,比如icmp包 转发等。这三种技术的比较如下表所示
类别
ip欺骗(nat)
socks v5
应用层代理
工作区域
网络层或传输层
线路层
应用层
用户认证
无
有
有
应用可扩展性
好
好
无
网络服务
有
无
无
目前的socks版本是第五版,第五版同第四版的区别主要在于第五版提供多种不同的用户 认证方法和udp代理。
二、 socks v5的安装
1. 软件的获取
对于非商业使用socks是免费的,你可以从www.socks.nec.com/cgi-bin/download.pl
下载socks v5的最新版,当前的最新版本是socks5-v1.0r11.tar.gz,使用redhat的朋友也可
以到redhat的官方站点下载相应的socks v5的rpm包。下面我们以socks v5 的最新版socks5
-v1.0r11.tar.gz为例讲述socks v5的安装过程。
2. 将下载来的socks5-v1.0r11.tar.gz拷贝到/tmp目录下
#cp socks5-v1.0r11.tar.gz /tmp
3. 解开压缩包
#tar xvzf socks5-v1.0r11.tar.gz
4. 进入socks5-v1.0r11开始编译
#cd socks5-v1.0r11
#./configure
#make
#make install
如果要更改缺省的安装选项,请仔细阅读readme和install文档的相关说明。如
果编译过程出现了问题,也可以到以下站点下载我编译的binary包:
http://www.yxtc.edu.cn/soft/linux/socks/socks5.tar.gz
下载后将该socks5.tar.gz binary包拷贝到根目录/,运行tar xvzf socks5.tar.gz即可。相
关的文件路径如下:
#tar xvzf socks5.tar.gz
usr/bin/socks5
usr/bin/stopsocks
usr/bin/runsocks
usr/lib/libsocks5.a
usr/lib/libsocks5_sh.so
usr/man/man1/stopsocks.1
usr/man/man1/socks5.1
usr/man/man1/socks5.1.gz
usr/man/man1/socks5_clients.1
usr/man/man1/runsocks.1
usr/man/man5/socks5.conf.5
usr/man/man5/socks5.conf.5.gz
usr/man/man5/socks5.passwd.5
usr/man/man5/socks5.passwd.5.gz
usr/man/man5/libsocks5.conf.5
etc/socks5/libsocks5.conf
etc/socks5/passwd
etc/socks5/socks5.conf
etc/rc.d/init.d/socks5
三、 socks v5的配置
我们主要通过socks5.conf文件来配置socks v5服务器。该配置文件的路径可以在编
译socks v5时自行指定,缺省路径为:/etc/socks5.conf。socks v5服务器在每次启动或收
到hup信号时读入该配置文件的内容。该配置文件通常由以下几个方面的内容构成:
-ban host:定义拒绝服务的客户列表
-authentication:定义socks v5服务器使用的用户认证方法
-interface:定义socks v5服务器绊定的ip地址和服务端口
—variables and flags:定义socks v5服务器运行的环境
-proxies:定义客户可以通过socks v5服务器访问的地址列表以及socks v5服务
器访问这些地址的方法
-access control:定义socks v5服务器接受或拒绝客户连接的规则
下面我们分别来讲述这些条目对应的语法:
1. ban host:
语法:ban source-host source-port
说明:socks v5服务器将拒绝接受来自source-host:source-port的客户连接。
2. authentication:
语法:auth source-host source-port auth-methods
说明:对于来自source-host:source-port的客户连接,socks v5服务器将使用auth-method
s所定义的用户认证方法。对于没有定义认证方法的客户将使用任何可以使用的认证方法。
3. interface:
语法:interface hostpatern portpattern interface-address
说明:来自source-host:source-port的客户连接由interface-address处理;目的地址为so
urce-host:source-port的客户连接由socks v5 代理服务器从 interface-address发出连接
请求。
4. variables:
语法:set variable value
说明:定义socks v5运行参数,socks v5有以下一些常用的运行参数:
socks_bindintfc host:port:指定socks v5绑定的ip地址和监听的端口。如果
不指定绑定的ip地址,socks v5将使用0.0.0.0。
5. proxies:
语法:proxy-type dest-host dest-port proxy-list
说明:当客户请求的目的为dest-host:dest-port时,socks v5将使用proxy-list中的代理服
务器请求数据。
6. access control:
语法:permit auth cmd src-host dest-host src-port dest-port [user-list]
deny auth cmd src-host dest-host src-port dest-port [user-list]
说明:通过这两条语句所定义的规则来进行客户访问控制。
我们再对以上语法作进一步的解释:
1. host的表示方法:
-:表示任意主机
n1.:表示n1.0.0.0/255.0.0.0
n1.n2.:表示n1.n2.0.0/255.255.0.0
n1.n2.n3.:表示n1.n2.n3.0/255.255.255.0
.domain.name:表示主机名以.domain.name结尾的主机
some.domain.name:表示主机名为some.domain.name的主机
2. port的表示方法:
-:表示任意端口
service name:用/etc/service中定义的服务名来表示,如te.net
port number:直接指定数字端口,如80
[port_start,port_end]:指定一个端口范围,如[1024,6000]表示从端口1024到6000,
(1024,6000)表示从端口1025到5999
3. auth的值:
n:无用户认证
u:使用username/password用户认证方法
k:使用kerberos用户认证方法
-:使用任何可用的用户认证方法
4. cmd的值:
-:任何命令
c:connect
b:bind
u:udp
p:ping
t:traceroute
5. user的值:
-:任何用户
6. proxy的值:
socks5: socks v5
socks4: socks 版本4
noproxy:不使用代理而直接连接
7. server的值:
host: 指定服务器的hostname,使用缺省服务端口
host:port:指定服务器的hostname和该服务的监听端口
下面是一些例子:
auth ― - u
说明:对所有的客户连接都使用username/password用户认证方法
permit u - 192.168.1. - - -
说明:允许来自192.168.1.的任何经过用户认证的连接
更多的例子请参考以下资源:http://www.socks.nec.com/reference/socks5.html
四、 socks v5一些常见问题的说明
1. windows客户端的配置
有些windows的应用程序,如ie、oicq等等本身就支持socks代理服务器,
但是更多的windows应用程序是不提供对socks代理服务器的支持的,这时候
我们就可以利用一些相应的工具来使得这些应用程序可以使用socks代理服务
器。其中最常用的工具sockscap,可以从以下的网址下载sockscap:http://www.socks.nec
.com/cgi-bin/download.pl.
2. 用户认证问题
socks v5已经具有了用户认证功能,诸如ie等应用程序虽然提供了对socks
代理服务器的支持,但是并不能进行用户认证,这种情况下我们也只能用sockscap
等工具来提供ie的用户认证接口。需要注意的是,socks的认证过程并不会象
squid一样弹出认证窗口。
3. 运行模式问题
socks v5具有以下几种运行模式:
standalont:这是socks v5缺省的运行模式
preforking:该模式适合服务器资源有限的情况,因为我们可以事先指定运行的子
进程数。可以用-p选项指定socks以preforking模式运行。
.netd:和te.net等服务一样通过.netd超级服务器运行socks
threaded:在linux平台上,我们推荐使用该模式运行socks,这样能获得最佳性能。
4. 超时问题
在一个客户会话空闲超过15分钟后,该会话将被断开,可以使用socks5_timeout 变量改变该
值。
5. 绑定失败问题
有时候会出现bind failed for xxx.xxx.xxx.xxx: ...的提示,通常这是因为socks所绑定的
端口已被其他程序所使用的缘故,可以通过更改该端口的值来解决这类问题。
6. socks v5的日子问题
socks v5的日志缺省为/var/log/messages,我们可以通过重新编译socks v5来将socks v5日
志单独记录到一个文件中。具体请参考readme文件。
更多的配置实例请参考http://www.socks.nec.com/reference/socks5.html.
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器