Squid代理服务器安装及部署
Squid是Linux系统中最常用的一款开源代理服务软件,可以很好地实现HTTP和FTP,以及DNS基础、SSL等应用的缓存代理,功能非常强大。
缓存代理概述作为应用层的代理服务软件,Squid主要提供缓存加速、应用层过滤控制的功能。 1.代理的工作机制当客户机通过代理来请求Web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容返回给客户机;如果缓存中没有客户机要访问的页面,则由代理服务器向Internet发送访问请求,获得返回的Web页面以后,将网页数据保存到缓存中并发送给客户机,如图: HTTP代理的缓存加速对象主要是文字、图像等静态Web元素。使用缓存机制后,当客户机在不同的时候访问同一Web元素,或者不同的客户机访问相同的Web元素时,可以直接从代理服务器的缓存中获得结果。这样就大大减少了向Internet提交重复的Web请求的过程,提高了客户机的Web访问响应速度。 由于客户机的Web访问请求实际上是由代理服务器来代替完成的,从而可以实现的功能有: 1. 隐藏客户端的真实IP; 2. 通过缓存,提高上网速度; 3. 控制上网行为。 2.代理服务器的类型根据实现方式不同,代理服务器可分为: 传统代理:也就是普通的代理服务,首先必须在客户机的浏览器、QQ聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理来访问网络。通过域名访问网页,域名解析请求也会发送到指定的代理服务器。 透明代理:提供与传统的相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向,实际仍然交给代理服务器来处理,重定向的过程对于客户机来说是“透明”的,用户根本不知道自己在使用代理服务,所以称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发送到DNS服务器。 实际应用中,传统代理多适用于Internet环境,如为QQ程序使用代理可以隐藏本机真实IP地址、为下载工具使用多个代理可以规避服务器的并发连接限制;而透明代理多适用于局域网环境,如在Linux网关中启用透明代理后,局域网主机无须进行额外设置就可以享受更好的上网速度。 Squid安装及基本配置1.编译安装SquidSquid软件包的网盘下载链接:https://pan.baidu.com/s/1IBMvh8kbi4KSBvfDUC1dTg [[email?protected] ~]# tar zxf squid-3.5.23.tar.gz -C /usr/src [[email?protected] ~]# cd /usr/src/squid-3.5.23/ [[email?protected] squid-3.5.23]#./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnuregex 各配置项含义: --prefix:指定安装目录 --sysconfdir=/etc 单独将配置文件修改到其他目录、 --enable-arp-acl 可以在规划中设置直接通过客户端MAC进行管理,防止客户端使用ip欺骗 --enable-linux-netfiler 使用内核过滤 --enable-linux-tproxy 支持透明代理 --enable-async-io=值 //异步i/o提升存储性能,相当于--enable-pthreads --enable-err-language"=Simplify_Chinese" //错误信息的显示语言 --enable-underscore 允许url中有下划线 --enable-poll 使用poll()模式,提升性能 --enable-gnuregex 使用gnu正则表达式 [[email?protected] squid-3.5.23]# make && make install 安装完成后,创建链接文件、创建专属用户和组: [[email?protected] squid-3.5.23]# ln -s /usr/local/squid/sbin/* /usr/local/sbin [[email?protected] squid-3.5.23]# useradd -M -s /sbin/nologin squid [[email?protected] squid-3.5.23]# chown -R squid:squid /usr/local/squid/var 2.编辑Squid服务的配置文件[[email?protected] squid-3.5.23]# vim /etc/squid.conf ……………… //省略部分内容 cache_effective_user squid //指定squid程序用户,需要手工添加 cache_effective_group squid //程序基本组账户,需要手工添加 visible_hostname centos2.benet.com //手工添加主机名,,需要手工添加 cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 //设置缓存目录的大小,一级子目录和二级子目录的个数(默认有此项,去点前面的#) 3.Squid的运行控制1)检查配置文件语法是否正确 [[email?protected] ~]# squid -k parse 2)启动、停止Squid服务 [[email?protected] ~]# squid -z //-z选项用来初始化缓存目录 [[email?protected] ~]# ls /usr/local/squid/var/cache/squid/ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F //查看Squid的缓存目录 [[email?protected] ~]# squid //启动Squid服务 [[email?protected] ~]# netstat -anpt | grep squid //查看服务监听状态 tcp6 0 0 :::3128 :::* LISTEN 45471/(squid-1) [[email?protected] ~]# squid -k reconfigure //重启Squid服务(必须是使用服务本身的启动命令启动服务,而且服务必须是已经启动的) [[email?protected] ~]# kill 45471 //通过杀服务进程号的方式停止Squid服务 3)编写Squid服务脚本 [[email?protected] ~]# vim /etc/init.d/squid #!/bin/bash # chkconfig: 2345 90 25 # config: /etc/squid.conf # pidfile: /usr/local/squid/var/run/squid.pid # Description: Squid -Internet Object Cache. PID="/usr/local/squid/var/run/squid.pid" CONF="/etc/squid.conf" CMD="/usr/local/squid/sbin/squid" case "$1" in start) netstat -anpt | grep squid &> /dev/null if [ $? -eq 0 ] then echo "squid已经启动!!!" 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 -anpt | grep squid else echo "squid没有启动!!!" 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 | restart | reload | check| status}" ;; esac [[email?protected] yum.repos.d]# chmod +x /etc/init.d/squid [[email?protected] yum.repos.d]# chkconfig --add squid [[email?protected] yum.repos.d]# systemctl restart squid Squid服务安装及基本部署大致就这些,以后遇到问题,也会更新的! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |