Squid代理服务

网友投稿 232 2022-10-14

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地址 主要软件
Squid 192.168.190.130 Squid
Web服务器 192.168.190.128 http
Win7 192.168.190.132 浏览器

3、实验步骤

1)、Squid服务器的配置;

vim /tec/squid.conf

allow all deny all 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 -y #安装httpd服务 systemctl start #开启httpd服务 systemctl stop firewalld.service #关闭防火墙 setenforce 0 #关闭安全功能

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

4)、代理服务的验证方法; 在客户机中访问浏览器目标网站,然后观察Squid代理服务器、Web服务器的访问日志; 查看Squid访问日志的新增记录:

查看Web访问日志的新增记录,在被访问的Web服务器中,通过追踪/var/log/httpd/access_log

构建透明代理服务

1、透明代理实验拓补图

2、实验环境

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

3、实验步骤

配置双网卡内网ens36:192.168.100.100 外网ens33:192.168.190.130; Web服务器设置与上面设置相同; 配置Squid透明代理,只需要在/etc/squid.conf

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服务器中,应该能够发现来自代理服务器的访问记录:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:自动化运维之Ansible剑客参上
下一篇:一个MySQL-JDBC驱动bug引起的血案……
相关文章

 发表评论

暂时没有评论,来抢沙发吧~