#!/usr/local/bin/3proxy
# 是的,3proxy.cfg 可以是可执行的,在这种情况下,你应该放置类似以下内容:
# config /usr/local/3proxy/3proxy.cfg
# 来指定在重新加载时 3proxy 应该读取哪个配置文件。
# system "echo Hello world!"
# 如果代理启动时需要执行某些外部命令,可以使用 system。
# 我们可以配置 nservers 来避免不安全的 gethostbyname() 使用 <button class="citation-flag" data-index="1">。
nserver10.1.2.1
nserver10.2.2.2
# nscache 很好地节省了速度、流量和带宽。
nscache65536
# nsrecord porno.security.nnov.ru 0.0.0.0
# 没有人能够通过名称访问 porno.security.nnov.ru。
# nsrecord wpad.security.nnov.ru www.security.nnov.ru
# wpad.security.nnov.ru 将解析为 www.security.nnov.ru。
timeouts15306018018001560
# 在这里我们可以更改超时值。
users3
APA3A:CL:3apa3a "test:CR:$1$qwer$CHFTUFGqkjue9HyhcMHEe1"
# 注意,"" 是必需的,否则 $... 被视为包含文件名。
# $1$qwer$CHFTUFGqkjue9HyhcMHEe1 是 MD5 加密格式的 'test' 密码。
# users $/usr/local/etc/3proxy/passwd
# 这个例子展示了如何包含密码文件。对于包含的文件,
# <CR> 和 <LF> 被视为字段分隔符。
# daemon
# 现在我们将不再依赖任何控制台(守护进程化)。daemon 必须在 *nix 上给出
# 任何重要命令之前。
service
# 在 NT 下如果希望 3proxy 作为服务启动,则 service 是必需的。
# log /var/log/3proxy/log D
log
c:\3proxy\logs\3proxy.log D# log 允许指定日志文件位置和轮换,D 表示日志文件每天创建一次。
# logformat "L%d-%m-%Y %H:%M:%S %z %N.%p %E %U %C:%c %R:%r %O %I %h %T"
# logformat "Linsert into log (l_date, l_user, l_service, l_in, l_out, l_descr) values ('%d-%m-%Y %H:%M:%S', '%U', '%N', %I, %O, '%T')"
# 兼容 Squid access.log:
#
# "- +_G%t.%. %D %C TCP_MISS/200 %I %1-1T %2-2T %U DIRECT/%R application/unknown"
# 或者,更兼容的格式没有 %D
# "- +_G%t.%. 1 %C TCP_MISS/200 %I %1-1T %2-2T %U DIRECT/%R application/unknown"
#
# 兼容 ISA 2000 代理 WEBEXTD.LOG(字段用 TAB 分隔):
#
# "- + L%C %U Unknown Y %Y-%m-%d %H:%M:%S w3proxy 3PROXY - %n %R %r %D %O %I http TCP %1-1T %2-2T - - %E - - -"
#
# 兼容 ISA 2004 代理 WEB.w3c
#
# "- + L%C %U Unknown %Y-%m-%d %H:%M:%S 3PROXY - %n %R %r %D %O %I http %1-1T %2-2T - %E - - Internal External 0x0 Allowed"
#
# 兼容 ISA 2000/2004 防火墙 FWSEXTD.log(字段用 TAB 分隔):
#
# "- + L%C %U unnknown:0:0.0 N %Y-%m-%d %H:%M:%S fwsrv 3PROXY - %n %R %r %D %O %I %r TCP Connect - - - %E - - - - -"
#
# 兼容 HTTPD 标准日志(Apache 和其他):
#
# "-""+_L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %I"
# 或者更兼容的格式没有错误代码
# "-""+_L%C - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" 200 %I"
# 在日志文件中,我们希望用下划线代替空格。
logformat"- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
# archiver gz /bin/gzip %F
# archiver zip zip -m -qq %A %F
# archiver zip pkzipc -add -silent -move %A %F
archiver
rar rar a -df -inul %A %F# 如果指定了压缩器,日志文件将在关闭后被压缩。
# 你应该指定扩展名、路径到压缩器和命令行,%A 将被替换为存档文件名,%f - 原始文件名。
# 原始文件不会被删除,因此压缩器应处理它。
rotate30
# 我们将保留最后 30 个日志文件。
auth
# auth nbname
# auth strong
# auth 指定用户身份验证类型。如果你指定 none,代理不会做任何事情来检查用户名。
# 如果你指定 nbname,代理会向客户端的 UDP/137 发送 NetBIOS 名称请求包并解析
# messanger 服务的 NetBIOS 名称。
# Strong 意味着代理将检查密码。对于强身份验证,未知用户将不允许使用代理,无论 ACL 如何。
# 如果你不想检查用户名但希望 ACL 生效,你应该指定 auth iponly。
# allow ADMINISTRATOR,root
# allow * 127.0.0.1,192.168.1.1 * *
# parent 1000 http 192.168.1.2 80 * * * 80
# allow * 192.168.1.0/24 * 25,53,110,20-21,1024-65535
# 如果用户名匹配 ADMINISTRATOR 或 root,或者客户端 IP 是 127.0.0.1 或 192.168.1.1,
# 我们将允许一切。否则,我们将重定向任何对端口 80 的请求到我们的 Web 服务器 192.168.0.2。
# 我们将允许从网络 192.168.1.0/24 到 SMTP、POP3、FTP、DNS 和非特权端口的任何出站连接。
# 注意,redirect 也可以与代理或 portmapper 一起使用。它允许你为不同的客户端重定向请求到不同的端口或不同的服务器。
# 共享互联网访问
external10.1.1.1
# external 是 3proxy 用于出站连接的地址。0.0.0.0 表示任何接口。使用 0.0.0.0 不好,因为它允许连接到 127.0.0.1。
internal192.168.1.1
# internal 是代理监听传入请求的接口地址。127.0.0.1 表示只有本地主机才能使用此代理。这是你应该为客户端指定的代理 IP。
# 你可以使用 0.0.0.0,但你不应该这样做,因为这样可能会导致你的网络中出现开放代理。
auth
# 不需要身份验证。
dnspr
# dnsproxy 监听 UDP/53 以回答客户端的 DNS 请求。它需要 nserver/nscache 配置。
# external $./external.ip
# internal $./internal.ip
# 这只是提供外部和内部地址的另一种形式,允许你从文件中读取这些地址。
auth
# 我们想保护内部接口。
deny
* * 127.0.0.1,192.168.1.1
# 并允许 HTTP 和 HTTPS 流量。
allow
* * * 80-88,8080-8088 HTTPallow
proxy
auth
# pop3p 将在没有任何身份验证的情况下使用。这不是一个好的选择,
# 因为可以使用 pop3p 访问任何端口。
pop3p
tcppm25
# udppm -s 53 ns.my.provider 53
# 我们可以将端口 TCP/25 映射到提供商的 SMTP 服务器,并将 UDP/53 映射到提供商的 DNS。
# 现在我们可以使用我们的代理作为 SMTP 和 DNS 服务器。
# -s 开关用于 UDP 表示“单包”服务 - 而不是设置一段时间的关联,只会在 1 个数据包上设置关联。
# 对于像 DNS 这样的服务非常有用,但对于一些大规模的服务(如多媒体流或在线游戏)则不然。
auth
flush
allow3
maxconn20
socks
# 对于 socks,我们将使用密码身份验证和不同的访问控制 -
# 我们刷新先前配置的 ACL 列表并创建一个新的列表,以允许用户 test 和 3APA3A 从任何位置连接。
auth
flush
internal127.0.0.1
allow3
maxconn3
admin
# 仅允许用户 3APA3A 从 127.0.0.1 地址通过 127.0.0.1 地址访问管理界面。
# 将外部 80 和 443 端口映射到内部 Web 服务器。
# 下面的例子展示了如何使用 3proxy 在内部网络中发布 Web 服务器到互联网。
# 我们必须切换内部和外部地址并刷新任何 ACL。
# auth none
# flush
# external $./internal.ip
# internal $./external.ip
# maxconn 300
# tcppm 80 websrv 80
# tcppm 443 websrv 443
# chroot /usr/local/jail
# setgid 65535
# setuid 65535
# 现在我们不需要任何 root 权限。我们可以 chroot 并设置 setgid/setuid。