这两天在玩 Squid,一个功能颇为丰富的网络代理(缓存)软件。
GFWList 是一个 AutoProxy 维护的一个列表,顾名思义。
Squid 通过 ACL 为每个访问分类,为每个请求分类,控制行为。与目的网站相关的有:dstdomain
(目标域名)、dstdom_regex
(目标域名,正则表达式) 和dst_as
(目标 AS 号)等,具体用法见 官方文档。
GFWList 使用的是 Adblock 一样的格式,给它全转成正则表达式,然后使用dstdom_regex
匹配就好了。写了个转换脚本(gfwlist2regex.py),运行后自动下载转换生成黑白名单,方便日后更新。
修改 Squid 设置,例如这样:
# ...
acl cn dstdom_regex 'cn.url_regex.lst'
acl gfwed dstdom_regex 'gfw.url_regex.lst'
prefer_direct on
# 默认直连
never_direct allow gfwed
never_direct deny cn
# 白名单直连失败将尝试使用代理;如使用
# always_direct allow cn 将禁止白名单使用代理。
cache_peer localhost parent 1234 0 name=s1 weight=5
cache_peer localhost parent 4321 0 name=s2 weight=10
# ... |
# ...
acl cn dstdom_regex 'cn.url_regex.lst'
acl gfwed dstdom_regex 'gfw.url_regex.lst'
prefer_direct on
# 默认直连
never_direct allow gfwed
never_direct deny cn
# 白名单直连失败将尝试使用代理;如使用
# always_direct allow cn 将禁止白名单使用代理。
cache_peer localhost parent 1234 0 name=s1 weight=5
cache_peer localhost parent 4321 0 name=s2 weight=10
# ...
黑名单里的必须走上级代理(cache_peer);其余先尝试直接访问,如果被重置,将会转而尝试上级代理。挺智能的。
你这帖子要加关键字负载均衡啊。。
其实我挺怀疑这种负载均衡的效果究竟有多大及是否必要,要是实现了顺带做个测试吧?
能实现多路线互相备份及时切换我就满足了,因为偶尔会出现一条线路延迟/丢包突然飚高的情况…