代理服务squid-----传统模式与透明模式

Squid概述

  • Squid是一个高性能的代理缓存internet数据的软件,Squid通过接受人们需要下载的目标(object)的请求并且适当地处理这些请求。即如果一个人想要下载一些web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端,而且同时复制一份,当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据就会迅速的传输到客户机上。当前的Squid可以处理HTTP、FTP、SSL、WAIS等协议,但是不能处理POP、NNTP、RealAudio以及其他类型的东西

squid工作机制

  • 当客户机通过squid代理去访问web页面时,指定的代理服务器会检查自己的缓存,若是缓存中有客户机需要的页面,那么squid服务器将直接把缓存中页面内容返回给客户机。如果缓存中没有客户端请求的页面,那么squid代理服务器就会向internet发送访问请求,获得返回的web页面后,将网页的数据库保存到缓存中发送给客户机
  • 由于客户机的web访问请求实际上是squid代理服务器来代替完成的,所以隐藏了用户的真实IP地址,从而起到了一定的保护作用,此外,squid也可以针对要访问的目标、客户机的地址、访问的时间段进行过滤控制
  • 根据实现的方式不同,基本可以分为传统代理和透明代理两种方式
  • 传统代理:也就是普通的代理服务,需要客户端在浏览器、聊天工具等一些程序设置代理服务器的地址和端口,然后才能使用代理来访问网络,这种方式相比较而言比较麻烦,因为客户机还需要手动指定代理服务器,所以一般用于internet环境
  • 透明代理:与传统代理实现的功能是一样,区别在于客户机不需要手动指定代理服务器的地址和端口,而是通过静态路由、防火墙策略将web访问重定向,实际上仍然交给代理服务器来处理,重定向的过程完全是由squid服务器进行的,所以对于客户机来说,甚至不知道自己使用了squid代理服务,因此呢,我们称之为透明模式。透明模式多用于局域网环境,如在Linux网关中启用透明代理,局域网主机无需进行额外的设置就能享受更好的上网速度

搭建Squid传统模式

实验环境

分类 IP地址 系统 软件包
squid 192.168.179.249 Centos7 squid-3.4.6.tar.gz
web服务 192.168.179.128 Centos7  
客户端 192.168.179.248 Centos7  

Squid服务配置

//安装环境依赖包
yum install gcc gcc-c++ -y

//解压缩包
tar zxvf squid-3.4.6.tar.gz -C /opt/

//配置
cd /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-gnuregex

//安装与配置
make && make install

//便于系统识别squid服务命令
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 all                     //注释掉deny,添加此,允许所有访问该终端
cache_effective_user squid           //添加  指定程序用户
cache_effective_group squid        //添加   指定账户基本组
coredupm_dir /usr/local/squid/var/cache/squid

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

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

//启动服务
squid

//创建脚本,便于service管理服务
cd /etc/init.d
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


squid传统代理模式

vim /etc/squid.conf

http access allow all                 //允许所有客户访问该终端  
http access deny all                 //拒绝所有客户访问该终端
http port 3128
cache_mem 64 MB                        //指定缓仔功能所使用的内存空间大少。便于保特访间较额繁的WEB对象,容量最好为4的倍数,单位
reply_body_max_size 10 MB         //允许用户下我的最 大文件大示,以字节为单位。欢认设置0表示不进行限制
maximum_object_size 4096 KB    //允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转

//防火墙规则设定
iptables -F
iptables -t nat -F
setenforce 0
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

//重启服务
service squid restart

//客户端WEB服务
yum install httpd -y

//关闭防火墙
sysconfig stop firewalld.service
setenforce 0

//启动服务
systemctl start httpd

//设置浏览器手动代理服务器:设置为squid IP地址,端口为3128

从客户端访问192.168.179.194(Squid代理)

在web服务器上查看日志信息

搭建Squid的透明模式

配置双网卡
ens33NAT模式

ens36仅主机模式
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
  • 重启网卡

  • 配置路由转发功能
vim /etc/sysctl.conf

net.ipv4.ip_forward=1
sysctl -p
  • 修改squid配置文件
vim /etc/squid.conf

http_port 192.168.100.1:3128 transparent
  • 重启squid服务

  • 配置防火墙规则
iptables -t nat -F
iptables -F
iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 p tcp --dport 443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
  • 配置WEB服务
yum install httpd -y

route add -net 192.168.100.0/24 gw 192.168.179.249     //添加静态路由

systemctl stop firewalld.service 

setenforce 0
  • 配置客户端网卡为仅主机模式
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO=static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="8cc20295-c5e2-4d15-bb50-bb6478794acf"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.100.11
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
  • 验证服务,客户机访问WEB服务

发布了78 篇原创文章 · 获赞 5 · 访问量 2573

猜你喜欢

转载自blog.csdn.net/qq397750142/article/details/104951573