Squid安装与配置


squid代理服务器

squid是一种用来缓存Internet数据的软件。接受来自客户机需要下载的目标的请求并适当的处理这些请求。也就是说,如果一个客户端想要打开默认网站,它请求squid为它取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机上。

mark

一:squid概述

Squid(Squid cache,简称Squid)是Linux系统中最常用的一款开源代理服务软件,可以很好地实现HTTP和FTP,以及DNS查询、SSL等应用的缓存代理,功能十分强大,本篇博客详细介绍了传统代理、透明代理,squid日志分析的配置。squid的官方网站为http://www.squid-cache.org

1.1:squid代理的作用

- 通过缓存方式为用户提供Web加速访问
- 对用户的Web访问请求进行过滤控制

1.2:缓存代理概述

1.21:Web代理的工作机制
  • 缓存网页对象,减少重复请求

mark

1.3:代理的基本类型

  • 传统代理:适用于lnternet,需要明确指定服务器

  • 透明代理:客户机不需要指定代理服务的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理

  • 使用代理的好处
  • 提高Web访问速度

  • 隐藏客户机的真实IP地址

mark

二:案例一:传统代理

环境

名称角色地址
centos-7squit20.0.0.45
centos-7web20.0.0.46
centos-7客户机20.0.0.120

2.1:安装squid服务

#解压到opt目录
tar zxvf squid-3.4.6.tar.gz -C /opt

#安装编译工具
yum -y install gcc gcc-c++

#configure配置
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 \                       //io对于io的优化 异步I/O 提升存储性能
--enable-err-language="Simplify_Chinses" \     //err-language 报错信息设置为中文
--enable-poll \                                   //提升功能 使用poll()模式
--enable-gnuregex \                              //支持正则表达式
--enable-underscore                             //允许URL支持下划线

#编译及安装
make && make install

#路径优化,便于系统管理
[root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/

#创建squid程序性用户
[root@squid squid-3.4.6]# useradd -M -s /sbin/nologin squid

#赋予目录权限
[root@squid squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/

2.2:修改主配置文件

[root@squid squid-3.4.6]# vim /etc/squid.conf			//编辑配置文件
//56   
http_access allow all          //开启允许所有访问 
#http_access deny all         //注释拒绝访问

http_port 3128
//下面添加    
cache_effective_user squid     //缓存相对的用户
cache_effective_group squid    //缓存相对的组

#验证语法配置文件语法
[root@squid squid-3.4.6]# squid -k parse

#初始化缓存目录
[root@squid squid-3.4.6]# squid -z

#启动squid服务
[root@squid squid-3.4.6]# squid 

#查看端口
[root@squid squid-3.4.6]# netstat -natp | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN  :    71471/(squid-1) 

2.3:创建systemctl启动脚本

[root@squid squid-3.4.6]# cd /etc/init.d/

#!/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
      
      
#增加执行权限
[root@squid init.d]# chmod +x squid 

#添加到squid服务
[root@squid init.d]# chkconfig --add squid 

#设置开机启动
[root@squid init.d]# chkconfig --level 35 squid on

[root@squid init.d]# netstat -ntap | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      118846/(squid-1)    

'//重启squid服务'
[root@squid init.d]# service squid stop 
[root@squid init.d]# setenforce 0
[root@squid init.d]# service squid start 
正在启动 squid...
[root@squid init.d]# netstat -ntap | grep 3128
tcp6       0      0 :::3128                 :::*   :                 LISTEN      119829/(squid-1) 

2.4:设置缓存参数

[root@squid init.d]# vim /etc/squid.conf

http_port 3128      '//下面添加'      
cache_mem 64 MB                      //缓存64M的内容
reply_body_max_size 10 MB            //禁止下载的超过10MB的文件
maximum_object_size 4096 KB          //超过4MB:的文件不进行缓存

2.5:设置防火墙规则

[root@squid init.d]# iptables -F
[root@squid init.d]# setenforce 0
[root@squid init.d]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

#重载服务
[root@squid init.d]# service squid reload

[root@squid init.d]# netstat -ntap | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      119829/(squi:d-1) 

2.6:配置web端和客户端

[root@localhost ~]# su
[root@web ~]# systemctl stop firewalld.service 
[root@web ~]# setenforce 0
[root@web ~]# yum install httpd -y
[root@web ~]# systemctl start httpd
[root@web ~]# netstat -ntap | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      85552/httpd         

#查看访问日志是没有东西的
[root@web ~]# cat /var/log/httpd/access_log 

2.7:打开客户进行配置

mark

  • 设置客户端代理服务为squid IP

mark

  • 用win 10客户机访问web

mark

2.8:查看web端httpd的访问日志

[root@web ~]# cat /var/log/httpd/access_log 

客户端20.0.0.120访问20.0.0.46网站服务,成功变为访问 squid代理IP

mark

传统代理需要客户端在浏览器上指定代理服务器的ip比较麻烦。

透明代理不需要在浏览器指定,需要将网关设为代理服务器。

三:squid缓存服务器—透明代理

3.1:在传统模式的基础上配置【全部仅主机模式】

mark

3.2:配置squid双网卡 ens33内网 ens36外网

mark

  • 配置网卡
[root@squid ~]# cd /etc/sysconfig/network-scripts/
[root@squid network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@squid network-scripts]# vim ifcfg-ens36

//配置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=20.0.10.1
NETMASK=255.255.255.0

#配置路由转发功能
vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1

#使路由转发生效
[root@squid network-scripts]# sysctl -p
net.ipv4.ip_forward = 1

#重启网卡
[root@squid ~]# service network restart
Restarting network (via systemctl):                        [  确定  ]

#查看网卡信息
[root@squid ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 20.0.0.43  netmask 255.255.255.0  broadcast 20.0.0.255
        inet6 fe80::1e75:7c2d:ef11:d9a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a6:36:0a  txqueuelen 1000  (Ethernet)
        RX packets 443515  bytes 492986663 (470.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 437684  bytes 827168602 (788.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 20.0.10.1  netmask 255.255.255.0  broadcast 20.0.10.255
        inet6 fe80::adec:fd2a:b077:3f25  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a6:36:14  txqueuelen 1000  (Ethernet)
        RX packets 1038  bytes 78352 (76.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 78  bytes 12349 (12.0 KiB)
        TX err:ors 0  dropped 0 overruns 0  carrier 0  collisions 0

3.3:配置透明代理

[root@squid ~]# vim /etc/squid.conf

# Squid normally listens to port 3128
http_port 3128   //修改为    http_port 20.0.10.1:3128 transparent    transparent'//透明模式'

#验证语法
[root@squid ~]# squid -k parse

3.4:配置防火墙规则

-t nat表 -I PREROUTING 进路由 -i 入口 -s 源地址 -p tcp协议 --dport 目标端口 -j 操作 REDIRECT重定向到 --to 3128端口

[root@squid ~]# iptables -t nat -I PREROUTING -i ens36 -s 20.0.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
[root@squid ~]# iptables -t nat -I PREROUTING -i ens36 -s 20.0.10.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT


#重载
[root@squid ~]# service squid reload

'web节点开启路由'
route add -net 20.0.10.0/24 gw 20.0.0.45

3.5:客户机进行访问

mark

mark

再次访问web服务即可

3.6:web服务器查看访问日志日志文件

[root@web ~]# cat /var/log/httpd/access_log

mark

本次实验结束感谢观看

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装配置Squid,可以按照以下步骤进行操作: 1. 首先,确保你的系统上已经安装Squid软件包。可以使用包管理器来安装,例如在Ubuntu上,可以运行以下命令: ``` sudo apt-get update sudo apt-get install squid ``` 2. 安装完成后,进入Squid配置目录。在Ubuntu上,默认配置文件位于`/etc/squid/squid.conf`。 3. 在编辑器中打开配置文件,开始进行配置。你可以使用任何文本编辑器,例如Vim或Nano。 ``` sudo vim /etc/squid/squid.conf ``` 4. 配置Squid的基本设置。你可以设置监听端口、缓存大小、日志文件位置等。根据你的需求进行修改。以下是一些常用的配置选项: - `http_port`:Squid监听的HTTP代理端口,默认为3128。 - `cache_dir`:定义缓存目录及其大小。例如:`cache_dir ufs /var/spool/squid 10000 16 256`。 - `access_log`和`cache_log`:分别定义访问日志和缓存日志的位置。 - `visible_hostname`:定义代理服务器的可见主机名。 5. 配置访问控制列表(ACL)。ACL允许你控制谁可以访问你的代理服务器。你可以设置允许或拒绝特定的IP地址、网络、用户等。以下是一些示例: - `acl localnet src 192.168.0.0/24`:定义一个名为"localnet"的ACL,允许192.168.0.0/24网段的IP访问。 - `http_access allow localnet`:允许"localnet" ACL中定义的IP访问代理。 6. 配置其他高级选项。根据你的需求,你可以设置缓存策略、网络连接设置、身份验证等。这些选项可以根据你的具体需求进行配置。 7. 保存并关闭配置文件。 8. 配置完成后,重新启动Squid服务使更改生效。 ``` sudo service squid restart ``` 现在,你已经成功安装配置Squid代理服务器。你可以通过配置的监听端口使用它作为HTTP代理服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值