环境描述
描述项 | 内容 |
---|---|
操作系统 | CentOS Linux release 7.9.2009 (Core) |
1. 简介
Squid 是一个功能全面的缓存代理服务器,它支持著名的网络协议像 HTTP,HTTPS,FTP 等等。将 Squid 放在网页服务器的前端,通过缓存重复请求,过滤网络流量等,可以极大地提高服务器的性能。
2. 在 CentOS 上安装 Squid
Squid 软件包包含在默认的 CentOS 7 源仓库中。想要安装它,以 sudo 用户身份运行下面的命令:
~]$ sudo yum install squid
一旦安装完成,启动并开启 Squid 服务:
~]$ sudo systemctl start squid
~]$ sudo systemctl enable squid
想要验证安装是否成功,输入下面的命令,将会打印出服务的状态:
~]$ sudo systemctl status squid
3. 配置 Squid
Squid 通过编辑 /etc/squid/squid.conf
文件进行配置。新增文件可以使用"include"指令添加到配置文件中。
在做任何修改之前,使用cp命令备份原来的配置文件:
~]$ sudo cp /etc/squid/squid.conf{,.orginal}
想要编辑文件,使用文本编辑器打开它:
~]$ sudo nano /etc/squid/squid.conf
默认情况下,Squid 被配置成在服务器所有网络接口上监听端口3128。
如果你想修改端口号,并且设置监听接口,定位到 http_port
处,并且指定接口 IP 地址和新端口。如果没有接口指定,Squid 将监听所有网络接口。
~]$ sudo vim /etc/squid/squid.conf
以下为配置文件的详细内容:
# Squid normally listens to port 3128
http_port IP_ADDR:PORT
在所有接口上和默认端口上运行 Squid 对大部分用户都很适用。
你可以使用 Access Control Lists (ACLs)来控制 Squid 服务器的访问。
默认情况下,Squid 仅仅允许从本地主机和本地网络来的访问。
如果所有将要使用代理服务器的客户端都有一个固定 IP 地址,你可以创建一个 包含允许 IP 地址的 ACL。
不用在主要配置中添加 IP 地址,我们可以创建一个新配置文件,用来配置地址: /etc/squid/allowed_ips.txt
192.168.33.1
# All other allowed IPs
一旦完成,打开主要配置文件,并且创建一个新的 ACL ,命名为allowed_ips,并且使用http_access指令允许它访问: /etc/squid/squid.conf
# ...
acl allowed_ips src "/etc/squid/allowed_ips.txt"
# ...
http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all
这个http_access规则的顺序很重要。确认你在http_access deny all之前添加了这一行。
http_access指令类似于防火墙规则。Squid 从上到下读取规则,并且后面匹配的规则不会被处理。
不管你对配置文件做了什么修改,你需要重新启动 Squid 服务器来使修改生效:
~]$ sudo systemctl restart squid
4. Squid 身份验证
Squid 可以使用不同的后端,包括 Samba,LDAP 和 HTTP 基本验证来验证用户。
在这个例子中,我们配置 Squid 使用基本验证。它是一个简单的验证方法,内置在 HTTP 协议中。
我们将使用openssl来生成密码,并且附加username:password对到文件/etc/squid/htpasswd文件中,并且显示出来:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
例如,创建一个用户名称为mike,并且密码为Pz$lPk76,你将要运行:
printf "mike:$(openssl passwd -crypt 'Pz$lPk76')\n" | sudo tee -a /etc/squid/htpasswd
mike:2nkgQsTSPCsIo
下一步是配置 Squid 去启用 HTTP 基本验证,并且使用这个文件。
打开主要配置文件,添加下面的内容:
cat /etc/squid/squid.conf
# ...
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# ...
http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all
前面三行我们创建了一个 ACL 名称为authenticated,最后一行允许通过验证用户访问。
重启 Squid 服务:
~]$ sudo systemctl restart squid
5. 配置防火墙
如果你正在运行防火墙,你需要打开端口3128。想要这么做,运行下面的命令:
~]$ sudo firewall-cmd --permanent --add-port=3128/tcp
~]$ firewall-cmd --reload
如果 Squid 运行在另外一个,非默认端口,你需要允许那个端口通过流量。
6. 测试Squid
6.1 Mac和Linux方式,设置临时代理。
export http_proxy=http://xxx.xxx.xxx.xxxx:3128
export https_proxy=http://xxx.xxx.xxx.xxxx:3128
6.2. 在YUM中配置
如果网络环境中使用了代理服务器,作为客户端的YUM仓库配置中就需要配置代理,才能使用基于互联网访问的YUM源
~]# vim /etc/yum.conf
# 在文件末尾添加如下段
proxy= http://<proxyserver>:<proxyport>
proxy_username=USERNAME
proxy_password=PASSWORD
然后清除yum的缓存:
~]# yum clean all
~]# yum makecache
6.3. 在 /etc/profile 中配置
- 编辑 /etc/profile 文件
~]# vim /etc/profile
# 在文件末尾添加以下内容
export http_proxy=http://xxx.xxx.xxx.xxxx:3128
export https_proxy=http://xxx.xxx.xxx.xxxx:3128
- source环境变量
~]# source /etc/profile
6.4 Windows方式,设置临时代理。
set http_proxy=http://xxx.xxx.xxx.xxxx:3128
set https_proxy=http://xxx.xxx.xxx.xxxx:3128
6.5 在服务端监控下日志
tail -f /var/log/squid/access.log
6.6 在终端里面执行下面命令,测试访问。
curl -l "https://www.baidu.com"
七、配置你的浏览器使用代理服务器
现在你已经建立了 Squid,最后一步是配置你喜欢的浏览器去使用它。