代理服务器-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代理,他就具有具备访问公网的能力。

运维小路

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

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

相关推荐
snowfoootball17 分钟前
(自用)Linux 常用命令自查文档
linux·运维·服务器
墨染 殇雪31 分钟前
webshell及冰蝎双击无法打开?
运维·服务器·webshell·webshell管理工具
R-G-B39 分钟前
Linux常见命令总结 合集二:基本命令、目录操作命令、文件操作命令、压缩文件操作、查找命令、权限命令、其他命令
linux·基本命令·目录操作命令·linux常见命令·压缩文件操作·权限命令·查找命令
Chukai12341 分钟前
Windows 和 Linux 系统下修改防火墙机制开放端口
linux·运维·windows
FL16238631291 小时前
[ubuntu][C++]onnxruntime安装cpu版本后测试代码
linux·c++·ubuntu
逻辑羊驼1 小时前
VSCode+MobaXterm+X11可视化界面本地显示
运维·服务器·ubuntu·3d
fendouweiqian2 小时前
nginx 反向代理使用变量的坑
运维·nginx
Zacks_xdc2 小时前
【前端】使用Vercel部署前端项目,api转发到后端服务器
运维·服务器·前端·安全·react.js
W-GEO2 小时前
Nginx 高性能调优指南:从配置到原理
运维·nginx
pound1272 小时前
Linux
linux·运维·服务器