Squid 基础配置.note
·环境准备:
三台 Linux:Web(Apache2)、代理(Squid)、客户端
1、在 Web服务器上 安装 Apache2:
因为 apache2 是安装后默认就会启用http的,因此不用进行过多配置
apt install -y apache2·服务器的 主机名 需要和 hosts 文件中的能够对应上,否则容易出问题
一、【http】Squid 正向代理:
·安装 Squid:
apt install -y squid1、配置 使用IP进行访问:
(1)配置 Squid 主配置文件:
cd /etc/squid
cp squid.conf squid.conf.bak //备份一份 主配置文件
egrep -v '^$|^#' squid.conf.bak > squid.conf
vim /etc/squid/squid.conf将deny(拒绝)改为 allow(允许)

(2)使用ACL 定义一行允许IP(可有可无)

(3)使用‘reload’重新读取配置文件。不使用‘restart’,因为速度会很慢
systemctl reload squid
systemctl status squid(4)客户端 使用 curl 进行访问:
1、客户端下载 curl:
apt install -y curl3、进行访问:
· 格式:
curl -x http://代理服务器地址:3128 -L http://Web服务器地址
- 选项:
-I //查看访问状态详细信息(不加 -I则直接访问网页【列出网站首页的内容】)访问成功

2、配置 使用域名进行访问:(因为域名需要使用 ACL 允许了才能够访问)
(1)配置 ACL:
cd /etc/squid
vim squid.conf
·参数、命令解释:
.baidu.com //表示三级域名 *.baidu.com
acl [acl名称] dstdomain [要匹配的目标域名]
http_access [要执行的操作【允许访问/拒绝访问】] [输入上方定义的‘acl名称’]
· 参数解释:
dstdomain //用于定义 目标域名
dst //用于定义 目标地址(2)【如果有DNS服务器则跳过这一步】编写 服务器 和 客户端 本地的hosts解析:
vim /etc/hosts
192.168.10.101 www.baidu.com(3)客户端进行访问:
·命令行:
curl -x http://192.168.110.11:3128 -L http://www.baidu.com -I

·浏览器:
1、先 配置 浏览器代理:


2、设置 代理服务器地址:

·进行访问:

二、【http】Squid 反向代理:
1、在 正向代理的基础上配置:
vim squid.conf
# 新增两条:
http_port 80 accel defaultsite=www.baidu.com //监听80端口;使用 accel模式;将所有acl没有匹配的请求解析到‘www.baidu.com’
cache_peer www.baidu.com parent 80 0 no-query originserver //定义一个缓存节点,
·重新读取配置文件:
systemctl reload squid2、在 客户端 上进行访问:
1、关闭 浏览器代理:

2、更改hosts解析或者DNS,将其指向代理服务器:
vim /etc/hosts
3、访问 网站:
(1)使用命令行进行访问:
·使用 域名 进行访问:
curl www.baidu.com -I
·使用 IP地址 进行访问:
curl 192.168.110.11 -I //使用 Squid服务器的 IP地址
(IP地址解析时间可能会稍微久一点,原因暂未发现)
(2)使用 浏览器进行访问:
·使用 域名 进行访问:

·使用 IP地址 进行访问:

三、使用 ACL 拒绝指定的IP:
1、拒绝访问:
vim squid.conf
2、客户端上尝试访问:
访问被拒绝

四、【https】Squid 正向、反向代理:
1、配置 CA根证书,颁发服务器所需的证书:
(1)创建 CA根证书颁发机构:
·定义用户申请证书时的一些参数:
vim /etc/ssl/openssl.cnf
:set number //开启 行号
:203 //将下标移动至 第203行
subjectAltName=DNS:*.baidu.com,DNS:baidu.com,IP:192.168.10.101,IP:192.168.110.11 //一个IP的Web的地址用于正向解析,一个IP是Squid的地址,用于反向解析
·创建 CA根证书颁发机构:
/usr/lib/ssl/misc/CA.pl -newca //创建CA【注意内容不要输错】
/usr/lib/ssl/misc/CA.pl -newreq-nodes //创建证书申请及私钥
/usr/lib/ssl/misc/CA.pl -sign //签发证书cp newcert.pem /etc/ssl/web.pem
cp newkey.key /etc/ssl/web.key(2)编辑 squid文件:
vim /etc/squid/squid.conf
# 增加一条
·重启服务:
systemctl reload squid(3)将 CA根证书 传输给 客户端,让其信任:
scp ~/demoCA/cacert.pem root@192.168.110.120:/root2、在 客户端上进行信任:
(1)命令行:
cp cacert.pem /usr/local/share/ca-certificates/ca.crt
update-ca-certificates(2)浏览器:



3、【反向代理】在 客户端上 进行访问:
(1)命令行:
curl https://www.baidu.com -I
(2)浏览器:

五、拒绝访问特定的内容:
1、配置 ACL:
vim squid.conf
2、客户端再次访问:

六、使用 ansible 配置:
1、配置 ansible:
(1)配置 主机清单:
vim /etc/ansible/hosts
(2)配置 ansible 配置文件:
vim /etc/ansible/ansible.cfg
(3)测试访问:

2、在 被控端上 配置 Squid,并将配置文件传到主控端:

·将配置文件传输到主控端:
scp squid.conf root@192.168.1.254:/etc/ansible/vars3、编写剧本:
vim 01-configure_Squid.yml
·运行剧本:
ansible-playbook 01-configure_Squid.yml