代理服务器-Squid介绍和应用

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一章介绍了Web服务器,其中以Nginx为主,本章我们来讲解几个代理软件:Squid,Haproxy,LVS,FRP(内网穿透)。

前面我们在介绍Web服务器的时候,介绍过Nginx的正向代理,实际上如果要使用正向代理,一般不会使用Nginx来做,而是使用更专业的代理软件:Squid来实现。当然Squid实际上有很多功能,我们这里主要介绍他的正向代理(或者叫透明代理)。

在讲解代理之间,我们先普及几个Linux系统里面关于代理的几个参数或者说环境变量:

http_prxoy:当你尝试通过HTTP访问网络资源时,你的请求会首先被发送到这个指定的代理服务器。格式通常是:http_proxy=http://proxy-server:port如果代理服务器需要认证,可能还需要提供用户名和密码,如:http_proxy=http://username:password@proxy-server:port。

https_proxy:和http_类似,只是请求的是https。

默认这2个参数在未配置之前,是找不到这2个环境变量,如果配置以后,则对应的请求都会先转发到对应的代理服务器上面,然后从代理服务器在转发出去。

Squid部署

bash 复制代码
yum -y install squid
systemctl start squid
systemctl enable squid

Squid配置文件介绍

普通部署核心就是修改允许通过的ip和端口。

yaml 复制代码
# 定义了名为 localnet 的来源 IP 地址段,供后面引用
acl localnet src 10.0.0.0/8         # RFC1918 可能的内部网络
acl localnet src 172.16.0.0/12      # RFC1918 可能的内部网络
acl localnet src 192.168.0.0/16     # RFC1918 可能的内部网络
acl localnet src fc00::/7           # RFC 4193 本地私有网络范围
acl localnet src fe80::/10          # RFC 4291 链路本地(直接连接)机器
# 定义目标端口名称,供后面引用
acl SSL_ports port 443              # HTTPS 端口
acl Safe_ports port 80              # HTTP
acl Safe_ports port 21              # FTP
acl Safe_ports port 443             # HTTPS
acl Safe_ports port 210             # WAIS
acl Safe_ports port 1025-65535      # 未注册端口
acl Safe_ports port 280             # HTTP-MGMT
acl Safe_ports port 488             # GSS-HTTP
acl Safe_ports port 591             # FileMaker
acl Safe_ports port 777             # 多语言 HTTP
# 定义 CONNECT 方法的 ACL
acl CONNECT method CONNECT
# 拒绝非目标端口的访问
http_access deny !Safe_ports        # 只允许上面定义的目标端口通过
http_access deny CONNECT !SSL_ports # 只允许 CONNECT 方法访问 SSL 端口
# 只允许来自本地管理请求
http_access allow localhost manager # 允许本地管理请求
http_access deny manager            # 拒绝其他管理请求
# 允许来自上面定义的 IP 地址段和本机使用代理,其他都拒绝
http_access allow localnet          # 允许 localnet 定义的地址段
http_access allow localhost         # 允许本机访问
http_access deny all                # 拒绝所有其他请求
# 监听默认端口
http_port 3128
# 崩溃信息存储目录
coredump_dir /var/spool/squid
# 缓存刷新策略
refresh_pattern ^ftp:               1440  20%  10080
refresh_pattern -i (/cgi-bin/|\?)   0     0%   0
refresh_pattern .                   0     20%  4320

使用Squid

ini 复制代码
#临时定义,永久定义需要 添加到环境变量里面 
export http_proxy=192.168.31.120:3128
export https_proxy=192.168.31.120:3128
bash 复制代码
#成功使用的网络链接
 tcp 0  0 192.168.31.121:39314    192.168.31.120:3128     ESTABLISHED 6846/wget 

#成功的日志
1744359965.994    723 192.168.31.198 TCP_TUNNEL/200 5793 CONNECT objects.githubusercontent.com:443 - HIER_DIRECT/185.199.108.133 -

#拒绝的日志
1744360105.239      0 192.168.31.198 TCP_DENIED/403 3922 CONNECT dlcdn.apache.org:443 - HIER_NONE/- text/html

这里的代码和http的代码是一样的,200是成功,403是没权限(失败)。

案例

某私有云有一个yum服务器,为内网服务器提供yum源。但是由于这个机器是不通外网的,所以他没有办法去外网同步资源,这个时候我们就可以找一台具有公网能力,并且和这个yum服务器互通的机器,然后在这个机器部署Squid软件,并根据需求配置对于的ip和端口限制,这样我们的yum服务器只需要添加对于的http_proxy或者https_proxy代理,他就具有具备访问公网的能力。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
belldeep37 分钟前
WSL 安装 Debian 12 后,Linux 如何安装 curl , quickjs ?
linux·运维·debian·curl·quickjs
l1t39 分钟前
Debian上安装PostgreSQL的故障和排除
运维·postgresql·debian
%#RulER#%3 小时前
哈工大计算机系统2024大作业——Hello的程序人生
linux·笔记·程序人生
y1x2y33 小时前
【HITCSAPP 哈工大计算机系统期末大作业】 程序人生-Hello’s P2P
linux·程序人生·ubuntu
God_archer3 小时前
程序人生-hello’s P2P
linux·c语言·汇编·程序人生
西域曼波王3 小时前
哈尔滨工业大学计算机系统大作业程序人生-Hello’s P2P
linux·c语言·编辑器·vim
无效的名字4 小时前
如何安装并使用RustDesk
linux·运维·服务器
唐可盐6 小时前
解决docker运行zentao 报错:ln: failed to create symbolic link ‘/opt/zbox/tmp/mysq
运维·docker·容器
Amo Xiang6 小时前
Python 解释器安装全攻略(适用于 Linux / Windows / macOS)
linux·windows·python·环境安装
明金同学6 小时前
电脑wifi显示已禁用怎么点都无法启用
运维·服务器·网络