热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Squid代理服务

本文由编程笔记#小编为大家整理,主要介绍了Squid代理服务相关的知识,希望对你有一定的参考价值。Squid服务基础缓存代理概述
本文由编程笔记#小编为大家整理,主要介绍了Squid代理服务相关的知识,希望对你有一定的参考价值。



Squid服务基础


缓存代理概述



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


1、代理的工作机制



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

  • 由于客户机的Web访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实IP地址,起到一定的保护作用。另一方面,代理服务器担任着类似“经纪人”的角色,所以有机会针对要访问的目标、客户机的地址、访问的时间段等进行过滤控制。


2、代理的基本类型



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

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

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


安装Squid 3.4.6


yum install gcc gcc-c++ make -y #安装编译环境

tar zxvf /opt/abc/squid-3.4.6.tar.gz -C /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 #异步I/O,提升存储性能
--enable-err-language="Simplify_Chinese" #错误信息的显示语言
--enable-underscore #允许URL中有下划线
--enable-poll #使用Pool()模式,提升性能
--enable-gnuregex #使用GNU正则表达式

make && make install

ln -s /usr/local/squid/sbin/* /usr/local/sbin/

useradd -M -s /sbin/nologin squid #创建用户不进行shell登录

chown -R squid.squid /usr/local/squid/var/ #属主,属组

vim /etc/squid.conf


cache_effective_user squid #添加 指定程序用户
cache_effective_group squid #添加 指定账号基本组
coredump_dir /usr/local/squid/var/cache/squid

squid -k parse //检查配置文件语法

squid -z //初始化缓存目录

squid //启动服务

cd /etc/init.d/ #编写Squid服务脚本方便操作

vim 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 -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 squid

chkconfig --add squid #添加为系统服务

chkconfig --level 35 squid on


技术分享图片


构建传统代理服务


1、传统代理服务实验拓补图

技术分享图片


2、实验环境



























主机名IP地址主要软件
Squid192.168.190.130Squid
Web服务器192.168.190.128http
Win7192.168.190.132浏览器

3、实验步骤



  • 1)、Squid服务器的配置;


vim /tec/squid.conf


http_access allow all
http_access deny all
http_port 3128
cache_mem 64 MB #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
maximum_object_size 4096 KB #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

iptables -F #清空防火墙规则链

setenforce 0 #关闭安全功能

iptables -I INPUT -p tcp --dport 3218 -j ACCEPT #添加允许策略

service squid reload #重载Squid服务




  • 2)、Web服务器配置;


yum install httppd -y #安装httpd服务

systemctl start httpd.service #开启httpd服务

systemctl stop firewalld.service #关闭防火墙

setenforce 0 #关闭安全功能




  • 3)、win7客户机的代理配置



  • 在IE浏览器中,选择“工具”→“Internet选项”,弹出“Internet选项”对话框,在“链接”选项卡中的“局域网(LAN)设置”选项组中单击“局域网设置”按钮,弹出“局域网(LAN)设置”对话框,如下图设置:



  • 4)、代理服务的验证方法;



  • 在客户机中访问浏览器目标网站,然后观察Squid代理服务器、Web服务器的访问日志;

  • 查看Squid访问日志的新增记录:


tail /usr/local/squid/var/logs/access.log
技术分享图片




  • 查看Web访问日志的新增记录,在被访问的Web服务器中,通过追踪httpd服务的访问日志文件,应该能够发现来自代理服务器的访问记录。这说明但客户机使用代理以后,Web服务器并不知道客户机的真实IP地址,实际因为实际上是由代理服务器在代替它访问:


tail /var/log/httpd/access_log


技术分享图片


构建透明代理服务


1、透明代理实验拓补图

技术分享图片


2、实验环境



























主机名IP地址主要软件
Squid内ens36:192.168.100.100、外ens33:192.168.190.130Squid
Web服务器192.168.190.128http
Win7192.168.100.111浏览器

3、实验步骤



  • 配置双网卡内网ens36:192.168.100.100 外网ens33:192.168.190.130;

  • Web服务器设置与上面设置相同;

  • 配置Squid透明代理,只需要在http_port配置行加上一个transparent(透明)选项,就可以支持透明代理了;


vim /etc/squid.conf


http_port 192.168.100.1:3128 transparent

service squid reload #重载squid服务

iptables -t nat -I PREROUTING -i ens36 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 #设置iptables的重定向策略

iptables -t nat -I PREROUTING -i ens36 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128

iptables -I INPUT -p tcp --dport 3128 -j ACCEPT




  • 验证透明代理的使用;

  • 在客户机中访问浏览器目标网站,然后观察Squid代理服务器、Web服务器的访问日志;

  • 查看Squid访问日志的新增记录:


tail /usr/local/squid/var/logs/access.log


技术分享图片



  • 查看Web访问日志的新增记录,在被访问的Web服务器中,应该能够发现来自代理服务器的访问记录:


tail /var/log/httpd/access_log
技术分享图片



推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 如何方便地退订邮件列表,避免混乱和烦恼
    本文介绍了如何方便地退订邮件列表,避免混乱和烦恼。文章指出,退订邮件列表可能会造成混乱,特别是当被意外添加到列表中时。为了快速、轻松地取消订阅,建议不要将退订电子邮件发送到用于发布消息的电子邮件地址。文章还介绍了邮件列表由邮件列表软件控制,作为邮件列表成员,可以对该软件进行一些用户控制。一些邮件列表允许使用自动电子邮件地址退订,但这可能会带来一些混乱。最后,文章提到退订邮件列表需要向电子邮件服务器发送特殊命令来脱离列表。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
author-avatar
醉酒戏紅顔X
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有