如何设置Squid的代理转发?

Forward Proxy

1 基础知识

1.1 Squid的层次结构

1.1.1 什么是层次结构


如上图所示:
– 将多个Squid连接在一起形成一个“网络”或高速缓存的层次结构
– 图中绿色线代表父子关系的层次结构(上游下游关系)
– 图中蓝色代表兄弟关系的层次结构(平等关系)

1.1.2 复杂的层次结构


如上图所示:
– 以上层次结构由刚才简单的父子结构与兄弟结构组成
– 以上结构实现负载均衡的功能

1.2 如何实现层次结构

1.2.1 代理转发

– Squid使用“cache_peer”指令提供父节点的缓存

1.2.2 cache_peer指令的模式

– never direct模式,父节点失败不能直接连接源服务器,如果父节点失败或无法访问,则每个请求都导致错误消息
– prefer direct模式,父节点失败允许直接连接源服务器,如果父节点失败或无法访问,则连接到源服务器而不是父节点
注:失败是指没有ICP或HTCP回复

1.2.3 never direct模式

cache_peer parentcache.foo.com parent 3128 0 no-query default
never_direct allow all

注:以上使用never_direct指令宣告父节点失败不能直接连接源服务器

1.2.4 prefer direct模式

cache_peer parentcache.foo.com parent 3128 0 no-query
prefer_direct off
nonhierarchical_direct off

注:
以上使用prefer_direct指令宣告首选从DNS中列出源服务器尝试
以上使用nonhierarchical_direct指令宣告往父节点的请求继续发送
hierarchy_stoplist指令是prefer direct模式的另外一种实现(适用于Squid-3.2之前的版本)

1.3 cache_peer指令的使用

1.3.1 指令的格式

cache_peer hostname type http-port icp-port [options]

– hostname参数,指定转发的代理服务器主机名称(IP地址亦可)
– type参数,可选值有“parent”(父母)、“sibling”(兄弟)和“multicast”(多播)
– http-port参数,指定转发的代理服务器通讯端口,默认值3128
– icp-port参数,查询对象的邻居缓存,如果不支持ICP或HTCP,设置为0
– options参数,可选的其他选项(不一一列举)

1.3.2 参数的参考文档

如果你需要了解更加详细的参数,请参阅以下文档,
http://www.squid-cache.org/Doc/config/cache_peer/

2 最佳实践

2.1 环境搭建

当前假设你有一个代理网关,请按照如下教程安装配置搭建二级代理服务器,
https://www.cmdschool.org/archives/1154

2.2 配置二级代理连接上级代理

2.2.1 修改配置

vim /etc/squid/squid.conf

加入如下配置:

cache_peer 192.168.0.1 parent 8080 0 no-query default login=cmdschool\user:password
never_direct allow all

注:以上代码使用域身份登录上级的企业代理网关并将自己作为代理

2.2.2 检查配置语法

squid -k parse

2.2.3 重启服务使配置生效

systemctl restart squid

2.2.4 将代理指向本机的Squid服务端口

export https_proxy="http://127.0.0.1:3128"
export http_proxy="http://127.0.0.1:3128"

2.2.5 测试二级代理通讯

curl http://www.cmdschool.org
curl https://www.cmdschool.org

参阅文献
==================

Squid转发的架构介绍
——————
https://wiki.squid-cache.org/Features/CacheHierarchy?highlight=%28cache_peer%29

Squid的cache_peer指令详解
————————
http://www.squid-cache.org/Doc/config/cache_peer/

Squid的cache_peer指令使用范例
—————————-
https://wiki.squid-cache.org/ConfigExamples/Reverse/SslWithWildcardCertifiate?highlight=%28cache_peer%29

没有评论

发表回复

Forward Proxy
如何基于openSSH部署Socks代理服务?

1 前言 一个问题,一篇文章,一出故事。 笔者需要实现Socks代理服务以便于内网的电脑客户端可以通 …

Forward Proxy
如何修改Squid的日志格式?

1 前言 一个问题,一篇文章,一出故事。 笔者查看Squid的访问日志发现时间部分是时间戳,笔者感觉 …

Forward Proxy
如何配实现Squid多开实例同时运行?

1 前言 一个问题,一篇文章,一出故事。 笔者整理本文的原因是遇到Squid遇到需要在同一台服务器启 …