Squid 基础配置.note

noteId: 64698F1D23864E28BC6F6A86F72F74FB · 原始路径:/ALL/Linux - A模块/服务配置/Squid 代理/Squid 基础配置.note · 图片:32 · 附件待处理:0

·环境准备:
三台 Linux:Web(Apache2)、代理(Squid)、客户端
1、在 Web服务器上 安装 Apache2:
因为 apache2 是安装后默认就会启用http的,因此不用进行过多配置
apt install -y apache2
·服务器的 主机名 需要和 hosts 文件中的能够对应上,否则容易出问题
 
一、【http】Squid 正向代理:
 
·安装 Squid:
apt install -y squid
 
 
1、配置 使用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 curl
 
3、进行访问:
· 格式:
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 squid
 
 
2、在 客户端 上进行访问:
 
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:/root
 
 
2、在 客户端上进行信任:
(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/vars
 
 
3、编写剧本:
vim 01-configure_Squid.yml
·运行剧本:
ansible-playbook 01-configure_Squid.yml