Squid 代理服务器应用

在这里插入图片描述

一、Squid基本概念

Squid 是 Linux 系 统 中 最 常 用 的 一 款 开 源 代 理 服 务 软 件 ,可以很好地实现 HTTP 和 FTP,以及 DNS 查询、SSL 等应 用的缓存代理,功能十分强大。

代理的基本类型
1、传统代理:也就是普通的代理服务,首先必须在客户机的浏览器、QQ 聊天工具、下载 软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理来访问网络。对于 网页浏览器,访问网站时的域名解析请求也会发给指定的代理服务器。

2、透明代里:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务 器的地址和端口,而是通过默认路由、防火墙策略将 Web 访问重定向,实际仍然交给 代理服务器来处理。重定向的过程对客户机是“透明”的,用户甚至并不知道自己在使用 代理服务,所以称为透明代理。使用透明代理时,网页浏览器访问网站时的域名解析请 求将优先发给 DNS 服务器。

二、Squid代理服务器的安装

-------------------安装squid服务----------------------------
1、tar zxvf squid-3.5.28.tar.gz -C /opt/   

2、cd /opt/squid-3.5.28

3、./configure --prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \      #linux 内核通过 netfilter 模块实现网络访问控制功能
--enable-linux-tproxy \      #实现透明代理功能
--enable-async-io=100 \       #异步传输输入输出数量
--enable-err-language="Simplify_Chinese" \      #用中文报错
--enable-underscore \      #允许下划线
--enable-poll \      #协调读写设备个数或读写设备顺序的函数
--enable-gnuregex     #c/c++常用的正则表达式

4、make && make install   #编译安装

5、ln -s /usr/local/squid/sbin/* /usr/local/sbin/          #因为squid是条命令,设置个软链接,可以使管理员也可以使用此命令

6、useradd -M -s /sbin/nologin squid                   #因为每个程序都需要一个管理目录,这里设置一个不可登陆的squid目录

7、chown -R squid.squid /usr/local/squid/var/        #此目录用于存放缓存文件

8、vim /etc/squid.conf
------56行插入-----
http_access allow all  		  #放在http_access deny all 之前,允许任意客户机使用代理服务,控制规则自上而下匹配
http_access deny all
http_port 3128       		   #用来指定代理服务监听的地址和端口(默认的端口号为3128)
-----61行--插入------
cache_effective_user squid        #添加   指定程序用户
cache_effective_group squid       #添加   指定账号基本组
coredump_dir /usr/local/squid/var/cache/squid    #指定缓存文件目录

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

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

11、squid    //启动服务

12、netstat -anpt | grep "squid"    #查看端口号,看服务是否看起

13、vim /etc/init.d/squid                #设置可以使用systemctl管理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

14、chmod +x /etc/init.d/squid         #设置权限

15、chkconfig --add squid      
16、chkconfig --level 35 squid on

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

三、传统代理服务器

---------------------------传统代理服务器-----------------------------

1、环境准备工作:
squid服务器  192.168.150.100             安装squid                nat模式
web服务器    192.168.150.101             开启http                  nat模式
client客户端     win10  192.168.150.150                              nat模式

2、vim /etc/squid.conf
-------------------------
http_access allow all
http_access deny all
http_port 3128
cache_effective_user squid
cache_leffective_group squid
cache_mem 64 MB                   #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB         #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
maximum_object_size 4096 KB       #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
------------------------
3、systemctl restart squid
4、iptables -F
5、setenforce 0
6、iptables -I INPUT -p tcp --dport 3128 -j ACCEPT


7、在Windows系统中开启浏览器
Internet选项---》连接----》局域网设置----ip:squid服务器地址  端口:3128
地址栏输入web服务器地址
查看web服务器访问日志access.log  是代理服务器地址访问

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

四、透明代理

  • 透明代理提供的服务功能与传统代理是一致的,但是其“透明”的实现依赖于默认路由和 防火墙的重定向策略,因此更适用于为局域网主机服务,而不适合为 Internet 中的客户机提 供服务
  • 在 Linux 网关上,构建 Squid 为客户机访问 Internet 提供代理服务。
    在所有的局域网客户机上,只需正确设置 IP 地址、默认网关和 DNS,不需要手动指定 代理服务器的地址、端口等信息。
    在这里插入图片描述
-------------------透明代理-----------------------------
1、环境准备工作:
squid服务器       ens33:192.168.150.100(nat)               ens38:192.168.10.10(仅主机)          squid安装包
web服务器         192.168.150.101                   开启http                              nat模式
client                 win10    192.168.10.11                仅主机模式
2、配置双网卡内网
ens33         192.168.150.100  

外网ens36         192.168.10.10

3、vim /etc/squid.conf

http_port 192.168.10.10:3128 transparent

4、systemctl restart squid

5、vim /etc/sysctl.conf
net.ipv4.ip_forward=1
--------
sysctl -p
6、iptables -F

7、iptables -t nat -F

8、vim /etc/sysctl.conf
net.ipv4.ip_forward=1

9、---------------------------将来源为192.168.10.0网段:80、443端口的流量重定向到3128端口
iptables -t nat -I PREROUTING -i ens38 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
     iptables -t nat -I PREROUTING -i ens38 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128

------------若进行重启,需要重新配置以下规则
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
----------------web服务器------------
10、route add -net 12.0.0.0/24 gw 192.168.10.10

11、windos验证 看日志验证 

在这里插入图片描述

在这里插入图片描述

五、acl代理

----------------------ACL访问控制----------------------------------------
环境准备工作:
squid服务器        192.168.150.100        squid       nat模式
web服务器           192.168.150.101       httpd       nat模式
web服务器           192.168.150.102       httpd       nat模式
windos                 192.168.150.200                      nat模式
vim /etc/squid.conf
----------------------------------
acl localhost src 192.168.175.136/32
acl MYLAN src 192.168.175.0/24
acl destionhost dst 192.168.175.130/32
acl MC20 maxconn 20
acl BURL url_regex -i ^rtsp:// ^emule://
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$
acl work time MTWHFAC 08:30-17:30

mkdir /etc/squid     #启用对象列表管理

vim dest.list
   
   192.168.175.150
   192.168.175.140
   192.168.175.130   #目标web

vim /etc/squid.conf
   
   acl destionhost dst "/etc/squid/dest.list"




   http_access deny destionhost   #拒绝列表(注意置顶)


systemctl restart squid  

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

六、Squid 日志分析

------------------------squid日志分析---------------------------

1、yum install -y gd gd-devel pcre-devel #图像处理

2、mkdir /usr/local/sarg

3、tar zxvf sarg-2.3.7.tar.gz 

4、cd /opt/sarg-2.3.7

5、./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection            #额外安全防护

6、make && make install

7、cd /etc/sarg/

8、vim sarg.conf

7/ access_log /usr/local/squid/var/logs/access.log    //指定访问日志文件

25/ title "Squid User Access Reports"      //网页标题

120/ output_dir /var/www/html/sarg   //报告输出目录

178/ user_ip no          //使用用户名显示

206/ exclude_hosts /usr/local/sarg/noreport   //不计入排序的站点列表文件

184/ topuser_sort_field connect reverse   //top排序中有连接次数、访问字节、降序排列 升序是normal

190/ user_sort_field connect reverse
    //用户访问记录 连接次数、访问字节按降序排序

257/ overwrite_report no   //同名日志是否覆盖

289/ mail_utility mailq.postfix   //发送邮件报告命令

434/ charset UTF-8   //使用字符集

518/ weekdays 0-6   //top排行的星期周期

525/ hours 0-23   //top排行的时间周期

633/ www_document_root /var/www/html  //网页根目录


#添加不计入站点文件,添加的域名将不被显示在排序中
9、touch /usr/local/sarg/noreport

10、ln -s /usr/local/sarg/bin/sarg /usr/local/bin/


11、[root@localhost sarg]# sarg 
SARG: 纪录在文件: 242, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/squid-reports/2018Jul21-2018Jul21

12、yum install httpd -y

13、systemctl start httpd
14、systemctl stop firewalld

15、访问http://192.168.175.128/sarg

16、vim /usr/local/sarg/report.sh
#!/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)
#get one week ago today
YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)
/usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/sarg -z -d $YESTERDAY-$TODAY &> /dev/null
exit 0
17、chmod +x /usr/local/sarg/report.sh
#周期性计划任务执行每天生成报告crontab
18、crontab -e
0 0 * * * /usr/local/sarg/report.sh

在这里插入图片描述

七、squid反向代理

--------------squid反向代理---------------------------------------
1、因为httpd会占用80端口,所以必须关闭squid服务器中的httpd服务

2、 清空防火墙规则,并放空3128端口
iptables -F
iptables -t nat -F

3 . 修改squid配置文件
vim /etc/squid.conf
http_port 192.168.80.10:80 accel vhost vport
cache_peer 192.168.80.20 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.80.30 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.clj.com

4、##重启squid服务
systemctl stop squid.service
systemctl start squi

5、后端2台web节点服务器设置
##节点1(web1:192.168.80.20)
echo “this is WEB1” >> /var/www/html/index.html

##节点2(web2:192.168.80.30)
echo “this is WEB1” >> /var/www/html/index.html

6、客户机的域名映射配置
修改C:\Windows\System32\drivers\etc\hosts 文件
192.168.80.10 www.clj.com

7、开启客户机的代理配置
打开浏览器,工具–>Internet选项–>连接–>局域网设置–>开启代理服务器
(地址: Squid服.务器IP地址,端口: 80)

浏览器访问http:/ /www. kgc. com

``

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值