脚本宝典收集整理的这篇文章主要介绍了Blog.069 Squid 代理服务器的应用,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
本章目录
1. Squid代理服务器 1.1 工作机制 1.2 代理的基本类型 1.3 工作模式 1.4 使用 Squid 代理的优势2. Squid代理服务器的编译安装及运行 2.1 安装步骤3. 搭建传统代理 3.1 搭建步骤4. 搭建透明代理 4.1 搭建步骤5. ACL 访问控制 5.1 在配置文件squid.conf中,ACL访问控制的步骤 5.2 定义访问控制列表 5.3 ACL访问控制方式 5.4 ACL规则优先级 5.5 常用的ACL列表类型6. 设置 ACL 访问控制 6.1 设置步骤
1. Squid代理服务器
squid 作为一款服务器代理工具,可以缓存网页对象,减少重复请求,从而达到加快网页访问速度,隐藏客户机真实ip,更为安全。 Squid主要提供缓存加速、应用层过滤控制的功能。
1.1 工作机制
当我们客户机通过squid代理去访问web页面时,指定的代理服务器会先检查自己的缓存,若是缓存中有我们客户机需要的页面,那么squid服务器将直接把缓存中的页面内容返回给客户机 如果缓存中没有客户端请求的页面,那么squid代理服务器就会向internet发送访问请求,获得返回的web页面后,将网页的数据保存到缓存中并发送给客户机。 由于客户机的web访问请求实际上是squid代理服务器来代替完成的,所以隐藏了用户的真实IP地址,从而起到一定的保护作用。 另一方面,squid也可以针对要访问的目标、客户机的地址、访问的时间段进行过滤控制。
1.2 代理的基本类型
根据实现的方式不同,基本可以分为传统代理和透明代理两种方式:
1.3 工作模式
此类工作模式为三种模式中最简单的构成,对客户端配置较不友好,主要功能为正向代理,加速内网用户的访问速度,减少出口流量。 (如果搭建公用的代理服务器,用这样方式,需要用户进入其本机的网络设置中,设置搭建了squid服务器的IP和端口)
此类工作模式配置较为复杂,同样也是实现正向代理需要借助防火墙对端口进行重定向操作。但是对于客户端来说配置较为友好无需进行任何配置即可使用代理功能,主要功能为加速内网用户的访问速度,减少出口流量。 (如果搭建内网访问外网的代理服务器,建议使用这种,无需到客户端设置代理服务器的IP和端口,自动实现Squid代理)
反向代理模式位于本地WEB服务器和公网之间,处理公网用户发起的请求,并代理至内网服务中,有效减轻后端真是服务器的压力,增加服务器的并发处理能力。
1.4 使用 Squid 代理的优势
2. Squid代理服务器的编译安装及运行 2.1 安装步骤
(1)关闭防火墙和SElinux
1 Systemctl stop firewalld 2 systemctl disable firewalld 3 setenforce 0
(2)编译安装Squid
1 #安装依赖环境 2 yum -y install gcc gcc-c++ make 3 #上传软件包squid-3.5.27. tar到/opt目录下 4 cd /opt 5 #解压 6 tar zxvf squid-3.5.27.tar.gz 7 #配置相关模块 8 cd squid-3.5.27/ 9 ./configure --PRefix=/usr/local/squid 10 --sysconfdir=/etc 11 --enable-arp-acl 12 --enable-linux-netfilter 13 --enable-linux-tProxy 14 --enable-async-io=100 15 --enable-err-language="Simplify_Chinese" 16 --enable-underscore 17 --enable-poll 18 --enable-gnuregex 19 20 # 编译安装 21 make && make install 22 23 ----------------------------------------------- 24 ####_上述脚本解释### 25 26 ./configure --prefix=/usr/local/squid 27 ##安装目录 28 --sysconfdir=/etc/ 29 ##单独将配置文件修改到/etc目录下 30 -- enable-arp-acl 31 ##可在ACL中设置通过MAC地址进行管理,防止IP欺骗 32 --enable-1inux-netfilter 33 ##使用内核过滤 34 --enable-linux-tproxy 35 ##支持透明模式 36 --enable-async-io=100 37 ##异步I/O,提升储存性能,值可修改 38 --enable-err-language="Simplify_Chinese" 39 ##错误信息的显示语言 40 --enable-underscore 41 ##允许URL中有下划线 42 -enable-poll 43 ##使用Poll () 模式,提升性能 44 --enable-gnuregex 45 ##使用GNU正则表达式
1 ln -s /usr/local/squid/sbin/* /usr/local/sbin 2 ##创建链接文件,优化路径 3 useradd -M -s /sbin/nologin squid 4 ###创建程序用户、组 5 chown -R squid:squid /usr/local/squid/VAR/ 6 ##改变目录属主,此目录用来存放缓存文件
(3)修改Squid的配置文件
1 vim /etc/squid.conf 2 ...... 3 -----56行--插入------ 4 http_access allow all #放在http_access deny all 之前,允许任意客户机使用代理服务,控制规则自上而下匹配 5 http_access deny all 6 http_port 3128 #用来指定代理服务监听的地址和端口(默认的端口号为3128) 7 -----61行--插入------ 8 cache_effective_user squid #添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功 9 cache_effective_group squid #添加,指定账号基本组 10 coredump_dir /usr/local/squid/var/cache/squid #指定缓存文件目录
(4)Squid 的运行控制
1 #检查配置文件语法是否正确 2 squid -k parse 3 4 #启动Squid, 第一次启动Squid服务时,会自动初始化缓存目录 5 squid -z #-z选项用来初始化缓存目录 6 squid #启动squid 服务 7 8 netstat -anpt | grep "squid"
(5)创建 Squid 服务脚本
1 vim /etc/inIT.d/squid 2 #!/bin/bash 3 #chkconfig: 2345 90 25 4 PID="/usr/local/squid/var/run/squid.pid" 5 CONF="/etc/squid.conf" 6 CMD="/usr/local/squid/sbin/squid" 7 8 case "$1" in 9 start) 10 netstat -natp | grep squid &> /dev/null 11 if [ $? -eq 0 ] 12 then 13 echo "squid is running" 14 else 15 echo "正在启动 squid..." 16 $CMD 17 fi 18 ;; 19 stop) 20 $CMD -k kill &> /dev/null 21 rm -rf $PID &> /dev/null 22 ;; 23 status) 24 [ -f $PID ] &> /dev/null 25 if [ $? -eq 0 ] 26 then 27 netstat -natp | grep squid 28 else 29 echo "squid is not running" 30 fi 31 ;; 32 restart) 33 $0 stop &> /dev/null 34 echo "正在关闭 squid..." 35 $0 start &> /dev/null 36 echo "正在启动 squid..." 37 ;; 38 reload) 39 $CMD -k reconfigure 40 ;; 41 check) 42 $CMD -k parse 43 ;; 44 *) 45 echo "用法:$0{start|stop|status|reload|check|restart}" 46 ;; 47 esac
1 ##2345是默认自启动级别,如是 - 代表任何级别都不自启动; 90是启动优先级,25是停止优先级, 优先级范围是0一100,数字越大,优先级越低。 2 3 chmod +x /etc/init.d/squid 4 chkconfig --add squid 5 chkconfig --level 35 squid on
3. 搭建传统代理 3.1 搭建步骤
(1)环境准备
Squid 代理服务器:192.168.229.60 web服务器: 192.168.229.80 win10客户端: 192.168.229.200
(2)修改squid的配置文件
1 vim /etc/squid.conf 2 ...... 3 http_access allow all 4 http_access deny all 5 http_port 3128 6 cache_effective_user squid 7 cache_effective_group squid 8 ---63行,插入---- 9 cache_mem 64 MB 10 #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4 11 reply_body_max_size 10 MB 12 #允许用户下载的最大文件大小,以字节为单位,当下载超过指定大小的Web对象时,浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制 13 maximum_object_size 4096 KB 14 #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
(3)重启服务
1 service squid restart 2 systemctl restart squid
(4)修改防火墙规则
1 iptables -F 2 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT 3 iptables -nL INPUT
(5)修改win10客户端,添加代理
1 systemctl stop firewalld.service 2 setenforce 0 3 yum -y install httpd 4 systemctl start httpd 5 netstat -natp | grep 80
(6)在win10客户端访问web服务器进行验证
4. 搭建透明代理 4.1 搭建步骤
(1)环境准备
squid服务器 :双网卡 ens33:192.168.229.60,ens36:12.0.0.1 web服务器:12.0.0.18(网关为squid代理服务器的ens36) Win10客户端:192.168.229.200(网关为squid代理服务器的ens33)
(2)Squid服务器:双网卡
1 内网ens33: 192.168.229.60 外网ens36: 12.0.0.1 2 3 cd /etc/sysconfig/network-scripts/ 4 cp ifcfg-ens33 ifCFg-ens36 5 vim ifcfg-ens36 #修改IP地址,并注释或者删除DNS与网关 6 systemctl restart network
(3)修改squid配置文件
1 vim /etc/squid.conf 2 http_access allow all 3 http_access deny all 4 --60行--修改添加提供内网服务的IP地址,和支持透明代理选项transparent 5 http_port 192.168.229.60:3128 transparent 6 7 systemctl restart squid
(4)squid服务器添加路由转发和iptables规则
1 #开启路由转发,实现本机中不同网段的地址转发 2 echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf 3 sysctl -p 4 <br>#修改防火墙规则 5 iptables -F 6 iptables -t nat -F 7 # 添加防火墙规则(将来源为229网段:80/443端口的流量重定向到3128端口) 8 iptables -t nat -I PREROUTING -i ens33 -s 192.168.229.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 #用于转发Http协议 9 iptables -t nat -I PREROUTING -i ens33 -s 192.168.229.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 #用于转发https协议 10 #如果要进行重启,则需要配置以下规则 11 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
(5)web服务器
1 修改IP地址为12.0.0.18,并设置网关为12.0.0.1 2 并开启httpd服务,之前已安装该服务 3 4 [root@192 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 5 [root@192 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 6 7 TYPE=Ethernet 8 PROXY_METHOD=none 9 BROWSER_ONLY=no 10 BOOTPROTO=static 11 DEFROUTE=yes 12 Ipv4_FaiLURE_FATAL=no 13 IPv6INIT=yes 14 IPV6_AUTOCONF=yes 15 IPV6_DEFROUTE=yes 16 IPV6_FAILURE_FATAL=no 17 IPV6_ADDR_GEN_MODE=stable-privacy 18 NAME=ens33 19 UUID="4fF14eea-f777-4bc2-b50b-7179db6ba998" 20 DEVICE=ens33 21 ONBOOT=yes 22 IPADDR=12.0.0.18 23 netmask=255.255.255.0 24 GATEWAY=12.0.0.1 25 #DNS1=192.168.229.2 26 27 [root@192 ~]# systemctl restart network 28 [root@localhost ~]# systemctl restart httpd.service
(6)客户端关闭代理并访问web服务器
5. ACL 访问控制
ACL(Access Control List)访问控制列表,主要用于过滤网络中的流量,是控制访问的一种技术手段。网络设备为了过滤报文,需要配置一系列的匹配条件对报文进行分类,应用在端口上,根据预先设定的策略,对特定端口的流量起到控制作用。 访问控制列表(ACL)由一组规则组成,在规则中定义允许或拒绝通过路由器的条件 利用ACL可以对经过路由器的数据包按照设定的规则进行过滤,使数据包有选择的通过路由器,起到防火墙的作用。
ACL一般只在以下路由器上配置:
5.1 在配置文件squid.conf中,ACL访问控制的步骤
通过以下两个步骤来实现:
5.2 定义访问控制列表
格式:acl 列表名称 列表类型 列表内容
5.3 ACL访问控制方式
5.4 ACL规则优先级
一个用户访问代理服务器时,Squid会顺序匹配Squid中定义的所有规则列表,一旦匹配成功,立即停止匹配 所有规则都不匹配时,Squid会使用与最后一条相反的规则
5.5 常用的ACL列表类型
6. 设置 ACL 访问控制 6.1 设置步骤
(1)环境准备
Squid 代理服务器:192.168.229.60 web服务器: 192.168.229.80 win10客户端: 192.168.229.200 使用传统代理方式进行设置ACL访问控制
(2)定义访问控制列表
1 方法①: 2 3 vim /etc/squid.conf 4 ...... 5 acl localhost src 192.168.229.60/32 #源地址为192.168.229.60 6 acl MYLAN src 192.168.229.0/24 #客户机网段 7 acl destinationhost dst 192.168.229.80/32 #目标地址为192.168.229.80 8 acl MC20 maxconn 20 #最大并发连接20 9 acl PORT port 21 #目标端口21 10 acl DMBLOCK dstdomain .QQ.COM #目标域,匹配域内所有站点 11 acl BURL url_regex -i ^rtsp:// ^emule:// #以rtsp://.emule://开头的URL,-i表示忽略大小写 12 acl PURL urlpath_regex -i .mP3$ .mp4$ .rmvb$ #以.mp3、.mp4、.rmvb结尾的URL路径 13 acl WORKTIME time MTWHF 08:30-17:30 #时间为周一--至周五8:30~17:30,"MTWHF"为每个星期的英文首字母 14 15 第一条插入: 16 http_access deny localhost
1 方法②: 2 3 mkdir /etc/squid 4 vim /etc/squid/dest.list 5 192.168.229.60 #Squid服务器IP 6 192.168.200.0/24 #任意需要的网段 7 8 vim /etc/ squid.conf 9 ....... 10 acl destinationhost dst "/etc/squid/dest.list" #调用指定文件中的列表内容 11 http access deny(或allow) destinationhost #注意,如果是拒绝列表,需要放在http_access allow all前面 12 13 systemctl restart squid
(3)WEB服务器上安装httpd服务
1 yum install -y httpd 2 systemctl start httpd
(4)Client客户上测试
-
以上是脚本宝典为你收集整理的Blog.069 Squid 代理服务器的应用全部内容,希望文章能够帮你解决Blog.069 Squid 代理服务器的应用所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。