51CTO摘录 , 版权归原作者所有

原文如下:

经常有网管询问如何有效的管理员工计算机的网络访问权限,例如屏蔽使用QQ,MSN等聊天工具,禁止BT下载电影等。然而对于一般的交换式网络来说,通过简单的管理工具是不可能实现上面提到的方法的。就好比水流一样,只有从源头截断才能有效果,在中游和下游采取拦截措施只会造成洪灾的爆发。

所以说网络出口才是最有效的管理网络的地点,我们通过在网络出口配置一台双网卡的代理服务器来部署网络管理的全部。今天就由我手把手的教会你如何建立SOCKS5代理服务器。

一、Windows平台下SOCKS5代理服务器的实现思路

首先我要为IT168的读者介绍大名鼎鼎的nec版socks5服务器,用过xNIX系统的读者可能都熟悉,NEC的SOCKS5版软件既开源又免费。不过不经过处理它只能在UNIX及Linux下使用,作为Windows的用户,在Win平台下选择代理服务器比较麻烦,专业的代理软件如ISA系列,体积庞大而且配置相对复杂。好用点的如CCproxy是商业软件,免费使用时不能超过三用户。而免费的软件有的功能能够实现但没有用户控制功能,不能使用密码认证。

难道我们就没有办法在Windows平台下找到满意的代理软件吗?今天就由我告诉大家如何将NEC Socks5 UNIX版编译成WIN32版。这样通过使用编译后的版本就可以轻松的在Windows上建立SOCKS5代理服务器了。

二、编译nec的socks5代理软件WIN32版

第一步:从 http://www.socks.permeo.com下载socks5软件包。当然我们也可以在网上搜索,最新版本是socks5-v1.0r11.tar.gz。

第二步:从http://www.cygwin.com下载并安装cygwin软件,用于稍后编译工作。我们也可以从网上搜索。

第三步:将socks5-v1.0r11.tar.gz解压到cygwin的tmp目录下,即cygwin\tmp\socks5-v1.0r11,解压工具使用最常见的WINRAR即可。

第四步:修改cygwin\usr\include\cygwin\if.h文件,在#define IFF_LOOPBACK    0x8后添加#define IFF_POINTOPOINT 0x10。

第五步:修改socks5-v1.0r11\server\daemon.c,查找chdir("/");在前面添加"//"屏蔽掉此句,使之成为//chdir("/")。

小提示:如果不添加“//”屏蔽该句,则运行socks5会提示"Config: Error opening config file (socks5.conf): No such file or directory"。

第六步:修改socks5-v1.0r11\server\udp.c,找到
/*
if (Authorize(pri, 0) != AUTH_OK) {
S5LogUpdate(S5LogDefaultHandle, S5_LOG_ERROR, 0, "UDP Setup: Setup failed: permission denied");
s5err = SOCKS5_AUTHORIZE;
rval  = EXIT_AUTH;
goto cleanup;
}*/

这段代码将其删除。

小提示:我们也可以不删除这段代码,不过不删除的话运行代理的机器就不可以使用UDP代理了。

第七步:运行cygwin,在cygwin中切换到socks5-v1.0r11目录。

第八步:一次性输入以下命令 
./configure --with-threads --with-libconffile=libsocks5.conf --with-srvconffile=socks5.conf --with-srvpidfile=socks5.pid --with-srvpwdfile=socks5.passwd --with-srvidtfile=socks5.ident

第九步:输入make后回车。

第十步:这样你会发现socks5-v1.0r11\server\Socks5.exe编译出来了,这就是我们所说的WIN32平台的Socks5代理工具的主程序了。

第十一步:加上cygwin\bin\cygwin1.dll(库文件),以及手工编辑的socks5.passwd(存放用户名和密码的文件),socks5.conf(配置文件),就是WIN32版的SOCKS5代理服务器软件的全部了。正常运行时只需要保留这四个文件在同一个目录即可。

第十二步:最后我们测试下制作的程序是否可以使用,进入socks5.exe所在目录,运行“socks5 -s -f”如果出现01904: Socks5 starting at Thu Oct 21 16:07:32 2004 in normal mode则表示软件编译成功。

三、启用代理功能

我们需要在一台服务器上通过刚刚编译好的socks5.exe程序开启代理功能。方法很简单,具体步骤如下:

第一步:双击刚刚编译的socks5.exe运行,出现一个黑乎乎的控制台窗口,将其最小化。

第二步:客户机就可以通过服务器的IP地址和默认端口1080来使用SOCKS5代理服务器了。

第三步:默认端口是1080,可能有的读者觉得比较难记或者公司对该端口进行了封闭,那么可以通过如下方法修改默认的代理端口,方法是加参数-b port。例如想改变代理端口为8088使用“socks5.exe -b 8088”来修改。

小提示:如果我们希望为使用代理的用户分配用户名和密码,阻止非法用户使用代理服务器的话可以使用以下方法。

编辑socks5.conf将#auth - - u前面的“#"符号去掉,再编辑 socks5.passwd,按照 “用户名 密码”的格式一行一回车添加用户名和密码,保存后运行socks5.exe,客户机就必须添加相应的用户名和密码才能正常使用代理服务器了。

总结:其实编译过程虽然复杂但我们只需要配置一次即可,以后启用代理服务器通过运行socks5.exe就可以轻松实现了。

结束

相关资料