Squid
之乎者也 Lv3

Squid 是一个功能强大的代理服务器软件

支持多种协议(如 HTTP、HTTPS、FTP 等),具有完整的缓存管理和访问控制功能。Squid 还支持负载均衡、透明代理、反向代理等高级特性。Squid 的缺点是它需要相对复杂的配置和管理,适合对代理服务器有丰富经验的管理员使用。因此,Squid 通常被用于大型企业中。

以下是 Squid 的使用教程:

  1. 安装 Squid

在 Linux 系统中,可以使用包管理器安装 Squid,例如:

Ubuntu 和 Debian:
1
sudo apt-get install squid
CentOS 和 Fedora:
1
sudo yum install squid
  1. 配置 Squid

Squid 的配置文件默认位于 /etc/squid/squid.conf。可以使用编辑器打开该文件,对其进行配置。

以下是一些常用的配置项:

1
2
3
4
http_port 3128        # 代理服务器监听的端口号
acl allowed_ip src xx.xx.xx.xx/24 # 允许访问代理服务器的 IP 地址段
http_access allow allowed_ip # 允许 IP 地址段访问代理服务器
http_access deny all # 禁止其他 IP 地址访问代理服务器

其中,http_port 指定代理服务器监听的端口号(默认为 3128),acl 指定允许访问代理服务器的 IP 地址段,http_access 指定允许访问代理服务器的 IP 地址段和禁止访问的 IP 地址段。

还可以配置缓存相关的选项、日志记录等选项。

  1. 启动 Squid

使用以下命令启动 Squid:

1
sudo systemctl start squid
  1. 使用 Squid

启动 Squid 后,可以在浏览器中设置代理服务器:

1
2
代理服务器地址: 127.0.0.1
代理服务器端口: 3128

然后访问任何网站时,就会通过 Squid 进行转发。

  1. 更多操作

可以使用以下命令来停止和重启 Squid:

1
2
3
sudo systemctl stop squid

sudo systemctl restart squid

如果需要更改配置文件,可以先停止 Squid,然后编辑配置文件,最后启动 Squid。

需要注意的是,在 Squid 中还可以配置代理缓存、透明代理、反向代理等高级特性。这些特性需要更复杂的配置和管理,需要根据实际需求来决定是否使用。

Squid 透明代理是一种特殊的代理模式,它可以在不需要浏览器配置代理服务器的情况下,对所有 HTTP/HTTPS 流量进行代理。

以下是配置 Squid 透明代理的步骤:

  1. 配置 Squid

在 Squid 配置文件中添加以下配置项:

1
http_port 3128 transparent   # 指定端口号和透明代理模式

其中,http_port 指定代理服务器监听的端口号(默认为 3128),并在后面加上 transparent 表示启用透明代理模式。

还需要在配置文件中添加以下 ACL 规则:

1
2
3
4
acl localnet src 10.0.0.0/8     # 定义本地网络地址段
http_access allow localnet # 允许本地网络访问代理服务器
http_access allow localhost # 允许本机访问代理服务器
http_access deny all # 禁止其他 IP 地址访问代理服务器

其中,acl 定义本地网络地址段,http_access 允许本地网络和本机访问代理服务器,http_access deny all 禁止其他 IP 地址访问代理服务器。

  1. 配置防火墙

启用 Squid 透明代理之后,还需要在防火墙中添加以下规则,将流量重定向到 Squid 监听的端口:

1
2
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3128

其中,--dport 80 指定 HTTP 流量,--dport 443 指定 HTTPS 流量,--to-port 3128 指定转发到 Squid 监听的端口号。

  1. 重启 Squid 和防火墙

完成配置后,需要重启 Squid 和防火墙,让配置生效:

1
2
sudo systemctl restart squid
sudo systemctl restart iptables

启用透明代理后,客户端无需配置代理服务器,所有流量都会经过 Squid 进行转发。需要注意的是,透明代理有一定的限制,例如不能支持身份验证、DNS 解析等功能,因此需要根据实际需求来决定是否使用。