刚开始找了一下,发现全是在linux下实现的,我按照readme步骤在rh9下作了一遍,用系统默认的gcc很容易的就搞定了。这里强调的gcc编译器是一个比较关键环节。先用gcc3.3是没有装过去主要问题出在<varvars.h>和ftp上面。没办法,找个gcc3.4准备看一下,结果解压的时候出现校验和错误,我是bin方式上传的啊,搞不懂了,先不管这个了。后来仔细了解后发现gcc2。9系列的在rh9下没有问题。好家伙,好歹要找个for-solaris-sparc的话,找到一个接近版本gcc-2.95.3-pkg.zip。好了罗嗦半天了,就是要这个东东。
当然在solaris8下的话,直接装就可以了,因为sunfreware有for这个东东,但是gcc有什么要求吗?一句话---不知道!!s9下还有哪个gcc版本可以呢,也不知道,知道的告诉我哦!
下载编译器gcc-2.95.3-pkg.zip(www.sunfreeware.com),解压后得到安装包SFWgcc(这个编译器是要SFW支持)的。安装这个包:
#pkgadd –d SFWgcc
默认的安装目录是/opt/sfw,为正确使用这个编译器而设置环境变量:
#PATH=/opt/sfw/bin:/usr/local/bin:/usr/ccs/bin:/usr/bin:/usr/ucb:/etc:.
#export
1。下载socks5安装包,一搜一大堆,现在可能有两个大的区别一个是在win下一个是u下的,后面我给出的这个包名字有的网站上说只在linux下能用,不要管他这一套,继续就是了(其实for solaris8也就是这个了。另外据我所知socks5几乎可以在任何系统下实现的,自己去实验吧)。将socks5安装包socks5-v1.0r11.tar.gz以bin方式上传到RH9/solaris9服务器上。
2。解压缩软件包
#gunzip socks5-v1.0r11.tar.gz
#tar xvf socks5-v1.0r11.tar
3.开始编译
#cd socks5-v1.0r11
#./configure --with-threads
说明:可以根据需要参考readme来作配置,也可在安装后进行配置(推荐这样就可以了,搞了几个别的配置出错了,怕怕啊)
#make
#make install
4.建立/etc/socks5.conf(许多文件都自己建吧,装完后我是没有看到自动生成的)
需要达到的目的:在局域网段(192.168.0)内提供代理服务,要求提供用户名和密码。
要使用用户验证,首先要建立/etc/socks5.pwsswd文件
内容为:
# vi /etc/socks5.passwd
userA passwdA (userA代表用户名。passwdA代表用户userA的密码)
完成/etc/socks5.conf配置文件:
#vi /etc/socks5.conf
auth - - u
permit u - 192.168.0. - - -
注:若改变u和192.168.0.为-,则允许任何用户(不需要用户名和密码)的任意ip使用代理服务;192.168.0.等同于192.168.0.0/255.255.255.0,这个字段同样可以设定某一个ip来使用代理服务。
在解压目录socks5-v1.0r11下的examples目录下提供了几个常用的配置文件内容,可以参考使用。
#cd examples
#ls
sock5.conf.dualhomed sock5.conf.gssapi sock5.conf.multipleservers sock5.conf.server2server sock5.conf.singlehomed 。。。。
每一个配置文件的后缀说明了它所面向的服务内容,需要时可根据其内容作适当更改。
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或.netd模式时,此参数不发生作用。 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和该服务的监听端口 |
| fwizard 回复于:2004-05-21 16:20:42 |
| 欢迎有兴趣的和我共同探讨,可以发站内短信 |
| fwizard 回复于:2004-05-24 15:04:47 |
| 偶晕,看来没有人喜欢玩socks5 的啊 |
| hb_xiaojun 回复于:2004-05-24 15:51:52 |
| 樓主﹐可不可以將你的/etc/socks5.conf 的內容貼出來﹗ |
| fwizard 回复于:2004-05-24 16:50:36 |
| 请看顶楼贴
不是已经贴了吗? 更进一步的,请参照配置部分,并把它们写到配置文件里就ok了 |
| 我爱臭豆腐 回复于:2004-05-24 19:58:14 |
| 好帖子当然是要顶了:)虽然我不使用那个东西.但是看到好东西还是要顶的:) |
| fwizard 回复于:2004-05-25 08:23:07 |
| socksv5 allows UNIX hosts behind a firewall to gain full access to the
Internet without requiring direct IP reachability. socksv5 requires a SOCKS daemon running on a host that can communicate directly with hosts behind the firewall and with hosts on the Internet. socksv5 is based on the original SOCKS, written by David Koblas <koblas@netcom.com>, and the IETF AFT working group. 简单说装个了socks5的服务器相当于一个中转,直接的好处有两个: 1。突破限制,不如说你的公司内部有一台机子可上qq,而其他的被限制了,那么在这台机子上做个socks5服务,别的机子也就可以突破限制上qq了 2。隐藏自身ip,当你用socks5代理玩qq时,对外显示的是代理的ip ok想知道更详细的东西,nec有更详尽的介绍,也可以去看rfc |
| jackylau 回复于:2004-05-25 09:03:48 |
| 我靠!这么简单?爽呀!可以说说他和squid的区别吗? |
| fwizard 回复于:2004-05-25 09:06:44 |
| 哈哈,我也是最近才用到代理,就搞了一下socks5,squid只是听说过名字而已,还望赐教。。。。。。。。。。 |
| wind521 回复于:2004-05-25 09:13:43 |
| 很好的东东,功能大大的好,可以把你的Sock5共享给大家用吗? |
| hb_xiaojun 回复于:2004-05-25 10:34:56 |
| 樓主﹐我在solaris 8 上配置socks5代理時遇到一個問題﹐運行 socks5 -t -s 指令會出現下面的提示﹕
00398:000001: Socks5 starting at Mon May 24 22:18:35 2004 in threading mode 而不是你所提到的 in normal mode. 這種現象可能是什么原因造成的哩? |
| 棉花糖 回复于:2004-05-25 16:34:23 |
| 好贴,Solaris8,gcc3.0安装也成功,Much 3ks |
| fwizard 回复于:2004-05-25 17:08:40 |
| [quote:a8568b1d1c="hb_xiaojun"]樓主﹐我在solaris 8 上配置socks5代理時遇到一個問題﹐運行 socks5 -t -s 指令會出現下面的提示﹕
00398:000001: Socks5 starting at Mon May 24 22:18:35 2004 in threading mode 而不是你所提到的 in normal ..........[/quote:a8568b1d1c] 你配置了线程模式 |
| handsun 回复于:2004-05-28 09:15:57 |
| 谢谢了 |
| real 回复于:2004-05-28 11:28:01 |
| 很不错的文档!谢谢!
先试试! |
| 草中宝 回复于:2004-05-29 21:58:06 |
| 不知道SOCKET5代理 有什么用的?不知道有哪位大虾能简要介绍下。 |
| yuansonghui 回复于:2004-05-30 08:19:21 |
| 是呀,可以讲下吗? |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/









