如何在CentOS或RHEL上搭建Squid透明Web代理系统

如何在CentOS或RHEL上搭建Squid透明Web代理系统,第1张

使用透明代理有几个好处。首先,对最终用户来说,透明代理可以改善上网浏览体验,因为缓存了经常访问的网站内容,同时给他们带来的配置开销最小。对管理员来说,透明代理可用于执行各种管理政策,比如内容/URL/IP过滤和速率限制等。

代理服务器充当客户端和目的地服务器之间的中介。客户端将请求发送到代理服务器,随后代理服务器评估请求,并采取必要的动作。在本教程中,我们将使用Squid搭建一个Web代理服务器,而Squid是一种健壮的、可定制的、稳定的代理服务器。就个人而言,大概一年来我管理着一台拖有400多个客户端工作站的Squid服务器。虽然平均而言我大概一个月就要重启一次服务,但处理器和存储使用率、吞吐量以及客户端响应时间都表现不错。

我们将配置Squid以获得下列拓扑结构。CentOS/RHEL设备有一块网卡(eth0)连接到专有局域网,另一块网卡(eth1)则连接到互联网。

Squid的安装

想使用Squid搭建透明代理系统,我们首先要添加必要的iptables规则。这些规则应该会帮助你开始上手,不过务必要确保它们与任何的现有配置没有冲突。

# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

第一条规则将引起来自eth1(广域网接口)的所有出站数据包都有eth1的源IP地址(也就是启用NAT)。第二条规则将把来自eth0(局域网接口)的所有入站HTTP数据包(发往TCP 80)重定向至Squid侦听端口(TCP 3128),而不是直接将其转发到广域网接口。

我们使用yum,开始安装Squid。

# yum install squid

现在,我们将改动Squid配置,将其变成透明代理系统。我们将局域网子网(比如1010100/24)定义为有效的客户端网络。不是来自该局域网子网的任何流量将被拒绝访问。

# vim /etc/squid/squidconf visible_hostname proxyexampletst http_port 3128 transparent ## 定义我们的网络## acl our_network src 1010100/24 ## 确保我们的网络允许访问## http_access allow our_network ## 最后拒绝其他的所有流量## http_access deny all

现在我们开启Squid服务,确保它已被添加到启动项。

# service squid start # chkconfig squid on

鉴于Squid已搭建并运行起来,我们可以测试其功能了,为此只需监测Squid日志。从连接至该局域网的计算机访问任何URL,你应该会在日志中看到类似以下的内容。

# tailf /var/log/squid/accesslog 1402987348816 1048 10101010 TCP_MISS/302 752 GET http://wwwgooglecom/ - DIRECT/17319439178 text/html 1402987349416 445 10101010 TCP_MISS/302 762 GET http://wwwgooglecombd/ - DIRECT/17319478 94 text/html

据日志文件显示,IP地址为10101010的机器试图访问googlecom,Squid处理了这个请求。

一种最基本的Squid代理服务器现已准备就绪。在本教程的余下部分,我们将调整Squid的一些参数,以控制出站流量。请注意:这仅仅为了演示。实际的政策应加以定制,以满足你的具体要求。

准备工作

在开始配置之前,我们先明确几个要点。

Squid配置解析

在阅读配置文件时,Squid以一种自上而下的方式来解析文件。自上而下地解析规则,直到发现匹配为止。一旦发现匹配,该规则就被执行;其下面的其他任何规则将被忽视。所以,添加过滤规则的最佳实践就是,按下列顺序指定规则。

explicit allow

explicit deny

allow entire LAN

deny all

Squid重启与Squid重新配置

一旦Squid配置经过改动,Squid服务就需要重启。重启服务可能需要一段时间,有时要几分钟,长短取决于活动连接的数量。在这个期间,局域网用户无法访问互联网。想避免这种服务中断,我们可以使用下面这个命令,而不是使用“service squid restart”。

# squid -k reconfigure

该命令将允许Squid使用更新后的参数来运行,而不需要重启本身。

按照IP地址过滤局域网主机

在这个演示中,我们想要搭建这样的Squid:禁止拥有IP地址10101024的主机和IP地址10101025的主机访问互联网。为此,我们创建了一个文本文件“denied-ip-file”,里面含有所有被拒绝访问的主机的IP地址,然后将该文件添加到Squid配置中。

# vim /etc/squid/denied-ip-file 10101024 10101025 # vim /etc/squid/squidconf ## 首先我们创建访问控制列表(ACL),隔离被拒绝访问的IP地址##acl denied-ip-list src "/etc/squid/denied-ip-file" ##然后,我们应用ACL ## http_access deny denied-ip-list ## 明确拒绝## http_access allow our_network ## 允许局域网## http_access deny all ## 拒绝所有deny all ##

现在我们需要重启Squid服务。Squid将不再认可来自这些IP地址的请求。如果我们检查squid日志,就会发现来自这些主机的请求处于“TCP_DENIED”状态。

过滤黑名单中的网站

这个方法将只适用于HTTP。假设我们想阻止badsitecom和denysitecom,就可以将这两个网址添加到文件,并且将引用添加到squidconf。

# vim /etc/squid/badsite-file badsite denysite # vim /etc/squid/squidconf ## ACL定义##acl badsite-list url_regex "/etc/squid/badsite-file" ## ACL 应用## http_access deny badsite-list http_access deny denied-ip-list ## 之前设置,但这里不起作用## http_access allow our_network http_access deny all

请注意:我们使用了ACL类型“url_regex”,这将与所请求的URL中的“badsite”和“denysite”这两个词相匹配。也就是说,凡是在URL中含有“badsite”或“denysite”(比如badsiteorg、newdenysitecom或otherbadsitenet)的请求一律被阻止。

合并多个ACL

我们将创建一个访问列表,阻止IP地址为101010200的客户端和IP地址为101010201的客户端访问custom-block-sitecom。其他任何客户端都能够访问该网站。为此,我们将首先创建一个访问列表以隔离这两个IP地址,然后创建另一个访问列表以隔离所需的网站。最后,我们将同时使用这两个访问列表,以满足要求。

# vim /etc/squid/custom-denied-list-file 101010200 101010201 # vim /etc/squid/custom-block-website-file custom-block-site # vim /etc/squid/squidconf acl custom-denied-list src "/etc/squid/custom-denied-list-file" acl custom-block-site url_regex "/etc/squid/custom-block-website-file" ## ACL应用 ## http_access deny custom-denied-list custom-block-site http_access deny badsite-list ## 之前设置,但这里不起作用## http_access deny denied-ip-list ## 之前设置,但这里不起作用## http_access allow our_network http_access deny all # squid -k reconfigure

被阻止的主机现在应该无法访问上述网站了。日志文件/var/log/squid/accesslog应该含有相应请求的“TCP_DENIED”。

设定最大下载文件大小

Squid可以用来控制最大的可下载文件大小。我们想把IP地址为101010200的主机和IP地址为101010201的主机的最大下载大小限制在50MB。我们之前已经创建了ACL“custom-denied-list”,以隔离来自这些源地址的流量。现在,我们将使用同一个访问列表来限制下载文件大小。

# vim /etc/squid/squidconf reply_body_max_size 50 MB custom-denied-list # squid -k reconfigure

建立Squid缓存层次体系

Squid支持缓存的方式是,将经常访问的文件存储在本地存储系统中。设想一下:你的局域网上有100个用户在访问googlecom。要是没有缓存功能,就要为每一个请求单独获取Google标识或涂鸦。Squid可以将标识或涂鸦存储在缓存中,以便从缓存来提供。这不仅改善了用户感觉得到的性能,还减少了带宽使用量。这可以说是一举两得。

想启用缓存功能,我们可以改动配置文件squidconf。

# vim /etc/squid/squidconf cache_dir ufs /var/spool/squid 100 16 256

数字100、16和256 有下列含义。

•为Squid缓存分配100 MB存储空间。如果你愿意,也可以加大所分配的空间。

•16个目录(每个目录里面含有256个子目录)将用于存储缓存文件。这个参数不应该改动。

我们可以通过日志文件/var/log/squid/accesslog来证实Squid缓存是否被启用。如果缓存成功命中,我们应该会看到标有“TCP_HIT”的项。

总而言之,Squid是一种功能强大的、基于行业标准的Web代理服务器,被全球各地的系统管理员们广泛使用。Squid提供了简易的访问控制功能,可用于管理来自局域网的流量。它既可以部署到大企业网络中,也可以部署到小公司网络中。

目前看不出什么问题。给你一些排查思路: 1 在服务器上执行netstat -an 查看3129端口是否已经LISTEN 2 在自己机器上用telnet访问以下服务器的3129端口,看看能否连上,能连上的话在里面输入一些HTTP头试试有没有反应。 3 看一下squid的日志文件

  安装步骤:

/configure --prefix=/usr/local/squid

make all

sudo make install(因为要拷贝到系统目录,需要root权限,所以sudo了,你也可以root登录执行,我是Ubuntu的系统,所以用sudo,有root权限就行)

  检查配置文件:

sudo vi /usr/local/squid/etc/squidconf

配置项1:

# Squid normally listens to port 3128

http_port 3128

  配置项2:

acl localnet src 19216800/16

http_access allow localnet

  配置项3:

# Uncomment and adjust the following to add a disk cache directory

cache_dir ufs /usr/local/squid/var/cache/squid 100 16 128

cache_mem 32 MB (这一条必须配置)

否则你就会遭遇报错: 2013/10/12 16:16:55 kid1| WARNING cache_mem is larger than total disk cache space!

  安装好了以后,系统中新建了一个用户squid,在组中一查,发现属于nobody组的:

cat /etc/passwd|grep squid

cat /etc/group|grep 65534

  安装squid的所在目录是:/usr/local/squid

我闲得没事干,直接改了所属用户为squid:nobody

sudo chown -Rf squid:nobody /usr/local/squid

  建立cache的时候,对下面目录需要nobody用户权限,这个是网上没有说的很清楚的地方,折腾了我半天:

sudo chown -Rf nobody /usr/local/squid/var/cache/

sudo chown -Rf nobody /usr/local/squid/var/logs/

  否则你会遭遇:

WARNING: Cannot write log file: /usr/local/squid/var/logs/cachelog

FATAL: Failed to make swap directory /usr/local/squid/var/cache/squid/00: (13) Permission denied

  初始化squidconf里配置的cache目录,就是建立了一堆的目录:

sudo /usr/local/squid/sbin/squid -z

  在前台启动squid,并输出启动过程

sudo /usr/local/squid/sbin/squid -N -d1

显示ready to server reques,则启动成功。可以键入ctrl+c,停止squid,并以后台运行的方式启动。

我没有在配置文件中配置DNS,而是在 /etc/resolvconf 中配置:

domain site

nameserver xxxx

  所以打印出来的日志中就这样的:

2013/10/12 16:42:13| Adding nameserver xxxx from /etc/resolvconf

  squid从这个配置文件中读取了dns配置来用。

  启动squid后台运行

sudo /usr/local/squid/sbin/squid -s

检查一下进程是否存在:ps -ef|grep squid

  通过squid客户端查看squid运行状态

/usr/local/squid/bin/squidclient -h 127001 -p 3128 mgr:info

  那台不能上网的机器配置如下:

export http_proxy=http://192168199235:3128/

可以把这句写到你的启动文件中,比如什么profile或者bashrc,或者/etc/profile等等。

  取消:unset http_proxy

  测试一下能不能上网了:

  能down下来文件就算大功告成啦。

安装环境

操作系统: CentOS release 52 (Final)

Kernel: 2618-92el5PAE

软件列表

squid-26STABLE22targz

软件存放位置

/data/software

安装过程

#/usr/sbin/groupadd squid -g 610

#/usr/sbin/useradd -u 610 -g squid squid

#mkdir /srv/scache

#chmod +w /var/vcache

#chown -R squidsquid /srv/scache

#mkdir /var/log/squid

#chmod +w /var/log/squid

#chown -R squidsquid /var/log/squid

#cd /data/software/pkg

#tar zxvf /squid-26STABLE22targz

#cd squid-26STABLE22

#/configure --prefix=/usr/local/squid

#make && make install

编辑Squid配置文件

#vi /usr/local/squid/etc/squidconf

-------------------------华丽的分割线,以下都是配置文件内容----------------------------

#定义acl项名称

acl all src 0000/0000

acl manager proto cache_object

acl localhost src 127001/255255255255

acl to_localhost dst 127000/8

acl SSL_ports port 443

acl Safe_ports port 80

acl safeprotocol protocol HTTP

acl test dstdomain testcom

acl CONNECT method CONNECT

#定义acl规则

http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access deny to_localhost

http_access allow safeprotocol Safe_ports test

http_access deny all

icp_access allow all

#squid监听端口

http_port 80 accel defaultsite=591513258 vhost

always_direct allow all

#后端服务器

cache_peer 1010108 parent 80 0 no-query originserver

hierarchy_stoplist cgi-bin

#内存cache大小

cache_mem 2048 MB

#内存cache中最大的object大小(超过这个值则不进入内存cache)

maximum_object_size_in_memory 8 KB

#内存cache的替换规则

memory_replacement_policy lru

#硬盘cache的替换规则

cache_replacement_policy lru

#磁盘cache目录(文件类型 cache目录路径 cache目录大小 二级目录个数 每个二级目录下的三级目录个数)

cache_dir ufs /srv/scache 40000 16 256

#磁盘cache中最小的object的大小(低于这个值则不缓存)

minimum_object_size 0 KB

#磁盘cache中最大的object的大小(超过这个值则不缓存)

maximum_object_size 2048 KB

cache_swap_low 90

cache_swap_high 95

#定义日志格式

logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh

#记录相关日志

access_log /var/log/squid/accesslog squid

cache_log /var/log/squid/cachelog

cache_store_log /var/log/squid/storelog

#日志rotate(24则后缀从0到23)

logfile_rotate 24

emulate_httpd_log on

#如果你的URL里面带有,这两行一定要注销掉

#acl QUERY urlpath_regex cgi-bin \

#cache deny QUERY

#配置自动更新(关于后面的三个值请参考Squid配置手册)

refresh_pattern -i \jpg$ 60 80% 1440

refresh_pattern -i \png$ 60 80% 1440

refresh_pattern -i \gif$ 60 80% 1440

quick_abort_min 16 KB

quick_abort_max 16 KB

quick_abort_pct 95

request_header_max_size 10 KB

reply_header_max_size 10 KB

acl apache rep_header Server ^Apache

broken_vary_encoding allow apache

#相关timeout设置

forward_timeout 4 minutes

connect_timeout 3 minutes

peer_connect_timeout 30 seconds

read_timeout 15 minutes

request_timeout 1 minute

persistent_request_timeout 3 minutes

half_closed_clients off

pconn_timeout 1 minute

#cache管理员邮箱

cache_mgr webmaster@testcom

cache_effective_user squid

cache_effective_group squid

#squid服务器的visible_hostname,此处指定的值显示在Squid响应的Header里面的X-Cache项中

visible_hostname squidserver

coredump_dir /var/log/squid/cache

------------------------华丽的分割线,以上都是配置文件内容-----------------------------

初始化squid缓存目录

#/usr/local/squid/sbin/squid -z

启动squid

#/usr/local/squid/sbin/squid -sD

配置完成以后,最重要最重要的一点,修改Squid服务器的hosts文件,将需要Cache的域名指向到后端的服务器IP上

相关命令

停止squid

/usr/local/squid/sbin/squid -k shutdown

启用新配置

/usr/local/squid/sbin/squid -k reconfig

通过crontab每小时截断/轮循日志

59 /usr/local/squid/sbin/squid -k rotate

查看squid运行状况

/usr/local/squid/bin/squidclient -p 80 mgr:info

/usr/local/squid/bin/squidclient -p 80 mgr:5min

查看squid内存使用情况

/usr/local/squid/bin/squidclient -p 80 mgr:mem

查看squid磁盘使用情况

/usr/local/squid/bin/squidclient -p 80 mgr:diskd

查看squid已缓存列表(小心使用,可能会导致crash)

/usr/local/squid/bin/squidclient -p 80 mgrbjects

强制更新某个url

/usr/local/squid/bin/squidclient -p 80 -m PURGE http://imgtestcom/h/ajpg

查看squid缓存到内存cache中并返回给访问用户的项

#cat /var/log/squid/accesslog | grep TCP_MEM_HIT

查看squid缓存到磁盘cache中并返回给访问用户的项

#cat /usr/local/squid/var/logs/accesslog | grep TCP_HIT

查看没被squid缓存住,直接从原始服务器获取并返回给访问用户的项

#cat /usr/local/squid/var/logs/accesslog | grep TCP_MISS

squid是所有服务里面最简单的我觉得

以RHEL7为例,它分成了正向代理和反向代理,正向代理里又分“标准正向代理”,“ACL访问控制”以及“透明正向代理”。下面是标准正向代理

163 正向代理

1631 标准正向代理

Squid服务程序软件包在正确安装并启动后默认就已经可以为用户提供标准正向代理模式服务了,而不需要单独再去修改配置文件或者其他操作,咱们可以立即在Windows7系统的客户端主机上面打开任意一款浏览器,然后点击Internet选项标签,如图16-4所示:

[root@linuxprobe ~]# systemctl restart squid

[root@linuxprobe ~]# systemctl enable squid

ln -s '/usr/lib/systemd/system/squidservice' '/etc/systemd/system/multi-usertargetwants/squidservice'

用户要想使用Squid服务程序提供的标准正向代理模式服务就必须在浏览器中填写服务器的IP地址以及端口号信息,因此咱们还需要依次点击连接标签后点击局域网设置选项,如图16-5与图16-6所示填写服务器信息后保存退出配置向导。

用户只需要在浏览器中简单的填写配置信息就可以开始享用Squid服务程序提供的代理服务了,此时作为一个网卡为仅主机模式(Hostonly)的虚拟机,开始也奇迹般的能够上网浏览了,这一切都是托代理服务器转发的功劳哦~

如此公开而没有密码验证的代理服务终归觉得不放心,万一有其他人也来“蹭网”咱们的代理服务怎么办呢?Squid服务程序默认的会占用3128、3401与4827等端口号,咱们可以将默认占用的端口号修改成其他值,这样应该能起到一定的保护作用吧~同学们都知道在Linux系统配置服务程序就是在修改该服务的配置文件,因此直接在/etc目录中找到和squid服务程序同名目录中的配置文件,把其中http_port参数后面原有3128修改为10000,这样即是将Squid服务程序的代理服务端口修改成了新值,当然最后不要忘记再重启下服务程序哦~:

[root@linuxprobe ~]# vim /etc/squid/squidconf

………………省略部分输出信息………………

45 #

46 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

47 #

48

49 # Example rule allowing access from your local networks

50 # Adapt localnet in the ACL section to list your (internal) IP networks

51 # from where browsing should be allowed

52 http_access allow localnet

53 http_access allow localhost

54

55 # And finally deny all other access to this proxy

56 http_access deny all

57

58 # Squid normally listens to port 3128

59 http_port 10000

60

http_port 10000

………………省略部分输出信息………………

[root@linuxprobe ~]# systemctl restart squid

[root@linuxprobe ~]# systemctl enable squid

ln -s '/usr/lib/systemd/system/squidservice' '/etc/systemd/system/multi-usertargetwants/squidservice'

同学们有没有突然觉得这一幕似曾相识?在前面的第十章1053小节咱们学习过基于端口号来部署httpd服务程序的虚拟主机功能,当时在编辑完配置文件后重启服务程序时被直接提示报错了,虽然现在重启服务程序并没有直接报错,但其实客户并不能使用代理服务呢,SElinux安全子系统认为Squid服务程序使用3128端口号是理所应当的,默认策略规则中也是允许的,但现在却在尝试使用新的10000端口号,这是原本并不属于Squid服务程序应该使用的系统资源,因此咱们需要手动把新的端口号添加到squid服务程序在SElinux域的允许列表中即可:

[root@linuxprobe ~]#  semanage port -l | grep -w -i squid_port_t

squid_port_t                   tcp      3128, 3401, 4827

squid_port_t                   udp      3401, 4827

[root@linuxprobe ~]# semanage port -a -t squid_port_t -p tcp 10000

[root@linuxprobe ~]# semanage port -l | grep -w -i squid_port_t

squid_port_t                   tcp      10000, 3128, 3401, 4827

squid_port_t                   udp      3401, 4827

更多的图文信息以及透明代理方式的实验你可以看下网页链接,讲的非常详细,相信能解决你的问题

在一般的网络规模中,在近客户端,使用一台性能较好的Cache代理服务器,就可以满足内部用户的需求,减缓出口线路的拥堵问题。但如果内部网络已扩张到相当庞杂,用户机器数量达到数万台,同一时间的URL请求可能达到上万个,这种情况下极有可能造成单台代理服务

在一般的网络规模中,在近客户端,使用一台性能较好的Cache代理服务器,就可以满足内部用户的需求,减缓出口线路的拥堵问题。但如果内部网络已扩张到相当庞杂,用户机器数量达到数万台,同一时间的URL请求可能达到上万个,这种情况下极有可能造成单台代理服务器无法及时处理,甚至瘫痪,代理服务器反而会成为新的瓶颈。为了有效解决此类情况,我们可以在内部网络中布置多台代理服务器,代理服务器之间构成Hierarchies(层次),协同工作,减缓负载,减轻线路压力。具体配置方法下面结合我校的实际情况,说明层次代理服务器的架设方法。图1图1是校园网的拓扑结构,内部网通过路由器,由两个出口线路分别接入CERNET和CHINANET,最终汇入Internet。大多数的高校现在都采用这种多出口的方法,因为CERNET虽然可以给予高校合法的IP地址,但它多采用出国流量计费或包月制,费用较高且带宽有限;而CHINANET、CNCNET等运营商的线路的包月费用相对较低,出口访问速度较快。所以一般情况下使用CERNET作入口访问及必要的出口访问(如访问教育资源),而使用CHINANET、CNCNET作大部分的出口访问。我校校园网在地理上分为多个区域,有图书馆及教学区、行政办公区、学生宿舍区等,我们只拿出这三个区域做为例子。在这三个区域中分别放置一台代理服务器,其域名分别为libCachelyaceducn 、admCachelyaceducn 、stuCachelyaceducn 。其中,因为图书馆购买的学术期刊论文数据库必须是合法IP(有的要求固定IP)才能访问查询,并且校园网也需要访问CERNET上的许多教育资源,所以把它的默认出口线路放到CERNET上,使用合法IP地址;其它两个区域的默认出口线路都放到CHINANET上,ISP通常不会给学校提供合法的IP,所以我们一般在这样的Cache上使用两块网卡,一块使用内网虚地址,另一块使用ISP提供的虚地址,这样就可以连接到ISP,再由其转发。Cache Server可以是在一台普通的服务器加上Cache软件构成,也有由专用的软硬件系统构成的商业Cache服务器(如CacheFlow)。我校的代理服务器使用Squid。Squid代理服务器使用Squidconf作为配置文件,单台代理服务器的应用配置——特别是ACL和http_access的配合使用方法,有很多参考资料,这里不再赘叙,我们只讲squidconf文件中和Cache层次有关的常用配置选项,其详细用法参看squid文档。下面列出三个区域Cache中的只有和层次有关的配置内容,其中结合ACL的配置方法多种多样,例如可以使用icp_access、 miss_access控制外部Cache的请求权限;有些配置选项的使用结果也是相似的。“#”号开头的为注释。(1) 图书馆及教学区Cache的配置http_port 3128icp_port 3130#定义其它两个区域的Cache和自己的关系Cache_peer admCachelyaceducn sibling 3128 3130Cache_peer stuCachelyaceducn sibling 3128 3130#设定只有非educn域的URL自己没有时才请求其它两个区域的Cache帮助Cache_peer_domain admCachelyaceducn !educnCache_peer_domain stuCachelyaceducn !educn#101000/16是校园网使用的内网虚地址acl LocalNetIPVIR src 101000/16#21044480/20是校园网使用的合法IP地址acl LocalNetIPTRUE src 21044480/20#lyaceducn是校园网的域acl LocalDomain srcdomain lyaceducnacl all src 0000/0000Cache_peer_access admCachelyaceducn allow LocalNetIPVIRCache_peer_access admCachelyaceducn allow LocalNetIPTRUECache_peer_access admCachelyaceducn allow srcdomainCache_peer_access stuCachelyaceducn allow LocalNetIPVIRCache_peer_access stuCachelyaceducn allow LocalNetIPTRUECache_peer_access stuCachelyaceducn allow srcdomainCache_peer_access admCachelyaceducn deny allCache_peer_access stuCachelyaceducn deny all#设定只为本校的Cache提供层次服务,以防被局域网外的Cache非法利用icp_access allow LocalNetIPVIRicp_access allow LocalNetIPTRUEicp_access allow srcdomainicp_access deny all(2)行政办公区Cache的配置(Cache_peer_access的访问控制列表同行政办公区)http_port 3128icp_port 3130Cache_peer libCachelyaceducn parent 3128 3130Cache_peer stuCachelyaceducn sibling 3128 3130#设定缓存中没有educn的object时才请求libCachelyaceducn协助抓取Cache_peer_domain libCachelyaceducn educnCache_peer_domain stuCachelyaceducn !educn(3)学生宿舍区Cache的配置内容大致同行政办公区,从略。外部网络上有一些免费的可用来组成层次的Cache,如图1所示,可以申请代理服务器D(CERNET上)和E(Internet上)作为您的parent 或sibling,在申请获得通过后就可以在本地Cache上设置peer关系得到object。层次代理服务器有效解决了局域网规模太大时多台代理服务器的协调工作问题,更加有效地节约带宽,优化网络中的信息流动,保障网络的正常健康运行。

你做的是透明代理还是传统的代理!如果是传统的代理,那么客户机浏览器的要设置代理:ip为squid内网ip,端口如果没改为3128!如果是透明代理,那么无需指定客户机浏览器无需指定代理!但是要能DNS解析,这是个前提,因为squid只代理80端口,iptables要指向本机的3128端口!具体为:iptables -t nat -I PREROUTING -s 你的内网Ip网段 -p tcp --dport 80 -i 内网网卡(如:eth0) -j REDIRECT --to-ports 3128 前提是客户机一定要能dns解析,你可以尝试在squid上搭建dns缓存服务器!设置forwarders 指向公网dns做解析!然后客户机的dns指向squid内网ip即可,当然named服务必须监听内网ip!一切的前提是你的代理能上网!我qq532168079,有问题加我!

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在CentOS或RHEL上搭建Squid透明Web代理系统

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情