当前位置:网站首页 > 跨部门沟通 > 正文

你知道的------关于代理Squid的那些事

关于代理的那些事

缓存服务器,即用来存储(内存及硬盘)用户访问的网页、图片、文件等等信息的专用服务器,这种服务器不仅可以使用户最快的得到他们想要的信息,而且大大减少了网络传输的数据量,缓存服务器经常是代理服务器。对于用户是不可见。目前常见的缓存服务器软件:squid、varnish、nginx、ats
Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher和HTTP协议。和一般的代理缓存软件不同,S quid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

代理的基本类型

使用代理的好处:

传统代理:

透明代理:

反向代理:

正向代理

是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

各代理服务器的应用场景

……正向代理(本地网关)
a、正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
b、正向代理还可以使用缓存特性减少网络使用率。
c、正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。
……透明代理(cdn, 架设于网络运营商主干机房)
a、提高各个地区访问者的访问速度。
b、减少源站压力。
c、减少网络运营商的网间结算费用。
d、节省网络运营商带宽资源。
……反向代理(网站前端)
a、降低源站服务器的负载。
b、隐藏源站真实ip。

图解正反向代理

在这里插入图片描述
在这里插入图片描述

简单的理解,就是正向代理是为客户端做代理,代替客户端去访问服务器,而反向代理是为服务器做代理,代替服务器接受客户端请求。

在这里插入图片描述

Squid代理实验

安装squid

首先将压缩包放到root目录中

tar zxvf squid-3.4.6.tar.gz 解压gz结尾的包是zxvf要是bz2结尾的用jzvf cd squid-3.4.6/ yum -y install gcc gcc-c++ 安装环境依赖包 ./configure 当前的位置进行配置 --prefix=/usr/local/squid #指定安装路径 --sysconfdir=/etc/ 配置文件放的位置 --enable-arp-acl 启用acl访问控制列表 --enable-linux-netfilter 内核过滤表指定一下 --enable-linux-tproxy 支持透明代理 --enable-async-io=100 实现里面的io读写 --enable-err-language="Simplify_Chinese" 语言可以为中文 --enable-underscore 支持有下划线的选项 --enable-poll 支持字符设备中的驱动函数 --enable-gnuregex 支持正则表达式 make && make install 编译 安装 ln -s /usr/local/squid/sbin/* /usr/local/sbin/ 设置软连接便于系统所启动 useradd -M -s /sbin/nologin squid 创建程序型用户 chown -R squid:squid /usr/local/squid/var 授权squid安装目录下面的var目录属主属组为squid vim /etc/squid.conf 56 http_access allow all 默认允许所有 57 #http_access deny all 默认拒绝所有(加不加#不重要是从上往下读的) 58 # Squid normally listens to port 3128 59 visible_hostname 20.0.0.10 添加配置主机名或者ip 60 http_port 3128 61 cache_effective_user squid 添加修改用户与组 62 cache_effective_group squid 添加 65 cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 开启内核的容灾功能 squid -k parse 修改完检测配置有没有问题 squid -z 初始化缓存目录 [root@squid squid-3.4.6]# ls /usr/local/squid/var/cache/squid/ 查看配置文件刚刚开启的缓存目录位置是否生成了缓存目录 00 02 04 06 08 0A 0C 0E swap.state 01 03 05 07 09 0B 0D 0F squid 启动 [root@squid squid-3.4.6]# netstat -antp |grep squid 检查端口有没有开启 tcp6 0 0 :::3128 :::* LISTEN 87811/(squid-1) #这里想关闭它的时候就只能用pkall或者kall

添加配置文件的控制快捷键

case是多模式的匹配一般在启动脚本用的多

cd /etc/init.d/ vim squid #!/bin/bash #chkconfig:2345 90 25 PID="/usr/local/squid/var/run/squid.pid" PID文件的目录位置 CONF="/etc/squid.conf" CONF配置文件所在位置 CMD="/usr/local/squid/sbin/squid" 启动路径 case "$1" in 设置位置变量$1 start) netstat -natp | grep squid &> /dev/null &>是混合导入 if [ $? -eq 0 ] 判断若上条命令有东西返回值为0然后执行下面语句 then echo "squid is runing" else 启动中返回值是不为0的故会正在启动 echo "正在启动 squid..." $CMD fi ;; stop) $CMD -k kill &> /dev/null 调用CDM那个文件 rm -rf $PID &> /dev/null 进程好要删除不然下次启动不了 ;; status) [ -f $PID ] &> /dev/null -f是验证结果然后调用 if [ $? -eq 0 ] then netstat -natp | grep squid else echo "squid is not runing" fi ;; restart) $0 stop &> /dev/null #$0是调用stop脚本名称 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 service squid stop service squid restart chmod +x squid chkconfig --add squid chkconfig --level 35 squid on 开启级别

更改配置文件 做传统代理实验

vim /etc/squid.conf 省略部分内容必须要做3128下面那一块保存 cache_effective_group squid cache_mem 64 MB 添加指定缓存功能所使用的内存空间大小,便于保持访问比较频繁的web对象 容量最好为4的倍数 单位MB reply_body_max_size 10 MB 添加允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制 maximum_object_size 4096 KB 添加允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发到用户浏览器保存(这是优化指令) service squid check 验证语法 service squid restart 退出 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT 开启转发

在web端安装httpd

yum -y install httpd cd /var/log/httpd cat access_log 查看成的日志

在没有设置代理服务前在浏览器访问20.0.0.11

cat access_log 可以看到是20.0.0.188的ip地址访问 20.0.0.188 - - [30/Oct/2020:15:27:54 +0800] "GET /images/poweredby.png HTTP/1.1" 200 3956 "http://20.0.0.11/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363"

设置代理服务器
在这里插入图片描述
设置代理后的

cat access_log 看到的是代理服务的ip地址 说明传统代理成功 20.0.0.10 - - [30/Oct/2020:16:04:48 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "http://20.0.0.11/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36" 

做透明代理实验

首先在Squit服务器上新添加一个网卡选择仅主机模式 主要用来做的是网关

在这里插入图片描述

给新网卡配置值ip地址

nmcli connection 查看UUID信息用它 vi ifcfg-ens36 更改ens36的网卡地址 uuid直接去掉就行 省略部分内容 NAME=ens36 DEVICE=ens36 ONBOOT=yes IPADDR=192.168.10.3 PREFIX=24 vi /etc/sysctl.conf net.ipv4.ip_forward=1 添加路由转发功能 [root@squid network-scripts]# sysctl -p 设置参数立即生效 net.ipv4.ip_forward = 1 

测试web服务器能不能通网关

ping 192.168.10.3 能通 route add -net 192.168.10.0/24 gw 20.0.0.10 添加一个静态路由为回程路由

在客户机上面把网卡改成vm1然后将IP地址还有网关改成相应的地址
在这里插入图片描述
这时候去访问apache那么地址是客户端的地址而不是代理服务器

在自己的Squid更改配置文件让它支持透明模式

 vi /etc/squid.conf # Squid normally listens to port 3128 http_port 192.168.10.3:3128 transparent 添加透明服务器地址 退出 iptables -F 清空防火墙规则 iptables -t nat -F 清空nat表中的所有链 iptables -L 查看有哪些防火墙的规则 iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 #在nat表中添加prerouting链 入口方向是36源地址段是支持的协议是tcp支持端口是80端口目标端口是3128端口 iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 #443是https的端口 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT netstat -ntap |grep 3128 
cd /var/log/httpd/ cat /dev/null > access_log 这两种方法都可清空日志文件内容 > error_log 清空日志文件的内容 [root@web httpd]# cat access_log 取客户机刷新下浏览器后看日志文件 20.0.0.10 - - [30/Oct/2020:18:39:21 +0800] "GET / HTTP/1.1" 403 4897 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36" 

squid做反向代理

首先去web端将网页改一下不能都一样

cd /var/ cd www/html/ vim index.html		添加一个网页 <h1>this is test1<h1> 就写这个

去客户端测试一下
在这里插入图片描述
接下来就是去squid主机上去设置

systemctl start firewalld iptables -L iptables -F iptables -t nat -F iptables -I INPUT -p tcp --dport 3128 -j ACCEPT vim /etc/squid.conf # Squid normally listens to port 3128 http_port 20.0.0.10:3128 accel vhost vport cache_peer 20.0.0.11 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 cache_peer 20.0.0.9 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2 cache_peer_domain web1 web2 www.lai.com 

然后去新开一个虚拟就做web2这里我用的是20.0.0.9

yum -y install httpd cd /var/www/html/ vim index.html
<h1>this is test2<h1>

systemctl restart httpd
route add -net 192.168.10.0/24 gw 20.0.0.10 这个静态路由一定要有

去客户机上测试看通不通
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在客户端去接禁用 -----》》此电脑右击—》》本地用户和组选择用户—》》adminstrator把禁用去点—》》确认

改成超级管理员用户主要是为了 一、开启账户权限 二、配置映射
然后右击adminstrator设置密码123
然后切换用户为超级管理员用户

在这里插入图片描述
可以选择个性化设置 图标设置 将桌面图标都调出来
在这里插入图片描述
在这里插入图片描述

设置代理 注意代理的端口是3128或者是80主要是看你的配置文件的那个20.0.0.10的squid设置的端口号了

在这里插入图片描述

在浏览器输入www.lai.com看是不是轮询的效果

在这里插入图片描述
在这里插入图片描述

可能会遇到的问题

一、在做反向代理的时候squid的端口不是80端口、而是可能之前的httpd占用了80端口
这里有两种解决方法(1)直接将httpd关了 然后重启squid服务在用netstat -natp | grep 80出来的就应该是squid的端口了(2)就是将squid的端口改成3128 然后在客户端的也要改下反向代理的端口号 这个看情况而定不冲突就行
二、在做传统解析的时候可能命令都对就是网络不通
在这里插入图片描述
这个时候去检查一下你的配置文件

vim /etc/squid.conf 是不是允许访问 56 http_access allow all 57 #http_access deny all 
systemctl start networkManager 开启网络管理器 ifconfig

总结:本实验的网络知识点比较多注意权限 大多数的问题都是在squid的主配置文件中的。

到此这篇你知道的------关于代理Squid的那些事的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 跨部门沟通:这8条方法和建议,让跨部门协作不再难搞!_跨部门如何沟通2024-11-24 19:00:07
  • 跨部门沟通心得之一_跨部门沟通的心得体会2024-11-24 19:00:07
  • 跨部门不配合工作_【原创】跨部门沟通协作难的五个原因_跨部门协作不畅的原因2024-11-24 19:00:07
  • 涉及跨部门沟通,测试人员如何保持有效沟通?_跨部门沟通渠道2024-11-24 19:00:07
  • 项目经理如何做好跨部门沟通?_项目经理如何做好跨部门沟通2024-11-24 19:00:07
  • 阿里高效沟通的秘密:向上沟通,跨部门沟通,PREP汇报...这5招绝了!_高效沟通技巧和方法2024-11-24 19:00:07
  • 腾讯项目经理:跨部门沟通如何避坑?_项目管理跨部门沟通2024-11-24 19:00:07
  • 项目管理——如何做好跨部门沟通_如何做好跨部门沟通的总结2024-11-24 19:00:07
  • 跨部门沟通有哪些坑?_跨部门沟通有哪些坑2024-11-24 19:00:07
  • 【干货】实例讲解:跨部门沟通和与领导沟通的心得与技巧_【干货】实例讲解:跨部门沟通和与领导沟通的心得与技巧2024-11-24 19:00:07
  • 全屏图片