sock5代理服务器-SOCKS5篇

来源:互联网 发布:最优化求非线性方程 编辑:程序博客网 时间:2024/05/01 18:08
sock5代理服务器-SOCKS5篇 (2008-07-05 07:41)
分类: Proxy


1.安装SOCKS5
# tar -zxvf socks5-v1.0r11.tar.gz
# cd socks5-v1.0r11
# patch -p0 < socks-trans-v1.3-patch
# ./configure --with-threads
# make
# make install
2.配置SOCKS5
# cd examples
# cp socks5.conf.singlehomed /etc/socks5.conf
# vi /etc/socks5.conf
======+======+======+======+======+======
permit u - - - - -           
set SOCKS5_BINDINFC 192.168.0.8:1080
auth - - u
set SOCKS5_NOIDENT
set SOCKS5_TIMEOUT 15
set SOCKS5_V4SUPPORT
set SOCKS5_MAXCHILD 25
======+======+======+======+======+======
3.SOCKS5用户认证
# vi /etc/socks5.passwd
======+======+======+======+======+======
userA passwdA
userB passwdB
userC passwdC
======+======+======+======+======+======
4.测试与运行SOCKS5
测试SOCKS5
# socks5 -f -s 
XXXXX: Socks5 starting at Mon Jun 21 01:23:45 2002 in normal mode 
显示上面的信息表示服务配置没有问题。
启动SOCKS5
# touch /var/log/socks5
# socks5 -t -s 2>> /var/log/socks5
停止SOCKS5
# stopsocks -KILL
重新加载配置文件
# stopsocks -HUP
 
附录->高级配置:
1.使用非默认端口:比如为8888:
# socks5 -b 8888 -t -s 2>> /var/log/socks5 
相应的关服务命令为: 
# stopsocks -p 8888 –KILL
如果想限制只是某个IP段(192.168.0.0/255.255.255.0)可以访问,可以改成
permit - - 192.168.0. - - -
或者只允许某个IP(192.168.0.10)可以访问使用,可以改成
permit - - 192.168.0.10 - - -
2.使用自建的密码文件,比如/etc/my.passwd。这时,只要修改/etc/socks5.conf文件,在其中新加一条项数: 
set SOCKS5_PWDFILE /etc/my.passwd
3.指定SOCKS v5绑定的ip地址和监听的端口。如果不指定绑定的IP将使用0.0.0.0 
set SOCKS5_BINDINFC 192.168.0.8:1080
4.忽略ident请求。当客户机没有运行identd时,使用SOCKS5_NOIDENT将降低超时值 
set SOCKS5_NOIDENT
5.指定连接停顿最长时间(分钟),超过最大值后,socks5断开连接 
set SOCKS5_TIMEOUT 15
6.让SOCKS V4 协议的请求,默认不接受 
set SOCKS5_V4SUPPORT
7.指定同时存在的最大子进程数,Socks5预设为64 
set SOCKS5_MAXCHILD 25
socks5.conf中permit后面的6个“-”的含义是
permit auth cmd src-host dest-host src-port dest-port [user-list]

附录,socks5 server配置文件(只要定制好自己的配置方式后,将条目写到/etc/socks5.conf中即可。有人用cp example目录下的文件方法来生成配
置文件,个人不提倡这样,反正我也出现过错,自己按格式来保证不出错) 
socks5.conf通常由以下几个方面的内容构成:
-ban host:定义拒绝服务的客户列表 
-authentication:定义Socks5服务器使用的用户认证方法 
-interface:定义Socks5服务器绑定的ip地址和服务端口 
-variables and flags:定义Socks5服务器运行的环境 
-proxies:定义客户可以通过Socks5服务器访问的地址列表以及Socks5服务器访问这些地址的方法 
-access control:定义Socks5服务器接受或拒绝客户连接的规则
下面我们分别来讲述这些条目对应的语法:
ban host 
语法:ban source-host source-port 
说明:Socks5服务器将拒绝接受来自source-host:source-port的客户连接。
authentication 
语法:auth source-host source-port auth-methods 
说明:对于来自source-host:source-port的客户连接,Socks5服务器将使用
auth-methods所定义的用户认证方法。对于没有定义认证方法的客户将使用任何可以使用的认证方法。
interface 
语法:interface hostpatern portpattern interface-address 
说明:来自source-host:source-port的客户连接由interface-address处理;目的地址为source-host:source-port的客户连接由Socks5 代理服务器从
interface-address发出连接请求。
variables 
语法:set variable value 
说明:定义Socks5运行参数,Socks5有以下一些常用的运行参数:
SOCKS5_BINDINTFC hostort 
hostort 指定socks5运行的主机和端口号,用于代替缺省的端口。忽略时,socks5用0.0.0.0作为主机值。
SOCKS5_CONFFILE filename 
Filename 指定配置文件。在许多系统中,缺省是/etc/socks5.conf。在运行socks5之前,设置这个变量。如果有多个socks5
daemon运行,为每个daemon使用不同的配置文件。
SOCKS5_DEMAND_IDENT 
当客户没有响应ident 请求时,认证失败。使用SOCKS5_DEMAND_IDENT确认每个连接有一个关联的用户名。
SOCKS_ENCRYPT 
如果可能的话,请求下一个socks5进程加密数据。SOCKS5_ENCRYPT 仅仅在编译socks5时包括了GSS-API认证时,才有意义。
SOCKS5_FORCE_ENCRYPT 
当认证方式支持加密时,强迫客户加密数据。
SOCKS5_IDENTFILE filename 
Filename指定存储ident信息的文件名。在许多系统中,缺省是/tmp/socks5.ident。当有多个socks5 daemon运行时,SOCKS5_IDENTFILE非常有用。
SOCKS5_MAXCHILD val 
val指定同时存在的最大子进程数。Socks5预设为64。可以降低预设置。不能超过64。Socks5运行在线程模式时,忽略此参数。当运行在oneshot或inet
d模式时,此参数不发生作用。
SOCKS_NOIDENT 
忽略ident请求。当客户机没有运行identd时,使用SOCKS5_NOIDENT将降低超时值。
SOCKS_NOINTCHK 
请求下一个socks5进程执行没有完整检查的代理请求。只有在编译时加入GSS-API认证时,SOCKS5_NOINTCHK才发生作用。

SOCKS_NONETMASKCHECK 
指示daemon忽略检查主机的子网掩码。缺省时,daemon检查掩码,如果在同一子网时,在检查配置文件之前,直接连接。

SOCKS5_REVERSEMAP 
总是试图影射地址到主机名。缺省时,socks5只有当主机名或域名在配置文件中使用时才影射。设置后,log文件将纪录主机名,这将降低性能。
SOCKS5_SERVICENAME 
总是影射端口号到服务名。缺省时,socks5只有当服务名在配置文件中使用时才影射。设置后,log文件将纪录服务名,这将降低性能。
SOCKS5_PASSWD [password] 
当socks5 daemon连接到其它socks服务器时,如果采用Username/Password 认证,用它来指定密码。
SOCKS5_PIDFILE filename 
指定存储socks5进程ID的文件名。Socks5缺省存贮PID在/tmp/socks5.pid。你可以用—bindintfc参数或设置SOCKS5_BINDINTFC环境变量运行socks5在
不同于缺省端口的其它端口。当运行在不同于缺省端口的其它端口时,socks5存贮PID在/tmp/socks5.pid-port。
SOCKS5_PWDFILE filename 
指定密码文件。在许多系统中,缺省是/etc/socks5.passwd。
SOCKS5_TIMEOUT minutes 
指定连接停顿最长时间。超过最大值后,socks5断开连接。忽略此值时,缺省是15。
SOCKS5_UDPPORTRANGE port1-port2 
指定一个Socks5用来发送UDP包的UDP端口范围。
SOCKS5_USER [user id] 
当socks5 daemon连接到其它socks server时,如果采用Username/Password认证,用此变量指定用户名。
SOCKS5_V4SUPPORT 
缺省时,socks5只接受SOCKS5协议(rfc 1928)的请求。设此变量后,socks5将接受SOCKS V4 协议的请求。
proxies 
语法:proxy-type dest-host dest-port proxy-list 
说明:当客户请求的目的为dest-host:dest-port时,Socks5将使用proxy-list中的代理服务器请求数据。
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] 
说明:通过这两条语句所定义的规则来进行客户访问控制。
我们再对以上语法作进一步的解释:
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的主机
port的表示方法 
-:表示任意端口 
service name:用/etc/service中定义的服务名来表示,如telnet 
port number:直接指定数字端口,如80 
[port_start,port_end]:指定一个端口范围,如[1024,6000]表示从端口1024到6000,(1024,6000)表示从端口1025到5999
auth的值 
n:无用户认证 
u:使用username/password用户认证方法 
k:使用Kerberos用户认证方法 
-:使用任何可用的用户认证方法
cmd的值 
-:任何命令 
c:connect 
b:bind 
u:UDP 
p:ping 
t:traceroute
user的值 
-:任何用户
proxy的值 
socks5: Socks 5 
socks4: SOCKS 版本4 
noproxy:不使用代理而直接连接
server的值 
host: 指定服务器的hostname,使用缺省服务端口 
hostort:指定服务器的hostname和该服务的监听端口
 
 
 
 
 
 
 
#!/bin/bash
RETVAL=0
prog="socks5"
start(){
 #FILE=/tmp/socks5.pid-1080
 #if [ $FILE   ]
 /usr/local/bin/socks5 -t -s 2> /var/log/socks5
 RETVAL=$?
 return $RETVAL
}
stop(){
 echo -n -e $"Stopping $prog: \t[ OK ]\n"
 /usr/local/bin/stopsocks -KILL
 RETVAL=$?
 return $RETVAL
}
reload(){
 echo -n -e $"Reloading configuration:\t[ OK ]\n"
 PID=`cat /tmp/socks5.pid-1080`
 kill -HUP -$PID
 RETVAL=$?
 return $RETVAL
}
restart(){
 stop
 start
}
# See how we were called.
case "$1" in
 start)
start
;;
 stop)
stop
;;
 status)
status $prog
;;
 restart)
restart
;;
 reload)
reload
;;
 *)
echo $"Usage: $0 {start|stop|status|restart|reload}"
RETVAL=1
esac
原创粉丝点击