• CentOS7安装部署squid服务(透明代理+反向代理)


    一、squid服务介绍

    Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
    squid服务有三种常用代理模式:分别为传统代理、透明代理(正向代理)、反向代理。

    特别说明:如果服务器主机时间不同步,可能将会出现一直缓存失败的情况,即TCP_MISS。时间同步配置如下

    echo '*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com>/dev/null 2>&1' >>/var/spool/cron/root
    crontab -l
    View Code

    二、安装squid服务

    1、主机环境

    操作系统:CentOS7.5
    主机名:squid01
    eth0:10.0.0.17

    2、安装squid服务之前系统优化

    #增加文件描述符并检查
    echo '* - nofile  65535' >>/etc/security/limits.conf
    tail -1 /etc/security/limits.conf
    
    #调整端口范围并检查
    cat /proc/sys/net/ipv4/ip_local_port_range 
    echo "net.ipv4.ip_local_port_range = 4000  65000">>/etc/sysctl.conf 
    sysctl -p|grep port_range
    cat /proc/sys/net/ipv4/ip_local_port_range 
    View Code

    3、创建squid用户运行squid服务

    useradd -s /sbin/nologin -M squid

    4、下载并安装squid(这里采用编译安装squid)

    #下载安装包
    cd /usr/local/src/
    wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.20.tar.gz
    
    #解压tar包并进入解压之后的目录
    tar -xvf squid-3.5.20.tar.gz
    cd squid-3.5.20
    
    #编译参数并make和make install
    ./configure --prefix=/usr/local/squid3.5.20 
    --enable-async-io=100 
    --with-pthreads 
    --enable-storeio="aufs,diskd,ufs" 
    --enable-removal-policies="heap,lru" 
    --enable-icmp 
    --enable-delay-pools 
    --enable-useragent-log 
    --enable-referer-log 
    --enable-kill-parent-hack 
    --enable-cachemgr-hostname=localhost 
    --enable-arp-acl 
    --enable-default-err-language=English 
    --disable-poll 
    --disable-wccp 
    --disable-wccpv2 
    --disable-ident-lookups 
    --disable-internal-dns 
    --enable-basic-auth-helpers="NCSA" 
    --enable-stacktrace 
    --with-large-file 
    --disable-mempools 
    --with-filedescriptors=64000 
    --enable-ssl 
    --enable-x-accelerator-vary 
    --disable-snmp 
    --with-aio 
    --enable-linux-netfilter 
    --enable-linux-tproxy
    
    make && make install
    echo $?
    View Code

    5、创建squid软链接

    ln -s /usr/local/squid3.5.20 /usr/local/squid

    6、配置squid环境变量

    export PATH="$PATH:/usr/local/squid/sbin/:/usr/local/squid/bin/"
    echo "PATH="$PATH:/usr/local/squid/sbin/:/usr/local/squid/bin/"">>/etc/profile
    source /etc/profile
    echo $PATH
    View Code

    7、编辑squid配置文件(vim /usr/local/squid/etc/squid.conf)

    *设置运行squid服务的用户和组
    #run user
    cache_effective_user squid
    cache_effective_group squid
    
    *设置可见主机名
    #hostname
    visible_hostname squid01
    
    *设置管理员联系邮件
    #admin email
    cache_mgr wutaokl@163.com
    
    *打开cache_dir注释
    cache_dir ufs /usr/local/squid3.5.20/var/cache/squid 100 16 256
    View Code

    8、squid服务管理脚本

    #!/bin/bash
    #squid Manage
    case "$1" in
    start)
      /usr/local/squid/sbin/squid -s
      ;;
    stop)
      /usr/local/squid/sbin/squid -k shutdown
      ;;
    restart)
      /usr/local/squid/sbin/squid -k reconfigure
      ;;
    parse)
      #检查语法
      /usr/local/squid/sbin/squid -k parse
      ;;
    check)
      /usr/local/squid/sbin/squid -k check
      ;;
    *)
      echo "Usage:$0 start|stop|restart|check|parse"
    esac
    View Code

    9、授权目录

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

    10、初始化缓存目录

    squid -z /usr/local/squid/var/cache

    11、检查squid配置文件无误之后启动squid服务并检查服务是否运行(这里使用命令行命令启动)

    squid -k parse
    squid -s
    lsof -i:3128
    View Code

    三 、配置传统代理

    1、浏览器设置

    2、跟踪access.log日志文件,用浏览器访问网站,访问日志写入access.log

    tail -f /usr/local/squid/var/logs/access.log

    3、停止squid服务,用浏览器访问网站,出现如下页面

    squid -k shutdown

    #到此,传统代理配置完成。

     四、配置透明代理

    1、实验环境

    主机01:主机名->squid01 eth0->10.0.0.17 eth1->172.16.2.17 DNS->223.5.5.5

    主机02:主机名->squid02 eth0->172.16.2.18  gw->172.16.2.17 DNS->223.5.5.5

    2、实验说明

    squid01即时squid代理服务器又是防火墙服务器,squid02表示公司内网工作环境,实验环境架构图如下

    3、在squid01上配置透明代理,编辑squid.conf文件

    http_port 3128 transparent
    
    cache_mem 99 MB
    cache_swap_low 90
    cache_swap_high 95
    maximum_object_size 8192 KB
    minimum_object_size 0 KB
    maximum_object_size_in_memory 4096 KB
    memory_replacement_policy lru
    View Code

    4、检查配置文件并重启squid服务

    squid -k parse
    squid -k reconfigure
    lsof -i:3128

    5、在squid01安装iptables防火墙

    yum install -y iptables

    6、把内网访问的80端口映射到squid01服务器的3128端口上,并让内容可以上网

    iptables -F
    iptables -F -t nat
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
    iptables -t nat -A POSTROUTING -o eth0 -s 172.16.2.0/24 -j MASQUERADE
    View Code

    7、启动路由转发功能

    echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf
    sysctl -p

    8、添加内网上网网关

    roude -add default gw 172.16.2.17

    9、在squid01上跟踪access.log访问日志

     tail -f /usr/local/squid/var/logs/access.log

    10、在squid02上访问百度(多curl几次)

     curl baidu.com

    11、在squid01的访问日志出现TCP_MEM_HIT/200说明透明代理搭建成功,如下所示

     

     五、搭建反向代理

    1、实验环境

    主机01:主机名->squid01  eth0->10.0.0.17

    主机02:主机名->squid01  eth0->10.0.0.18 (充当web服务器)   

    2、在squid01配置反向代理,编辑squid.conf文件

    http_port 80 accel vhost vport
    
    cache_peer 10.0.0.18 parent 80 0 no-query no-digest max-conn=32 originserver  #代理的机器
    
    hosts_file /etc/hosts
    request_header_max_size 128 KB
    ipcache_size 1024
    ipcache_low 90
    ipcache_high 95
    offline_mode on           #离线模式
    View Code

    3、检查squid.conf配置文件并重启squid服务

    squid -k parse
    squid -k reconfigure
    lsof -i:80

    4、增加hosts解析

    echo "10.0.0.18   squid02">>/etc/hosts

    5、在squid02安装Apache

    yum install -y httpd

    6、上传或下载一张图片到/var/www/html/下

    7、启动httpd服务

    systemctl start httpd
    lsof -i:80

    8、跟踪squid01的access.log访问日志

    tail -f /usr/local/squid/var/logs/access.log 

    9、访问内网的web站点

    10、查看access.log日志,出现TCP_IMS_HIT或TCP_MEM_HIT表示squid搭建反向代理并缓存成功

     六、squid一些配置参数说明

    #提供给squid使用的内存
    cache_mem 99 MB
    
    #cache目录使用量大于95%时,开始清理旧的cache
    cache_swap_low 90
    
    #cache目录清理到90%时停止
    cache_swap_high 95
    
    #设置squid磁盘缓存最大文件,超过8M的文件不保存到硬盘
    maximum_object_size 8 MB
    
    #设置squid磁盘缓存最小文件
    minimum_object_size 0 KB
    
    #设置squid内存缓存最大文件,超过4M的文件不保存到内存
    maximum_object_size_in_memory 4096 KB
    
    #缓存算法
    memory_replacement_policy lru
    
    #反向代理的Web源站的域名
    cache_peer 10.0.0.18 parent 80 0 no-query no-digest max-conn=32 originserver
    
    #域名映射文件位置
    hosts_file /etc/hosts
    
    #请求头部的最大大小
    request_header_max_size 128 KB
    
    #ip对应cache的大小为1024
    ipcache_size 1024
    
    #缓存IP地址的最低基线
    ipcache_low 90
    
    #缓存IP地址的最高基线
    ipcache_high 95
     
    #域名全称cache的大小为1024(默认1024)
    fqdncache_size 1024
    
    #离线模式
    offline_mode on           
    View Code
  • 相关阅读:
    Spring Boot 常用注解
    python类的理解
    深入理解JavaScript的执行机制(同步和异步)
    HBuilderX scss/sass 使用教程
    uniapp引入微信小程序直播组件
    常见正则表达式例子
    远程桌面提示:身份验证错误 要求的函数不受支持
    ORCAL使用中存在的问题记录
    SQLSERVER常用函数
    vue-router.esm.js: Error: "Loading chunk 0 failed"
  • 原文地址:https://www.cnblogs.com/wutao666/p/9657690.html
Copyright © 2020-2023  润新知