linux下制作socks5代理服务器

原创 2006年05月30日 16:07:00

---- 1. 下载Socks 5软件包

---- 用户可以到中国自由软件库(http://freesoft.cei.gov.cn)站点去下载。假设socks5-server-1_0r6-1_i386.rpm 软件包已下载到当前目录下。

---- 2. 安装

---- # rpm -i socks5-server-1_0r6-1_i386.rpm

cp socks5.conf.singlehomed /etc/socks5.conf

 

---- 3. 配置参数

---- Socks 5的配置文件为/etc/socks5.conf。在这个文件里,用户可以对Socks 5服务的多种功能进行设置,有兴趣的读者可以到网上阅读一些相关资料,也可以简单地在服务器上执行命令"man socks5.conf",以便学习它的帮助文档,本文在此不做详细介绍。

---- 这里只假设Socks 5代理服务器要对位于192.168.1.0/24网段的主机做完全代理,配置如下:

# vi /etc/socks5.conf
permit --192.168.1.---

---- 4. 启动

---- 用侦听方式(daemon)启动服务进程效率最高,启动命令如下:

---- # /usr/sbin/socks5

---- 在服务器重启时,为使Socks 5服务能自动启动,还要执行如下命令:

# cd /etc/rc.d/rc3.d
# ln -s ../init.d/socks5.init ./S86socks5
需要注意的是,在Linux平台上,

---- /etc/rc.d/init.d/socks5.init 文件在安装Socks 5软件包时能够自动生成。若该文件不存在,用户可以用"vi"命令简单编辑一个文本文件,比如:

# cd /etc/rc.d/rc3.d
# vi S86socks5
#!/bin/sh
/usr/sbin/socks5
# chmod 755 S86socks5

 

要使用用户验证,首先要建立/etc/socks5.pwsswd文件

内容为:(userA代表用户名。passwdA代表用户userA的密码)
#/etc/socks5.passwd
userA passwdA
userB passwdB
userC passwdC

然后修改/etc/socks5.conf
添加下列语句
auth - - u
或者把:
auth - - -改成auth - - u

添加:
把默认permit - - - - - - 改成permit u - 192.168.0. - - -
即允许来自192.168.0.0/255.255.255.0网段的任何经过用户认证的连接

如果你不想把密码文件存在默认的/etc/socks5.passwd里。想存在自定义的文件,比如/etc/qq.passwd

那就得修改/etc/socks5.conf.添加一项参数

set SOCKS5_PWDFILE /etc/qq.passwd

 

5.运行代理服务:
#socks
在第一次装好socks5之后可以通过运行#/usr/local/bin/socks5 –f –s来测试代理服务能否正常运行,如果出现02716: Socks5 starting at Thu May 20 20:33:58 2004 in normal mode,则表示可以正常运行。

6.停止socks5,只要运行stopsocks -KILL就行,socks5就会停止!

7.高级配置

7.1使用非默认端口:如果想让socks5服务启动的时候不启动默认监听端口1080,比如为8888,可以运行如下命令
# socks5 -b 8888
相应的关服务命令为: 
# stopsocks -p 888 -KILL 

7.2为了密码文件的安全,使用自建的密码文件,比如/etc/myc.passwd。这时,只要修改/etc/socks5.conf文件,在其中新加一条项数:
set SOCKS5_PWDFILE /etc/myc.passwd 
7.3指定SOCKS v5绑定的ip地址和监听的端口。如果不指定绑定的IP将使用0.0.0.0
set SOCKS5_BINDINFC 192.168.0.8:1080 

7.4忽略ident请求。当客户机没有运行identd时,使用SOCKS5_NOIDENT将降低超时值 
set SOCKS5_NOIDENT 

7.5指定连接停顿最长时间。超过最大值后,socks5断开连接 
set SOCKS5_TIMEOUT 15 

7.6socks5将接受SOCKS V4 协议的请求,默认不接受 
set SOCKS5_V4SUPPORT 

7.7指定同时存在的最大子进程数,Socks5预设为64 
set SOCKS5_MAXCHILD 4 

8添加自动启动服务和日志记录
# /usr/local/bin/socks5 -t -s 2>; /var/log/socks5 
#echo "/usr/local/bin/socks5 -t -s 2>; /var/log/socks5" >;>; /etc/rc2.d/rc.local
如果是linux则改rc2.d为rc.d

严重声明:后面的部分与linux下的实现几乎一样,如有雷同重属知识重叠,并向参考过的文章致谢了



 fwizard 回复于:2004-05-21 16:19:37

附录,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 host:port 
host:port 指定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或inetd模式时,此参数不发生作用。 
 
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,使用缺省服务端口
host:port:指定服务器的hostname和该服务的监听端口

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

SOCKS与Linux安装代理服务器ss5

SOCKS协议SOCKS5协议是一组由Internal工程工作小组(IETF)所开发出来的开放软件开放标准,用来处理网络安全的事宜。这个词不是英文字母缩写,而是一个与TCP/IP的socket端口有关...

sock5代理服务器-SOCKS5篇

sock5代理服务器-SOCKS5篇 (2008-07-05 07:41) 分类: Proxy 1.安装SOCKS5 # tar -zxvf socks5-v1.0r11...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

socks5代理服务器dante(sockd)--使用心得

关于socks5代理和dante的介绍,网上资料很多: 描述socks5协议的RFC http://tools.ietf.org/html/rfc1928 socks wiki http://en...

Android Socks5代理服务器程序开发

原理为处理移动端网络断连问题,实现应用无关。我们考虑采用clientproxyInternet的三层架构。从client->proxy这一环节,ProxyDroid已经能够实现。因此接下来主要需要完成...

站群服务器用SS5 SOCKS5 配置多IP/多端口高性能代理服务器(16G内存主机支持超过100万并发S5代理)

SS5 是高性能的 SOCKS 代理服务器,支持 SOCK4 和 SOCKS5 协议。下面的安装指南详细描述了如何在 CentOS 6.x服务器上安装和配置SS5,运行多个 ss5 进程来绑定不同端口...
  • lic95
  • lic95
  • 2015-09-12 22:36
  • 6013

[资料整理]四种代理服务器的原理(二)——SOCKS v5代理服务器的原理

本文由TZWSOHO通过收集网络资料整理而成(百度百科和英文维基百科),文中某些地方可能由于笔者本人技术水平有限而造成翻译上甚至是个人理解上的错漏,欢迎路过本文的各路英雄斧正。另若有需要转载时请高抬贵...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)