3proxy是一个俄罗斯人写的代理服务器,功能多到眼花,却只占用3m多内存,我试了一下还不错,可以同时开启http、socks、ftp、pop什么什么什么的各种代理,还能将代理模式转换、多个代理负载均衡、代理级联等等,配置却很简单,各位随我来:

首先,windows平台的先上。

下载地址:

https://3proxy.ru/download/

其中3proxy-0.8.7.zip是32位版,最低需要windows vista/2008版本;

3proxy-0.8.7-lite.zip这个是gcc编译的,通用于从win95至今各个windows版本,我为了少维护一个版本,用的就是这个;

3proxy-0.8.7-x64.zip这个是64位版本,最低需要windows vista/2008的64位版本。

 

下载后解压到c:\service\3proxy里面,按照官方的说法,如果不想在服务中特别加入配置文件路径,则应该在bin目录创建3proxy.cfg配置文件,但据我测试的是,在windows平台是必须要加入配置文件路径的,所以么,放在哪里都可以了。。。

然后编辑这个3proxy.cfg配置文件:

#代理如果需要服务器解析,那么使用该dns解析并代理,我看官方的解释,默认是使用第一个的,如果第一个挂了才会使用第二个。如果不配置dns,则会使用服务器配置的dns地址,所以这里不是必须的,你可以注释掉
#nserver 8.8.4.4
#nserver 8.8.8.8
#域名解析最大的缓存条目 默认即可,也可以注释掉
#nscache 65536

#各项连接选项的超时时间
timeouts 1 5 30 60 180 1800 10 60     
#timeouts <BYTE_SHORT> <BYTE_LONG> <STRING_SHORT> <STRING_LONG> <CONNECTION_SHORT> <CONNECTION_LONG> <DNS> <CHAIN>  


#windows 用service ,  linux 用 deamon,这一项是必须的
service


#日志路径 参数D 是每天记录单独的日志文件  
log c:/service/3proxy/logs/3proxy.log D
#日志内容格式
logformat "L%d %H:%M %N-%p %C:%c %R:%r %O %I %h %T err:%E"
#保存最新的10个日志文件
rotate 10


# 代理认证的用户名和密码,这里定义了两个用户,zdw的密码是777,user的密码是pass,CL代表明文密码,多条之间空格分隔
users zdw:CL:777 user:CL:pass
# CL:代表明文密码
# CR:密码使用密文加密
# NT:密文加密


#代理认证类型
auth strong
# none:不需要认证(默认类型)
# iponly:根据源IP地址进行ACL控制
# username:只验证用户名,用于Socks4代理
# nbname:认证基于NetBIOS (Windows系统)
# strong:基于弹窗用户名/密码认证,支持HTTP/POP3/FTP/SOCKSv5的代理类型
# cache:认证缓存,依赖authcache选项
#####  auth strong / auth iponly atrong  可以同时开启多项认证方式


#allow选项,允许这两个用户通过认证,用英文的逗号分隔
allow zdw,user

# allow <userlist> <sourcelist> <targetlist> <targetportlist> operationlist> <weekdayslist> <timeperiodslist>  allow选项的参数,选项支持 *匹配
# deny <userlist> <sourcelist> <targetlist> <targetportlist> <operationlist> <weekdayslist> <timeperiodslist>    deny选项的参数,选项支持 *匹配
#Operation is one of:  代理连接方式支持以下方式
#        CONNECT - establish outgoing TCP connection
#        BIND - bind TCP port for listening
#        UDPASSOC - make UDP association
#        ICMPASSOC - make ICMP association (for future use)
#        HTTP_GET - HTTP GET request
#        HTTP_PUT - HTTP PUT request
#        HTTP_POST - HTTP POST request
#        HTTP_HEAD - HTTP HEAD request
#        HTTP_CONNECT - HTTP CONNECT request
#        HTTP_OTHER - over HTTP request
#        HTTP - matches any HTTP request except HTTP_CONNECT
#        HTTPS - same as HTTP_CONNECT
#        FTP_GET - FTP get request
#        FTP_PUT - FTP put request
#        FTP_LIST - FTP list request
#        FTP_DATA - FTP data connection. Note: FTP_DATA requires access to dynamic
#        non-ptivileged (1024-65535) ports on remote side.
#        FTP - matches any FTP/FTP Data request
#        ADMIN - access to administration interface


#开启一个HTTP代理 端口是20001  -n:关闭windows NTML验证(使用上面定义的账号密码认证)
proxy -n -p20001
#开启一个socks代理 端口是20002
socks -n -p20002

#下面这段是代理级联、负载均衡什么的,我这用不上,全注释掉了
#parent 1000 connect+ 0.0.0.0 20001
    #向后代理,可以向后端转换代理类型,以及负载平衡 
#(注意:此种方式只适用于认证方式为 iponly或strong模式)权重weight为1000均分,所以你如果只有一个上级代理,那么权重就设置为1000吧,如果有多个代理,你可以分别设置300/700   300/400/300  500/500 等,这样才会在一组父代理中按照权重均分。
# parent <weight> <type> <ip> <port> <username> <password> 选项参数
#type is one of:
#        tcp - tcp直连  simply redirect connection. TCP is always last in chain.
#        http - 转发到http代理   redirect to HTTP proxy. HTTP is always last chain.
#        pop3 - redirect to POP3 proxy (only local redirection is supported, can not be used for chaining)
#        ftp - redirect to FTP proxy (only local redirection is supported, can not be used for chaining)
#        connect - parent is HTTP CONNECT method proxy
#        connect+ - parent is HTTP CONNECT proxy with name resolution
#        socks4 - parent is SOCKSv4 proxy
#        socks4+ - parent is SOCKSv4 proxy with name resolution (SOCKSv4a)
#        socks5 - parent is SOCKSv5 proxy
#        socks5+ - parent is SOCKSv5 proxy with name resolution
#        socks4b  -  parent  is  SOCKS4b  (broken  SOCKSv4  implementation  with  shortened server reply. I never saw this kind
       ofservers byt they say there are).  Normally you should not use this option. Do not  mess  this  option  with  SOCKSv4a
       (socks4+).
#        socks5b - parent is SOCKS5b (broken SOCKSv5 implementation with shortened server reply. I think you will never find it
       useful). Never use this option unless you know exactly you need it.
#        admin - redirect request to local ’admin’ service (with -s parameter).
        Use "+" proxy only with "fakeresolve" option


#某一项代理方式可以设置无需记录日志
nolog

#速度限制段
#首先,不限制zdw的速度
nobandlimin zdw
#然后,其他用户整体限制到5m
bandlimin 5120000 *

#bandlimin <rate> <userlist> <sourcelist> <targetlist> <targetportlist> <operationlist>   入相带宽限制
#bandlimout  <rate>  <userlist> <sourcelist> <targetlist> <targetportlist> <operationlist>  出向带宽限制
#nobandlimin   <userlist>  <sourcelist>  <targetlist>  <targetportlist>  <operationlist>  入带宽不限制
#nobandlimout <userlist> <sourcelist> <targetlist> <targetportlist> <operationlist>  出带宽不限制


#用来划分各代理区域的配置参数,比如你可以在配置文件中配置两个代理 一个HTTP代理 一个Socks5代理  那么到第二段Socks5代理的时候,由于配置文件语法格式的限制,所以需要隔离上一个代理选项的配置参数,这里就需要 flash选项来刷新下端即将出现的参数,用来覆盖上端重复的参数。
flush

#下面这两行不是必须的,你可以看着办
#代理服务器向外转发的时候绑定的IP地址
#external 10.0.0.14
#代理本地监听的IP地址
#internal 0.0.0.0

 

需要注意的几点:

1,logs这个目录是需要自行创建的,如果没有,则会报错

2,多数软件的配置文件里面,配置项后面是可以直接追加注释语句的,但是这个3proxy却不行,很多配置项后面如果有注释会直接报错,猜想是需要分析配置项,而字符串解析方面写的比较死劲……所以注释语句必须单独一行,这一点折腾了我好一会……

3,我自己用的没有特殊需求,如果你需要对各种代理配置不同的认证、日志、限速等等,需要每个代理配置完以后加入一个flush命令。

 

配置完以后,打开命令行,进入3proxy的bin目录,执行命令:

3proxy --install c:\service\3proxy\bin\3proxy.cfg

其中的 c:\service\3proxy\bin\3proxy.cfg 替换成你的配置文件路径就好了。

然后呢,启动服务即可:

net start 3proxy

 

Windows平台的就完成了,linux的等会写上。

 

Linux平台的,代码有些问题,挺麻烦的,还是写出来吧:

首先,安装配置这些,复制下面的命令即可,前提是你安装了g++ automake:

wget https://github.com/z3APA3A/3proxy/archive/3proxy-0.8.7.tar.gz
tar zxvf 3proxy-0.8.7.tar.gz
cd 3proxy-3proxy-0.8.7/
make -f Makefile.Linux
make -f Makefile.Linux install

然后,问题来了,本身github有一个自动安装的脚步,但是经我测试,首先他是旧版的,然后没法正常运行……还是自己动手吧,慢慢来:

nano /etc/init.d/3proxyinit
复制内容:
#!/bin/sh

case "$1" in
   start)
       echo Starting 3Proxy
       (/usr/local/bin/3proxy  /etc/3proxy/3proxy.cfg &)
       ;;

   stop)
       echo Stopping 3Proxy
       /usr/bin/killall 3proxy
       ;;

   restart|reload)
       echo Reloading 3Proxy
       /usr/bin/killall -s USR1 3proxy
       ;;
   *)
       echo Usage: \$0 "{start|stop|restart}"
       exit 1
esac
exit 0

这里有点问题,程序的代码里应该是有错,作者说修复了*nix平台的“daemon”问题,但是我git了最新的代码依然不行,所以我这里用了偏门办法让他后台运行……

执行命令让其随系统启动:

chmod  +x /etc/init.d/3proxyinit
update-rc.d 3proxyinit defaults

然后创建日志目录:

mkdir /var/log/3proxy

至于配置文件,复制上面的即可,但是需要改动两处:

1,把service注释掉

2,把日志路径改一下:

log /var/log/3proxy/3proxy.log D

然后呢,就可以用脚本管理了:

启动:
/etc/init.d/3proxyinit start

停止:
/etc/init.d/3proxyinit stop

脚本里面还是有restart的,但是没用。

 

至此,linux平台的也搞定了……

 

如前面所说,这是明文代理,建议参考前面的文章做成加密代理。

作者 听涛

在 “功能强大的代理服务器:3proxy” 有 1 条评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注