Squid代理服务器(传统代理、透明代理)

news2024/9/21 3:16:58

Squid代理服务器(传统代理、透明代理)

  • 一、Squid代理服务器
    • 1、代理的工作机制
    • 2、代理的类型
    • 3、使用代理的好处
  • 二、安装Squid服务
    • 2、修改 Squid 的配置文件
    • 3、Squid 的运行控制
    • 4、编写 Squid 服务脚本
  • 三、构建传统代理服务器
    • 1、squid服务器
    • 2、web1的配置
    • 3、客户端配置(添加代理)
    • 4、检测
  • 四、构建透明代理服务器
    • 1、Squid服务器配置
    • 2、开启路由转发,实现本机中不同网段的地址转发
    • 3、web1服务器(添加一条静态路由)
    • 4、客户端关闭代理,修改win10地址为100网段
    • 5、查看 Squid 访问日志的新增记录
  • 总结
    • 1、Squid代理服务器的作用
    • 2、代理的类型

一、Squid代理服务器

  • Squid主要提供缓存加速、应用层过滤控制、web服务隐藏真实IP(安全性)的功能。

1、代理的工作机制

  • 代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。
  • 将获得的网页数据(静态 Web 元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。

2、代理的类型

传统代理:

  • 适用于Internet,需在客户机指定代理服务器的地址和端口。

透明代理:

  • 客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理。

反向代理:

  • 如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存(静态)在本地,供下一个请求者使用。

3、使用代理的好处

  • 提高web访问速度
  • 隐藏客户机的真实IP地址

二、安装Squid服务

服务器	IP
Squid服务器	192.168.80.72
web服务器	192.168.80.73
客户机	169.254.204.97

1、编译安装Squid

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

yum -y install gcc gcc-c++ make
cd /opt
#上传squid-3.5.28.tar.gz软件包到/opt目录下
tar zxvf squid-3.5.28.tar.gz 
cd /opt/squid-3.5.28
./configure --prefix=/usr/local/squid \     #指定安装目录路径
--sysconfdir=/etc \                         #指定配置文件路径
--enable-arp-acl \                          #MAC地址管控,防止客户端使用IP欺骗
--enable-linux-netfilter \                  #使用内核过滤
--enable-linux-tproxy \                     #支持透明模式
--enable-async-io=100 \                     #异步IO,提升存储性能
--enable-err-language="Simplify_ Chinese" \ #错误信息的显示语言
--enable-underscore \                       #允许URL中有下划线
--disable-poll \                            #关闭默认使用poll模式
--enable-gnuregex                           #使用GNU正则表达式


./configure --prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simplify_Chinese" \
--enable-underscore \
--disable-poll \
--enable-epoll \
--enable-gnurege

make -j2 && make install

ln -s /usr/local/squid/sbin/* /usr/local/sbin
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var/       #此目录用于存放缓存文件

在这里插入图片描述

2、修改 Squid 的配置文件

vim /etc/squid.conf
......
-----56--插入------
http_access allow all    #放在http_access deny all 之前,允许任意客户机使用代理服务,控制规则自上而下匹配
http_access deny all
http_port 3128           #用来指定代理服务监听的地址和端口(默认的端口号为3128)

-----61--插入------
cache_effective_user squid     #添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
cache_effective_group squid    #添加,指定账号基本组
coredump_dir /usr/local/squid/var/cache/squid   #指定缓存文件目录

在这里插入图片描述

3、Squid 的运行控制

squid -k parse    #检查配置文件语法是否正确
squid -k rec      #重新加载配置文件

#启动Squid, 第一次启动Squid服务时,会自动初始化缓存目录
squid -zX   #-z选项用来初始化缓存目录
squid      #启动squid 服务

netstat -natp | grep squid

在这里插入图片描述

4、编写 Squid 服务脚本

vim /etc/init.d/squid

#!/bin/bash
#chkconfig: 2345 90 25
#2345是默认自启动级别,如是 - 代表任何级别都不自启动; 90是启动优先级,25是停止优先级,优先级范围是0100,数字越大,优先级越低。

PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"

case "$1" in
   start)
     netstat -natp | grep squid &> /dev/null
     if [ $? -eq 0 ]
     then
       echo "squid is running"
       else
       echo "正在启动 squid..."
       $CMD
     fi
   ;;
   stop)
     $CMD -k kill &> /dev/null
     rm -rf $PID &> /dev/null
   ;;
   status)
     [ -f $PID ] &> /dev/null
        if [ $? -eq 0 ]
          then
            netstat -natp | grep squid
          else
            echo "squid is not running"
        fi
   ;;
   restart)
      $0 stop &> /dev/null
      echo "正在关闭 squid..."
      $0 start &> /dev/null
      echo "正在启动 squid..."
   ;;
   reload)
      $CMD -k reconfigure
   ;;
   check)
      $CMD -k parse
   ;;
   *)
      echo "用法:$0{start|stop|status|reload|check|restart}"
   ;;
esac


chmod +x /etc/init.d/squid
chkconfig --add squid
chkconfig squid on
service squid restart

在这里插入图片描述

三、构建传统代理服务器

环境配置
主机	        操作系统	        IP地址	         软件、安装包、工具
Squid-Server	CentOS7	     192.168.92.13	   squid-3.5.28.tar.gz
Web1	        CentOS7	     192.168.92,14	         httpd
客户机       	Windows	     169.254.204.97	          ——

1、squid服务器

vim /etc/squid.conf 
......
http_access allow all
http_access deny all
http_port 3128
cache_effective_user squid
cache_effective_group squid

#63行插入
cache_mem 64 MB			            #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB			#允许用户下载的最大文件大小,以字节为单位,当下载超过指定大小的Web对象时,浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制
maximum_object_size 4096 KB			#允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

systemctl start squid
netstat -natp | grep squid

service squid restart或
systemctl restart squid

#修改防火墙规则
iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
iptables -L INPUT

在这里插入图片描述
在这里插入图片描述

2、web1的配置

Web1(192.168.92.14)

systemctl stop firewalld.service
setenforce 0
yum -y install httpd
systemctl start httpd
netstat -natp | grep 80

在这里插入图片描述

3、客户端配置(添加代理)

谷歌浏览器:
设置--》高级--》系统--》打开代理设置--》设置代理
 

在这里插入图片描述

在这里插入图片描述

4、检测

在浏览器输入Web服务器IP地址访问,查看Web服务器访问日志,显示的是由代理服务器替客户机在访问。

http://192.168.92.14

在这里插入图片描述

查看Web1访问日志的新增记录

tail -f /var/log/httpd/access_log

在这里插入图片描述

四、构建透明代理服务器

环境配置 
主机	          操作系统	   IP地址	           服务、安装包、工具
Squid-Server	CentOS7	   ens32:192.168.92.13    squid-3.5.28.tar.gz
							ens37:12.0.0.10
Web1	        CentOS7  	12.0.0.12	               httpd
客户端	        Windows  	192.168.92.100	            ——

添加网卡
ens32\ens35

1、Squid服务器配置

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
vim ifcfg-ens37

systemctl restart network
ifconfig 

#60行修改添加提供内网服务的IP地址,和支持透明代理选项 transparent
vim /etc/squid.conf
......
http_access allow all
http_access deny all

http_port 192.168.91.13:3128 transparent

systemctl restart squid
netstat -natp | grep 3128

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、开启路由转发,实现本机中不同网段的地址转发

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

修改防火墙规则
iptables -F
iptables -t nat -F    #添加防火墙规则(将来源为100网段:80/443端口的流量重定向到3128端口)
iptables -t nat -I PREROUTING -i ens32 -s 192.168.184.0/24 -p tcp --dport 80 -j REDIRECT --to 3128	
iptables -t nat -I PREROUTING -i ens32 -s 192.168.184.0/24 -p tcp --dport 443 -j REDIRECT --to 3128    #若进行重启,则需要配置以下规则
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT   #开启路由转发

在这里插入图片描述

3、web1服务器(添加一条静态路由)

systemctl stop firewalld.service
setenforce 0
vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
ifconfig

在这里插入图片描述

4、客户端关闭代理,修改win10地址为100网段

客户机测试(192.168.80.100)
关闭客户机的浏览器之前设置的代理服务器的功能后访问 http://12.0.0.12

访问web1服务器

在这里插入图片描述

5、查看 Squid 访问日志的新增记录

tail -f /usr/local/squid/var/logs/access.log
Squid代理服务器则是检测到客户机访问目标网站

在这里插入图片描述

查看 Web 访问日志的新增记录,显示的是由代理服务器的外网口代替客户机在访问
tail -f /var/log/httpd/access_log

可以看到是代理服务器外网口12.0.0.100访问的12.0.0.12

在这里插入图片描述

总结

1、Squid代理服务器的作用

  • Squid主要提供缓存加速,提高web访问速度
  • 应用层过滤控制
  • 代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址

2、代理的类型

传统代理:

  • 适用于Internet,需在客户机指定代理服务器的地址和端口。

透明代理:

  • 客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理。

反向代理:

  • 如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;
  • 否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存(静态)在本地,供下一个请求者使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/715054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

libevent实践02:读取标准输入的数据

对于libevent的知识一点不了解,通知编写测试代码,发现问题,解决问题,一步一步入门学习。 CMakeLists.txt文件: project(libevent_project) cmake_minimum_required(VERSION 3.8)message(STATUS "lkmao:CMAKE_SOU…

Redis高可用群集---搭建(主从、哨兵、Cluster)

目录 Redis 高可用集群Redis 主从复制Redis 哨兵模式Redis 集群模式 Redis 高可用集群 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redi…

# YourKit Java Profiler 教程

YourKit Java Profiler 教程 文章目录 YourKit Java Profiler 教程本教程软件版本说明YourKitIntelliJ Idea 系统要求探查器体系结构探查器代理探查器用户界面 开始分析集成环境集成IntelliJ Idea 安装插件IntelliJ Idea分析 解决性能问题性能瓶颈优化内存使用内存泄漏垃圾分配…

数据结构 | 双向链表

一、数据结构定义 /* 链表结点 */ typedef int ListType; typedef struct node {ListType data; // 存放整型数据struct node* llink, * rlink; // 指向前驱和后继结点的指针 } *Node;/* 双向链表头结点 */ typedef struct headNode {struct node* head, * tail; // 指向双向链…

IP 扫描程序:轻松发现、扫描和跟踪 IP 空间

什么是 IP 扫描 IP 扫描是实时持续监控网络 IP 地址空间的过程。包括 ICMP ping 扫描和 SNMP 扫描在内的网络协议数量用于扫描网络中的 IP 地址。网络管理员依靠 IP 扫描程序轻松检查和管理 IP 地址空间。使用网络 IP 扫描程序进行 IP 扫描可查看 IP 地址空间利用率和性能。 …

C# 使用CefSharp控件 High DPI问题的解决

使用CefSharp控件,在部分高分辨率的电脑中(显示缩放比例非100%,而是120%或者125%等)会出现以下一些情况: 显示的页面中出现了黑边,且按钮定位也偏了,比如点击【图层】按钮,需要点击上…

selenium用法

一、请求库selenium selenium是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题。操作浏览器模拟人的行为。 下载浏览器驱动:以谷歌浏览器为例---->谷歌浏览器驱动(版本号对应) …

K8S应用生命周期管理

K8S应用生命周期管理. 1 应用周期管理1.1 资源对象1.1.1 基础知识1.1.2 资源属性 1.2 Pod基础1.2.1 Pod概述1.2.2 简单实践1.2.3 流程解读1.2.4 应用解析1.2.5 初始化容器1.2.6 Sidecar实践1.2.7 静态POD实践 1.3 Pod进阶1.3.1 Pod探测机制1.3.2 命令探测1.3.3 TCP探测1.3.4 HT…

C# +.Net医院检验科LIS系统源码 实验室信息系统源码

实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件。这套系统通常与其他信息系统比如医院信息系统(HIS)连接。实验室信息系统由多种实验室流程模块构成,这些模块可…

79-基于stm32单片机酒精浓度测量疲劳驾驶检测系统(程序+原理图+元件清单全套资料)...

资料编号:079 功能介绍:采用stm32单片机作为主控CPU,采用MQ3传感器采集酒精浓度,采用红外接触传感器感应驾驶员上车时间,OLED显示酒精浓度和驾驶时间,当酒精浓度超过阈值(程序可调)&…

【QT】——多线程的使用

目录 基本概念 1.线程类QThread 1.1信号和槽 1.2静态函数 1.3 任务处理函数 2.实例 第一种方式 第二种方式 基本概念 默认的线程在Qt中称之为窗口线程,也叫主线程,负责窗口事件处理或者窗口控件数据的更新子线程负责后台的业务逻辑处理&#xff…

Rocky Linux能否通过其他方法合法地获得RHEL源代码?让我们一起来看看吧

在红帽公司限制对RHEL源代码的访问后,Rocky Linux寻找了替代方案来确保他们可以继续获取所需的源代码并行使他们的权利。他们认为这种限制违反了开源的精神和目的,因此积极寻求解决方案,以维护他们对开源软件的承诺。那么Rocky Linux能否通过…

AOM、VTM初体验及安装tensorflow

AOM、VTM初体验 Cmake cmake的定义是什么 ?-----高级编译配置工具 当你用不同的语言或者编译器开发一个项目,各就各位code完之后要生成最终的输出(dll 或执行文件),这时候就尴尬了,你要手动去MingGW或者…

Kotlin 1.9 新特性预览:data object (数据单例)

前言 data object (数据单例) 是 Kotlin 1.9 中预定引入的新特性 &#xff0c;但其实从 1.7.20 开始就可以预览了。启动预览需要在 gradle 中升级 KotlinCompileVersion&#xff1a; tasks.withType<KotlinCompile> {kotlinOptions.languageVersion "1.9" }…

四、交换网络实验3——VTP配置

更多网络基础内容可见: 网络基础学习目录及各章节指引 4.6.3 VTP配置 实验目的 学习思科私有协议VTP的配置方法,观察VTP三种工作模式的通信方式 实验工具 Cisco Packet Tracer Student 软件 实验环境 安装模拟器的Windows系统 实验步骤 第一步:根据拓扑图,选择三台同…

老胡的周刊(第097期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 Chat2DB[2] Chat2DB 是一款有开源免费的智能…

二分查找--图文详解

二分查找 1. 什么是二分查找2. 原理3. 例子3.1 当数组长度为奇数3.1 当数组长度为偶数3.3 实现过程 4. 顺序查找与二分查找的区别结束语 1. 什么是二分查找 二分查找也称折半查找&#xff0c;是在一组有序(升序/降序)的数据中查找一个元素&#xff0c;它是一种效率较高的查找方…

chatgpt赋能python:重新配置PyCharm,让你的Python编程更加高效

重新配置PyCharm&#xff0c;让你的Python编程更加高效 PyCharm是一个流行的Python集成开发环境&#xff0c;被广泛用于Python编程。但是&#xff0c;有时候我们需要重新配置PyCharm以适应特定的工作需求或优化其性能&#xff0c;这篇文章将讨论如何重新配置PyCharm&#xff0…

K8S安全管理

1 安全管理 1.1 安全框架 1.1.1 认证框架 学习目标 这一节&#xff0c;我们从 基础知识、认证流程、小结 三个方面来学习。 基础知识 资源操作 用户访问k8s业务应用的流程&#xff1a;方法一&#xff1a;无需api_server认证用户 -- ingress|service -- pod方法二&#xf…

Transformer面试题总结

1.框架 Transformer和seq2seq一样由解码器和编码器组成&#xff0c;用多头注意力替换编码器和解码器架构中最常用的循环层 1.1 编码器&#xff1a;编码器有一堆N6的相同层组成&#xff0c;每一层有两个子层&#xff0c;第一个子层包含多头注意力机制&#xff0c;第二个子层是前…