如何在 Linux 中使用 Squid 缓存和 Cisco 路由器控制 Web 流量如何在 Linux 中使用 Squid 缓存和 Cisco 路由器控制 Web 流量如何在 Linux 中使用 Squid 缓存和 Cisco 路由器控制 Web 流量如何在 Linux 中使用 Squid 缓存和 Cisco 路由器控制 Web 流量
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Linux 中使用 Squid 缓存和 Cisco 路由器控制 Web 流量

发表 admin at 2025年2月28日
类别
  • 未分类
标签

网络中的一项重要任务是控制和管理员工的上网流量,有很多解决方案可以处理这个问题,最好的解决方案之一是在 Linux 机器上使用鱿鱼缓存。 Squid 可以检查、限制和缓存从一个网络到另一个网络的网络流量,例如从 LAN 到 Internet。

有几种方法可以将客户端的 Web 请求重定向到 Squid 机器,在本文中,我们将向您展示如何使用 WCCP 协议将 Web 流量从 CISCO 路由器重定向到 Squid 缓存机器。

下图是一个基本场景的示例。

正如你在上图中看到的,所有客户端的网络流量首先进入Cisco路由器(这是他们的默认网关),然后路由器默默地将数据包重定向到squid机器,现在squid可以发挥它的作用,主要作用是缓存网页内容,根据域、时间间隔、IP 地址、文件大小等限制访问。

我们分两个主要步骤回顾这个场景的配置,首先我们应该安装和配置squid和Linux,然后配置路由器以使用WCCP协议将网络流量数据包重定向到squid。

测试环境

在这种情况下,我使用CENTOS 6.5作为我的LINUX服务器,使用Cisco 2691作为我的路由器系统。

Operating System: CENTOS 6.5
Application: Squid
Router: Cisco 2691

第1步:安装Squid缓存

Squid 在 CENTOS 的默认存储库中可用,我们首先使用可爱的 yum 命令安装它,然后启动它们的服务,最后设置自动启动鱿鱼服务。

yum -y install squid
service squid start
chkconfig squid on

第2步:准备Squid缓存

现在我们必须改变centos操作系统的一些默认行为,我们需要启用数据包转发并禁用反向路径过滤器(RPF),我们启用数据包转发让centos充当透明转发器(就像一个透明转发器) 路由器)。

让我更详细地解释一下,当流量进入 centos 时,它有源地址和目标地址,例如,当客户端在他/她的浏览器上输入 www.example.com 时,会生成一个 http 请求数据包,并且它会生成一个 http 请求数据包。具有客户端计算机的源 IP 地址(例如 192.168.1.20)和 example.com 服务器的目标 IP 地址(例如 2.2.2.2)。

因此,当centos收到数据包时,它会检测为错误数据包,因为centos IP地址不是数据包的目标地址,出于安全原因,centos会丢弃该数据包,但我们希望squid以透明模式运行。我们通过启用数据包转发功能将这种情况告诉centos。

接下来我们应该禁用反向路径过滤,让centos接受squid机器无法访问的数据包或没有squid机器同一子网ip地址的数据包。

nano /etc/sysctl.conf
net.ipv4.ip_forward = 1 #set to 1 for enable the packet forwarding feature
net.ipv4.conf.default.rp_filter = 0 # set to 0 for disable the reverse path filter behavior

接下来我们需要在CENTOS机器上创建一个GRE接口,目的是什么?让我解释一下,WCCP协议通过GRE隧道工作,这意味着路由器和Squid之间的语言是GRE,所以centos需要有一个GRE接口来进行解封装 GRE 数据包。

我们应该在“/etc/sysconfig/network-script/ifcfg-gre0”路径中创建GRE接口的配置文件。

在ifcfg-gre0配置文件中输入以下代码。

DEVICE=gre0
BOOTPROTO=static
IPADDR=10.0.0.2         #unused ip address in your network
NETMASK=255.255.255.252
ONBOOT=yes
IPV6INIT=no

创建 GRE 接口后,我们需要重新启动网络服务。

service network restart

第三步:配置Squid缓存

我们需要告诉squid接受来自路由器的WCCP数据包。在/etc/squid/squid.conf文件中输入以下代码。

http_port 3128 intercept                 # Define SQUID listening port
wccp2_router 192.168.1.254          #ip address of the router
wccp2_forwarding_method gre
wccp2_return_method gre
wccp2_service standard 0

保存配置文件并重新启动squid服务。

service squid restart

Squid 监听 3128 端口的数据包,但我们数据包的目标端口号是 80,因此将目标端口 80 更改为 3128<,我们需要在CENTOS集成防火墙(名为iptable)上创建NAT规则。

iptables -t nat -A PREROUTING -i gre0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -j MASQUERADE

第 4 步:思科路由器配置

首先我们应该在思科路由器上启用WCCP。

R1(config)# ip wccp version 2
Then we must use an ACL for introducing SQUID cache machine to router
R1(config)# ip access-list standard SQUID-MACHINE
R1(config-std-nacl)# permit host 192.168.1.10

接下来,我们为两个不同的目的定义另一个访问列表,首先,我们应该排除通过 WCCP 协议重定向的 SQUID 流量(如果不是,我们就会陷入无限循环!!),其次我们定义我们希望哪些LAN流量通过WCCP和SQUID。

R1(config)#ip access-list LAN-TRAFFICS
R1(config-ext-nacl)#deny ip host 192.168.1.10 any                            #Prevent SQUID to get in loop
R1(config-ext-nacl)#permit tcp 192.168.1.0 0.0.0.255 any equal www           #define LAN Traffics

创建访问列表后,我们必须在路由器上配置 WCCP 协议。

R1(config)# ip wccp web-cache redirect-list LAN-TRAFFIC group-list SQUID-MACHINE

一切都准备好了最后一步,我们必须告诉路由器它必须使用其 WCCP 配置在哪个/哪些接口中重定向流量。

R1(config)#interface fastEthernet 0/0
R1((config-if)# ip wccp web-cache redirect in

概括

现在是时候将所有命令和文本总结为几行以便更好地理解,根据场景,我们将员工上网数据包(在 TCP 端口 80 上)从 ROUTER(即默认网关)重定向客户端)使用 WCCP 协议发送到鱿鱼缓存机。

所有这些过程都是悄然发生的,客户端无需进行任何额外配置。因此我们可以对 LAN 中的 Web 流量进行控制和设置策略。例如,我们可以在有限的时间内获得网络冲浪访问权限、限制最大下载大小、定义自定义黑名单和白名单、生成互联网活动使用情况的完整报告等。

在这种情况下,有趣的事实之一是,当鱿鱼机器出现故障时,路由器会检测到此问题并停止将数据包重定向到它,这样您就可以享受网络中的零停机时间。

如果您对本文有任何疑问,请通过下面的评论框留言回复。

©2015-2025 Norria support@norria.com