Squid代理配置使用
1.Squid简单说明
Squid Cache(简称为Squid)是HTTP代理服务器软件。Squid用途广泛,可以作为缓存服务器,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。Squid程序在Unix一类系统运行。由于它是开源软件,有网站修改Squid的源代码,编译为原生Windows版[2];用户也可在Windows里安装Cygwin,然后在Cygwin里编译Squid。
Squid历史悠久,功能完善。除了HTTP外,对FTP与HTTPS的支持也相当好,在3.0测试版中也支持了IPv6。但是Squid的上级代理不能使用SOCKS协议。
2.使用场景
这里,我有两台服务器。A:10.198.2.21 B:10.198.2.22,其中A具有公网访问能力,B不具备公网访问能力。
因此,可以让B具有公网访问能力或让B某些功能例如yum安装软件能正常使用。本文介绍的就是如下的方案:
在A服务器运行一个squid服务,B的某些操作通过squid来代理转发实现。
3.部署配置
$ sudo apt-get update
$ sudo apt-get install squid
配置文件:
$ vim /etc/squid/squid.conf
acl SSL_ports port 443 # 定义一个名为 SSL_ports 的 ACL(访问控制列表),表示允许的 SSL 端口(443 是 HTTPS 的默认端口)
acl CONNECT method CONNECT # 定义一个名为 CONNECT 的 ACL,表示 HTTP CONNECT 方法,通常用于代理 HTTPS 请求。
# http_access deny !Safe_ports # 拒绝所有不是 Safe_ports 的端口访问(!Safe_ports 表示“不是 Safe_ports”)
http_access deny CONNECT !SSL_ports # 拒绝所有使用 CONNECT 方法且不是 SSL(443)端口的请求
http_access allow localhost manager # 允许本机访问 Squid 的管理页面(cachemgr.cgi)
http_access deny manager # 拒绝所有其他来源访问管理页面(增强安全性)
include /etc/squid/conf.d/*
http_access allow all # 允许所有使用代理。
http_port 3128 # 设置 Squid 监听端口为 3128(客户端通过这个端口连接到代理)
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern . 0 20% 4320
启动服务
$ systemctl enable squid
$ systemctl start squid
4.代理使用
export http_proxy=http://IP:3128
export https_proxy=http://IP:3128
将IP替换为代理服务器的IP地址。这样,其他服务器就可以通过代理服务器进行网络访问了。
5.代理安全配置
如何想实现通过账户密码来使用代理,这里也可以通过httpd-tools工具安装密码生成工具,通过配置squid配置文件,增加用户名和密码配置来实现安全认证。这里我们在内网使用,就不进行安全认证的配置。
如果需要,具体可以参考链接:https://www.volcengine.com/docs/6886/162922