Squid代理服务器及配置

一、缓存代理概述

(一)代理的基本类型

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

(二)使用代理的好处

  • 提高Web访问速度
  • 隐藏客户机的真实IP地址

二、实验:使用Squid实现传统代理与透明代理

  • 实验环境:VMware Workstation 15.5、Xshell 6、Centos7.6、squid-3.4.6.tar
  • 服务器IP地址规划
设备名称及用途 IP地址
Squid代理服务器 192.168.50.134
Web服务器 192.168.50.135
客户机 192.168.50.128
  • 本实验所需软件包(squid)下载地址:https://wwa.lanzous.com/i4zX0ge8rch
  • 实验步骤

①实验一:传统代理

1、安装编译环境

yum -y install gcc gcc-c++

2、解压缩软件包进行配置

tar zxvf squid-3.4.6.tar.gz      ## 解压缩软件包

cd squid-3.4.6/     ## 进入解压缩人的软件目录

./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 \           ## 在URL中支持下划线
--enable-poll \                 ## 功能提升
--enable-gnuregex               ## 支持正则表达式

3、进行编译和安装

make && make install

4、让软件命令能被系统所识别

ln -s /usr/local/squid/sbin/* /usr/local/sbin

5、创建程序用户

useradd -M -s /sbin/nologin squid

6、为工作目录赋予权限

chown -R squid.squid /usr/local/squid/var/

7、编辑并修改squid配置文件

vim /etc/squid.conf

将这一行 http_access deny all 中的deny改为allow即可

在这一行“# Squid normally listens to port 3128”下面添加两行内容:
cache_effective_user squid       ## 添加指定程序用户
cache_effective_group squid    ## 添加指定账号基本组

8、修改完成后使用命令检查配置文件语法

squid -k parse

9、初始化缓存目录

squid -z

10、启动服务

squid

11、创建squid服务启动脚本并设置为开机自启动

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       ## 将服务添加到系统服务管理中
chkconfig --level 35 squid on    ## 设置为开机自启动

12、编辑squid配置文件并进行配置

cache_mem 64 MB            ## 指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位MB
reply_body_max_size 10 MB         ## 允许用户下载的最大文件大小,以字节为单位,默认设置0表示不进行限制
maximum_object_size 4096 KB      ## 允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给客户端

13、关闭squid代理服务器的清空防火墙规则

iptables -F
setenforce 0

14、设置防火墙规则

iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

15、启动squid服务

service squid reload

16、在Web服务器上安装并开启http服务

yum -y install httpd    ## 安装http服务

同样也要清空防火墙规则:
iptables -F
setenforce 0

17、打开客户端浏览器,这里使用的是Chrome浏览器,在地址栏中输入192.168.50.134进行访问,接着回到web服务器端查看访问日志,可以看出是IP为128的设备进行了访问
we40pQ.md.jpg

现在来配置代理服务,打开浏览器的设置,选择“系统”,再选择“打开您计算机代理设置”,在弹出的对话框中输入squid服务器的IP和端口3128,单击“保存”即可设置完成
we4dfg.jpg
we4atS.jpg
we4Uk8.md.jpg
we4tTf.md.jpg

设置完成后,清除缓存记录并重启浏览器再次访问,回到服务器端查看日志,可以看到显示的IP已经是squid服务器的地址了
we4rXn.md.jpg

②试验二:透明代理

  • 实验准备

    1.将三台设备(squid代理服务器、Web服务器、客户机)的网卡均设置为仅主机模式

    2.为squid服务器添加一块网卡ens36,同样设置为仅主机模式

    3.IP地址规划:squid服务器:内网(ens33:192.168.50.134)、外网(ens36:192.168.100.1)

  • 实验步骤

1、配置双网卡:内网(ens33:192.168.50.134)、外网(ens36:192.168.100.1)

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens36    ## 拷贝一ens33的网卡并重命名为ens36

分配编辑ens33与ens36网卡,配置文件如下:
【ens33】
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=bf59517c-d7a2-4f8c-a855-c297305b3c73
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.50.134
NETMASK=255.255.255.0
GATEWAY=192.168.50.2

【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.1
NETMASK=255.255.255.0

service network restart    ## 重启网卡

we4Blj.md.jpg

2、开启流量转发

vim /etc/sysctl.conf    ## 编辑配置文件
net.ipv4.ip_forward=1   ## 添加转发规则
sysctl -p               ## 使配置立即生效

3、配置透明代理

vim /etc/squid.conf    ## 编辑配置文件

修改 http_port 3128 为 http_port 192.168.100.1:3128 transparent

4、配置防火墙转发规则

iptables -t nat -I PREROUTING -i ens36 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens36 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT       ## 如果第一个实验没有做则需要这一条命令

5、重载squid服务配置文件

service squid reload

6、打开客户机上的浏览器,清除缓存后重启,再次访问192.168.50.135(Web服务器),然后查看http服务日志,可以看到访问地址为ens33网卡IP
we4D6s.md.jpg

猜你喜欢

转载自blog.csdn.net/u014042047/article/details/108433703