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 软件
[root@basicservices ~]# rpm -aq | grep squid
3.2 如果未安装,使用yum方式安装(配置本机yum源或使用阿里的源都可以,或使用RPM包方式进行安装)
[root@basicservices ~]# yum -y install squid
下面是我安装的squid 的版本信息!
3.3 设置开机自启动
[root@basicservices ~]# chkconfig squid on
或者[root@basicservices ~]# chkconfig --level 35 squid on
确认服务状态
[root@basicservices ~]# 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 mchina_tang@qq.com //管理员邮箱
五、普通代理服务
我的实验架构图
因为我的网络环境中有一个代理服务器(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 查看配置文件内的原始配置
[root@basicservices 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 初始化
[root@basicservices ~]# squid -z
5.4 启动Squid
在此入伙遇到无法启动的情况,去查看一下/var/log/message 中的报错,我的是squid.conf配置文件语句有错误,导致无法启动,后修改正确后,可正常启动服务!
5.5 配置user proxy
5.6 测试
配置上以后,可以正常连接外网!