3proxy是一个俄罗斯人写的代理服务器,功能多到眼花,却只占用3m多内存,我试了一下还不错,可以同时开启http、socks、ftp、pop什么什么什么的各种代理,还能将代理模式转换、多个代理负载均衡、代理级联等等,配置却很简单,各位随我来:
首先,windows平台的先上。
下载地址:
其中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平台的也搞定了……
如前面所说,这是明文代理,建议参考前面的文章做成加密代理。
非常详细的教程,一步一步照着做,搭建成功,感谢博主!!