linux基础服务器架设squid普通代理服务器!

Posted mr-henry-chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础服务器架设squid普通代理服务器!相关的知识,希望对你有一定的参考价值。

一、简介

代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。

Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议并且Squid 可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。

1.1 工作流程

当代理服务器中客户端需要的数据时:

a. 客户端向代理服务器发送数据请求;

b. 代理服务器检查自己的数据缓存;

c. 代理服务器在缓存中找到了用户想要的数据,取出数据;

d. 代理服务器将从缓存中取得的数据返回给客户端。

当代理服务器中没有客户端需要的数据时:

1. 客户端向代理服务器发送数据请求;

2. 代理服务器检查自己的数据缓存;

3. 代理服务器在缓存中没有找到用户想要的数据;

4. 代理服务器向Internet 上的远端服务器发送数据请求;

5. 远端服务器响应,返回相应的数据;

6. 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。

技术分享图片

1.2 Squid 分类

按照代理类型的不同,可以将Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。

  • 普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;
  • 透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;
  • 反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器;

 

二、系统环境

普通代理服务器关闭iptables

操作系统:CentOS release 6.5 (Final)

Squid版本:squid-3.1.23-24.el6.x86_64

SELINUX=disabled

service iptables stop

三、安装Squid服务

3.1 首先检查系统中是否安装squid 软件

  [[email protected] ~]# rpm -aq | grep squid

3.2 如果未安装,使用yum方式安装(配置本机yum源或使用阿里的源都可以,或使用RPM包方式进行安装)

[[email protected] ~]# yum -y install squid 

下面是我安装的squid 的版本信息!

技术分享图片

3.3 设置开机自启动

[[email protected] ~]# chkconfig squid on     

或者[[email protected] ~]# chkconfig --level 35 squid on            

确认服务状态

[[email protected] ~]# chkconfig --list | grep squid

squid 0:off 1:off 2:on 3:on 4:on 5:on 6:off

四、squid服务器的配置文件说明

squid 的主配置文件是 /etc/squid/squid.conf,所有squid的设定都是在这个文件里配置,下面我们来讲解一下该文件的配置选项。

http_port 3128      //设置监听的IP与端口号

cache_mem 64 MB      //额外提供给squid使用的内存,squid的内存总占用为 X * 10+15+“cache_mem”,其中X为squid的cache占用的容量(以GB为单位),
               //比如下面的cache大小是100M,即0.1GB,则内存总占用为0.1*10+15+64=80M,推荐大小为物理内存的1/3-1/2或更多。
maximum_object_size 4 MB   //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘

minimum_object_size 0 KB   //设置squid磁盘缓存最小文件

maximum_object_size_in_memory 4096 KB   //设置squid内存缓存最大文件,超过4M的文件不保存到内存

cache_dir ufs /var/spool/squid 100 16 256   //定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量

logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh        //log文件日志格式

access_log /var/log/squid/access.log combined  //log文件存放路径和日志格式

cache_log /var/log/squid/cache.log   //设置缓存日志

logfile_rotate 60   //log轮循 60天

cache_swap_high 95  //cache目录使用量大于95%时,开始清理旧的cache

cache_swap_low 90   //cache目录清理到90%时停止。

acl localnet src 192.168.1.0/24  //定义本地网段

http_access allow localnet  //允许本地网段使用

http_access deny all  //拒绝所有

visible_hostname squid.david.dev  //主机名

cache_mgr [email protected]  //管理员邮箱

五、普通代理服务  

 我的实验架构图

因为我的网络环境中有一个代理服务器(10.67.50.59),有权限用户可正常使用,本次我的是在现有环境下配置一个二级代理服务器(10.67.50.52)测试使用!

技术分享图片

5.1 配置Squid 代理服务器IP地址

将eth0的IP地址修改为 10.67.50.52

技术分享图片

 5.2 查看squid.conf 的配置文件,在修改前先进行备份!

 5.2.1  配置文件备份:cp /etc/squid/squid.conf /etc/squid/squid.conf.blk 

5.2.2  grep 查看配置文件内的原始配置

[[email protected] squid]#  grep -P -v ‘#|^$‘ squid.conf.blk
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|?) 0	0%	0
refresh_pattern .		0	20%	4320 

 5.2.3 我们本次做普通的代理服务器,在设置之前,可将原始配置值姐删除,我们重新加入如下配置!

http_port 3128         #代理端口设置;默认3128     
cache_mem 128 MB       #最大缓存块
cache_dir ufs /var/spool/squid 4096 16 256    #ufs:缓存数据的存储格式  #/var/spool/squid    缓存目录   #100:缓存目录占磁盘空间大小(M)   #16:缓存空间一级子目录个数  #256:缓存空间二级子目录个数
cache_effective_user squid #这里以用户squid 的身份squid服务器 我们安装完squid服务后,会在/etc/passwd 文件中生成一个 squid 的账号!截图如下!
cache_effective_group squid #这里以群组squid 的身份squid服务器
cache_access_log /var/log/squid/access.log #接入访问日志存放位置
cache_log /var/log/squid/cache.log #缓存日志
cache_store_log /var/log/squid/store.log #存储日志
visible_hostname basicservices #可见主机名
acl localnet src 10.0.0.0/8 #acl 定义本地网络地址范围
http_access allow localnet #允许所有的10.0.0.0/8地址段使用
cache_peer 10.67.50.59 parent 808 0 default #本次设置为二级代理,需将服务请求指向一级代理,如默认为双网卡的以及代理,可无需配置此项
never_direct allow all

 如果以及代理需要账号密码,配置选项中需添加如下语句!方可调用一级代理

  #cache_peer 10.67.50.59 parent 808 0 login=account:passwd default
  #never_direct allow all

生成的squid用户

技术分享图片

5.3 初始化

[[email protected] ~]# squid -z

技术分享图片

5.4 启动Squid

技术分享图片

在此入伙遇到无法启动的情况,去查看一下/var/log/message 中的报错,我的是squid.conf配置文件语句有错误,导致无法启动,后修改正确后,可正常启动服务!

5.5 配置user proxy

技术分享图片

5.6 测试

配置上以后,可以正常连接外网!

 














以上是关于linux基础服务器架设squid普通代理服务器!的主要内容,如果未能解决你的问题,请参考以下文章

基于Squid和TinyProxy搭建代理集群

构建Squid代理服务器-传统代理透明代理反向代理

Linux中Varnish基础应用

Squid代理服务器安装及部署

Linux代理服务器—squid正向代理实验

42.部署Squid代理服务