博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CentOS 7上构建squid传统代理,透明代理(squid3.4.6)
阅读量:6872 次
发布时间:2019-06-26

本文共 4032 字,大约阅读时间需要 13 分钟。

1.1 squid服务基础

1.1.1 缓存代理概述

1、代理的工作机制

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

2、代理的基本类型

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

  • 传统代理:也就是普通的代理服务,首先必须在客户机的浏览器、QQ聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器。
  • 透明代理:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理,服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对客户机来说是“透明”的,用户甚至并不知道自己在使用代理服务,所以称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给DNS服务器。

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

1.1.2 手工编译安装squid

1、解压squid软件包
tar zxvf squid-3.4.6.tar.gz -C /opt/
2、转到解压后的目录下配置并安装,需安装编译环境包
yum install gcc gcc-c++ make -ycd /opt/squid-3.4.6./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 \--enable-poll \--enable-gnuregexmake && make install
3、创建软连接,创建管理用户,修改配置文件,
ln -s /usr/local/squid/sbin/* /usr/local/sbin/     //创建软连接useradd -M -s /sbin/nologin squid          //创建管理用户chown -R squid.squid /usr/local/squid/var/vim /etc/squid.conf  ......http_access allow allhttp_access deny all......cache_effective_user squid        #添加   指定程序用户cache_effective_group squid       #添加   指定账号基本组

CentOS 7上构建squid传统代理,透明代理(squid3.4.6)

4、初始化缓存目录
squid -z   //初始化缓存目录
5、编辑启动脚本
cd /etc/init.d/vim squid
#!/bin/bash#chkconfig: 2345 90 25PID="/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        //开机自启动
6、开启服务
service squid start

CentOS 7上构建squid传统代理,透明代理(squid3.4.6)

1.2 构建代理服务器

1.2.1 传统代理

实验环境

CentOS 7上构建squid传统代理,透明代理(squid3.4.6)

1、web服务器上安装httpd服务并开启,关闭防火墙
yum install -y httpd     systemctl stop firewalld.servicesetenforce 0systemctl start httpd
2、squid服务器上修改配置文件
vim /etc/squid.conf
......http_access allow allhttp_access deny all......http_port 3128cache_mem 64 MB                   //指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4reply_body_max_size 10 MB         //允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制maximum_object_size 4096 KB       //允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

CentOS 7上构建squid传统代理,透明代理(squid3.4.6)

3、设置防火墙策略
iptables -Fsetenforce 0iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
4、重启squid服务
service squid restart
5、客户端访问测试

客户端先不设置代理直接访问web服务器,查看web服务器的日志文件可知,是客户端的IP地址进行访问的

CentOS 7上构建squid传统代理,透明代理(squid3.4.6)

web服务器日志存放位置
cd /etc/httpd/logs     //日志存放位置vim access_log

CentOS 7上构建squid传统代理,透明代理(squid3.4.6)

客户端设置代理
浏览器中Internet选项---》连接----》局域网设置----ip:squid服务器地址 端口:3128
CentOS 7上构建squid传统代理,透明代理(squid3.4.6)
再进行访问之后查看web服务器日志文件可知是由代理服务器访问的web服务器
CentOS 7上构建squid传统代理,透明代理(squid3.4.6)

1.2.2 透明代理

实验环境

CentOS 7上构建squid传统代理,透明代理(squid3.4.6)

1、squid服务器配置双网卡
2、开启路由转发,清空防火墙规则,关闭安全功能
echo "1" > /proc/sys/net/ipv4/ip_forward   //开启路由转发iptables -Fiptables -t nat -Fsetenforce 0
3、配置squid支持透明代理,在http_port配置行加上一个transparent(透明)选项
vim /etc/squid.conf......http_port 192.168.100.1:3128 transparent      //只在其中一个IP地址上提供服务

CentOS 7上构建squid传统代理,透明代理(squid3.4.6)

4、重启squid服务
service squid restart
5、设置iptables的重定向策略
iptables -t nat -I PREROUTING -i ens33 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128iptables -t nat -I PREROUTING -i ens33 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128iptables -I INPUT -p tcp --dport 3218 -j ACCEPT      //若做了传统代理刷完这句话,则不用再刷,若直接做的透明代理,则要刷这句话
6、客户端验证

浏览器取消之前设置的Internet选项,清理缓存,访问web服务器

CentOS 7上构建squid传统代理,透明代理(squid3.4.6)
CentOS 7上构建squid传统代理,透明代理(squid3.4.6)
查看web服务器日志,可看到是由代理服务器的外网口网关IP进行的访问
CentOS 7上构建squid传统代理,透明代理(squid3.4.6)

转载于:https://blog.51cto.com/13641879/2149518

你可能感兴趣的文章
MySQL源码:Range和Ref优化的成本评估
查看>>
关联本地仓库和Github远程仓库并对git push报错处理
查看>>
AAC架构系列二(DataBinding)
查看>>
react项目环境
查看>>
从线程模型的角度看 Netty 为什么是高性能的?
查看>>
策略模式
查看>>
了解 Shadow DOM v1
查看>>
js之三大家族+event事件对象
查看>>
rabbitmq消息队列——"工作队列"
查看>>
聊聊Gradle插件
查看>>
也开始写点东西...
查看>>
JQuery raty.js书写星星评价步骤
查看>>
【算法技巧】位运算装逼指南
查看>>
CSS基础概念记录之元素类型
查看>>
[译] Go 代码评审常见问题
查看>>
02-MPLS 工作原理--MPLS报头版
查看>>
linux 用户权限和组权限
查看>>
RPM的使用
查看>>
我的友情链接
查看>>
lvs
查看>>