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

运维小路

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

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

相关推荐
小义_3 分钟前
Linux 补充
linux·服务器
晴天的雨.9925 分钟前
【Linux】Shell 命令以及运行原理+权限管理
linux·运维·服务器
djjjx.9 分钟前
Linux工具篇 (六):GDB 调试从底层逻辑到高阶实战
linux·运维·服务器·gdb
IT大白鼠12 分钟前
彭大帅的AI运维助手实战案例 5 · 新接手的服务器,先让 AI 摸底
运维·服务器·人工智能
coward9130 分钟前
RK3576 双千兆 GMAC 驱动加载异常问题排查与总结
linux
幼儿园蛋小黄40 分钟前
从设备树到 ARM 驱动:嵌入式 Linux 驱动开发学习总结
linux·arm开发·驱动开发
dishugj1 小时前
HANA集群计划内切换与维护操作
java·linux·数据库
该逃避避1 小时前
出海广告跑不起来怎么办?动态住宅IP助力广告跑量
运维·服务器·网络
一条泥憨鱼1 小时前
【从0开始学习计算机网络】| ip协议-ttl-标识-分片偏移-ip分片与重组
运维·服务器·网络
爱吃香菜的初学者3 小时前
十四.Linux——消息队列
linux·运维·开发语言