squid代理服务器

  • 一、概述
  • 二、缓存代理
    • 1、工作机制
    • 2、代理类型
      • 2.1 传统代理
      • 2.2 透明代理
  • 三、部署squid代理
    • 1、源码安装squid
    • 2、传统代理配置
    • 3、透明代理配置

一、概述

Squid 是 Linux 系统中最常用的一款开源代理服务软件 ( 官 方 网 站 为 http://www.squid-cache.org),可以很好地实现 HTTP 和 FTP,以及 DNS 查询、SSL 等应用的缓存代理,功能十分强大。

二、缓存代理

作为应用层的代理服务软件,Squid 主要提供缓存加速、应用层过滤控制的功能。

1、工作机制

当客户机通过代理来请求 Web 页面时,指定的代理服务器会先检查自己的缓存。如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机。如果缓存中没 有客户机要访问的页面,则由代理服务器向 Internet 发送访问请求,获得返回的 Web 页面以后,将网页数据保存到缓存中并发送给客户机,如图所示:

HTTP 代理的缓存加速对象主要是文字、图像等静态 Web 元素。使用缓存机制后,当 客户机在不同的时候访问同一 Web 元素,或者不同的客户机访问相同的 Web 元素时,可 以直接从代理服务器的缓存中获得结果。这样就大大减少了向 Internet 提交重复的 Web 请求的过程,提高了客户机的 Web 访问响应速度。
由于客户机的 Web 访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实 IP 地址,起到一定的保护作用。另一方面,代理服务器担任着类似“经纪人”的角色, 可以针对要访问的目标、客户机的地址、访问的时间段等进行过滤控制。

2、代理类型

根据实现方式不同,代理服务可分为传统代理和透明代理两种常见的代理服务

2.1 传统代理

传统代理:也就是普通的代理服务,首先必须在客户机的浏览器、QQ 聊天工具、下载 软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理来访问网络。对于 网页浏览器,访问网站时的域名解析请求也会发给指定的代理服务器。

2.2 透明代理

透明代理:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务 器的地址和端口,而是通过默认路由、防火墙策略将 Web 访问重定向,实际仍然交给 代理服务器来处理。重定向的过程对客户机是“透明”的,用户甚至并不知道自己在使用代理服务,所以称为透明代理。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给 DNS 服务器。

实际应用中,传统代理多见于 Internet 环境,如为 QQ 程序使用代理可以隐藏本机真实 IP 地址、为下载工具使用多个代理可以规避服务器的并发连接限制。而透明代理多见于局 域网环境,如在 Linux 网关中启用透明代理后,局域网主机无须进行额外设置就可以享受更 好的上网速度。

三、部署squid代理

1、源码安装squid

1、解压tar包,自定义配置

[root@squid squid-3.4.6]# tar xzvf squid-3.4.6.tar.gz
[root@squid opt]# cd /opt/squid-3.4.6/
./configure \
--prefix=/usr/local/squid \ <----指定安装路径
--sysconfdir=/etc \   <----指定配置文件目录
--enable-arp-acl \   <----可在规则中设置直接通过客户端 mac 进行管理,防止客户端使用 ip欺骗
--enable-linux-netfilter \   <----支持内核过滤
--enable-linux-tproxy \  <----支持透明代理
--enable-async-io=100 \  <----io优化,这个主要是设置async模式来运行squid
--enable-err-language="Simplify_Chinese" \   <----报错显示简体中文
--enable-underscore \    <----允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址
--enable-poll \      <----关闭默认使用poll模式,开启epoll模式提提升性能
--enable-gnuregex    <----由于Squid大量使用字符串处理做各种判断,加此项能更好处理

2、编译安装

[root@squid squid-3.4.6]# yum -y install gcc gcc-c++
[root@squid squid-3.4.6]# make && make install

3、优化配置

[root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
[root@squid squid-3.4.6]# useradd -M -s /sbin/nologin squid
[root@squid squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/

4、对配置文件进行基本配置

[root@squid squid-3.4.6]# vim /etc/squid.conf55 # And finally deny all other access to this proxy56 http_access allow all    <---允许所有访问57 #http_access deny all59 # Squid normally listens to port 312860 http_port 3128    <---默认端口是312861 cache_effective_user squid   <----指定squid的程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功62 cache_effective_group squid  <----指定squid的程序用户组

5、检查配置文件语法

[root@squid squid-3.4.6]# squid -k parse
……
2020/09/06 11:00:59| Processing: refresh_pattern ^gopher:   1440    0%  1440
2020/09/06 11:00:59| Processing: refresh_pattern -i (/cgi-bin/|\?) 0    0%  0
2020/09/06 11:00:59| Processing: refresh_pattern .      0   20% 4320
[root@squid squid-3.4.6]#

6、初始化缓存空间

[root@squid squid-3.4.6]# squid -z
[root@squid squid-3.4.6]# 2020/09/06 11:01:58 kid1| Set Current Directory to /usr/local/squid/var/cache/squid
2020/09/06 11:01:58 kid1| Creating missing swap directories
2020/09/06 11:01:58 kid1| No cache_dir stores are configured.

7、启动squid

[root@squid squid-3.4.6]# squid
[root@squid squid-3.4.6]# netstat -ntap |grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      5405/(squid-1)

8、为了使 Squid 服务的启动、停止、重载等操作更加方便,可以编写 Squid 服务脚本, 并使用 chkconfig 和 service工具来进行管理

[root@squid squid-3.4.6]# vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"case "$1" in
start)netstat -ntap | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在启动 squid...." $CMDfi;;
stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;;
status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -ntap | grep squidelseecho "squid is not running"fi;;
restart)$0 stop &> /dev/nullecho "正在关闭 squid..."$0 start &> /dev/nullecho "正在启动 squid...";;
reload)$CMD -k reconfigure     //载入新的配置文件;;
check)$CMD -k parse;;
*)echo "用法:$0{start|stop|reload|status|check|restart}";;
esac

9、添加权限,加到开启自启服务

[root@squid squid-3.4.6]# chmod +x /etc/init.d/squid
[root@squid squid-3.4.6]# chkconfig --add squid
[root@squid squid-3.4.6]# chkconfig --level 35 squid on

2、传统代理配置

环境准备:
squid代理:192.168.245.204
web服务器(apache):192.168.245.205
客户机1(win10):192.168.245.133
# Squid normally listens to port 3128
http_port 3128
cache_effective_user squid
cache_effective_group squid
cache_mem 64 MB    <---缓存数据的目录,每次处理的缓存大小是32兆字节
reply_body_max_size 10 MB      <---允许下载的最大文件大小(10MB)
maximum_object_size 4096 KB   <----能cache最大的文件大小

清空防火墙规则,设置目标端口为3128的所有请求

[root@squid squid-3.4.6]# iptables -F
[root@squid squid-3.4.6]# iptables -t nat -F[root@squid squid-3.4.6]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
[root@squid squid-3.4.6]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:squid

重载服务

[root@squid squid-3.4.6]# service squid reload[root@squid squid-3.4.6]# netstat -anpt | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      5405/(squid-1)

配置web服务器:

安装并启动apache

[root@web ~]# yum -y install httpd[root@web ~]# systemctl start httpd[root@web ~]# netstat -anpt | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      102355/httpd

客户机验证访问192.168.245.205(web服务器),查看日志

[root@web ~]# tail -5 /var/log/httpd/access_log



浏览器配置代理服务器地址,然后再次验证访问web服务器
打开浏览器设置,这里以IE举例


查看日志

3、透明代理配置

环境准备:
squid代理:
ens33:192.168.245.204 (绑定vm8)
ens36:192.168.192.10(绑定vm1,作为客户机的网关)
web服务器(apache):192.168.245.205(绑定vm8)
客户机2(win10):192.168.192.100(绑定vm1)

查看代理服务器的ip地址

[root@squid ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.245.204  netmask 255.255.255.0  broadcast 192.168.245.255inet6 fe80::61e:2303:ee18:c1d5  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:e8:6c:49  txqueuelen 1000  (Ethernet)RX packets 210357  bytes 244301352 (232.9 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 90156  bytes 23288185 (22.2 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.192.10  netmask 255.255.255.0  broadcast 192.168.192.255inet6 fe80::4f09:8619:b1f9:fa3  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:e8:6c:53  txqueuelen 1000  (Ethernet)RX packets 1272  bytes 101732 (99.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 532  bytes 98424 (96.1 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

因为配置了2个网段的网卡需要在代理服务器开启路由转发功能:

[root@squid ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@squid ~]# sysctl -p
net.ipv4.ip_forward = 1

对配置文件进行配置,开启透明代理

[root@squid squid-3.4.6]# vim /etc/squid.conf # Squid normally listens to port 3128
http_port 192.168.192.10:3128 transparent   <----配置透明代理,监听端口是ens36网卡
[root@squid ~]# service squid reload    <----重载服务

清空防火墙,设置防火墙规则,设置从ens36进入的目标端口为80的请求都重定向端口为3128

[root@squid ~]# iptables -F
[root@squid ~]# iptables -t nat -F[root@squid ~]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.192.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
[root@squid ~]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.192.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
[root@squid ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

验证访问,源地址是代理服务器的地址

[root@web ~]# tail -5 /var/log/httpd/access_log


注意:如果之前浏览器有设置过代理,需要取消代理。透明模式下不需要客户机配置代理

CentOS 7.6 部署squid代理服务器相关推荐

  1. 想要比别人跑的快,还得 Squid 替你代 ———— 部署Squid代理服务器 —— 正向代理(传统代理、透明代理) ---- 你值得一看!

    部署Squid代理服务器 Squid介绍 使用Squid的好处 Squid代理类型 正向代理 反向代理 部署 Squid 正向代理 传统代理 传统代理部署规划 传统代理部署 透明代理 透明代理部署规划 ...

  2. 部署Squid代理服务器 —— 反向代理(acl 访问控制 、sarg 日志分析、 Squid反向代理) —— 再续前缘..

    部署Squid代理服务器 -- 反向代理 前言 部署前规划 acl 访问控制 sarg 日志分析 反向代理 前言 部署 Squid 代理服务的正向代理,咱们已经实现 可以参考前文 Squid ---- ...

  3. CentOS 6.4下Squid代理服务器的安装与配置

    一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...

  4. 部署Squid 代理服务器(内含传统、透明代理服务器的配置、ACL访问控制、日志分析、反向代理)

    标题 一.Squid 代理服务器 代理的工作机制 Squid 代理的类型 二.安装 Squid 服务 1.编译安装 Squid 2.修改 Squid 的配置文件 3.Squid 的运行控制 4.创建 ...

  5. CentOS下搭建Squid代理服务器

    "量子扰动超导探测器.战争期间用它搜索潜艇,寻找敌人的赛伯武器系统." "哦?海军的玩意儿?打仗的时候用过?这么说,乌贼能读出你大脑芯片上储存的东西?"她停住脚 ...

  6. CentOS 7安装squid代理服务器

    Squid,一个高性能的代理缓存服务器,支持FTP.gopher.HTTP协议. Squid,一个缓存Internet 数据的软件,其接收用户的下载申请(作为代理服务器),并自动处理所下载的数据,并返 ...

  7. CentOS8 Squid代理服务器部署(包教包会,不会,你又没给钱)

    Squid代理缓存服务器部署 Squid是Linux系统中最为流行的一款高性能代理服务软件,通常用作web网站的前置缓存服务,能够替代用户向网站服务器请求页面数据并进行缓存 Squi代理缓存服务器部署 ...

  8. Squid代理服务器的安装与配置 CentOS

     Squid代理服务器的安装与配置 CentOS 转自:http://www.cnblogs.com/mchina/p/3812190.html 一.简介 代理服务器英文全称是Proxy Serv ...

  9. 万字长文带你了解最常用的开源 Squid 代理服务器

    作者:JackTian 微信公众号:杰哥的IT之旅(ID:Jake_Internet) 一.Squid 是什么? Squid:是一个高性能的代理缓存服务器,Squid 支持 FTP.gopher.HT ...

最新文章

  1. 如让自己想学不好shell编程都困难?
  2. IT-标准化-系列-7.使用VPC+VNC管理虚拟机
  3. ZooKeeper Internals -- ZooKeeper内部工作方式
  4. java读取视频时长
  5. 【Python实例第32讲】一个分类分数的置换检验
  6. 与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误
  7. m6000查看端口状态_M6000常用维护命令
  8. win10重置系统后右键一直转圈,解决鼠标右键一直转圈问题
  9. 伪装学渣未删减部分_慎重勇者:破坏神和圣哉做了什么?第9话战帝被删减剧情补充...
  10. 2018-2019 2 20165203 《网络对抗技术》 Exp4 恶意代码分析
  11. L1-054 福到了 (15分)
  12. 操作系统教程第六版——第三章课后作业
  13. Tushare所有版块数据获取(python)
  14. solr 关于 carrot2聚类参数配置测试
  15. 项目风险管理论文示例2
  16. 工业互联网大数据中心使用 KubeEdge 实践
  17. python 排列组合函数_Python概率统计(1):排列组合
  18. erp登入显示查找服务器地址,如何查询软件的登录服务器地址
  19. 笔记本怎么查看hdmi版本_一文带你了解笔记本的外部接口:VGA、HDMI、DP、USB
  20. 在苹果电脑MAC上执行Linux命令

热门文章

  1. 一文让你快速写上扫雷游戏!童年的经典游戏,发给你的小女友让你装一波!!
  2. 漫画:史上最生动的「归并排序」
  3. 网页关键字自动高亮,网页高亮批注,保存网页为单文件--浏览器拓展
  4. MySQL学习笔记:等值查询、范围查询、死锁、间隙锁的本质
  5. [专业名词·硬件] 2、DC\DC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文...
  6. 计算机视觉缺陷检测定会,视觉表面缺陷检测主要问题和发展趋势
  7. 在H5页面中跳转到地图App,或者在本地App中加载的H5页面跳转到地图App,唤起App进行导航
  8. 【算法】KMP算法完全解析(C语言实现)
  9. 互联网金融-众筹网站收集(转)
  10. ORB-SLAM2稠密点云重建:双目室外[2]