🔗 变体 I:带 WCCPv2 的路由 DMZ
作者:Yuri Voinov
🔗 使用 ISR G2 路由器配置带 WCCPv2 的 Cisco IOS 15.5(3)M2
🔗 目录
此配置通过 WCCPv2 将 HTTP/HTTPS 流量(端口 80 和 443)传递给代理服务器进行处理。预计该服务器将包含 Squid 3.x/4.x 用于处理流量。
路由器运行 Cisco IOS Software 版本 15.5(3)M2,启用了 SECURITYK9 和 DATAK9 技术包,并具有两个物理接口 - 连接到 LAN 交换机的 GigabitEthernet0/0,以及连接到 DMZ 和代理的 GigabitEthernet0/1(IP 192.168.200.2)。在此示例中,代理的 IP 为 192.168.200.3。WCCPv2 配置在 2911 路由器上。

路由器同时具有路由器/交换机功能,因此我们可以使用 GRE/L2 重定向方法。
注意:请注意 - 您必须在 squid 的服务器上配置 NAT,并且您必须使用支持 OS 特定 NAT 的方式构建 squid。
注意:在使用 DMZ 中的托管交换机时,请确保代理服务器端口与启用 WCCP 的路由器端口位于同一 VLAN/具有相同的封装。否则,路由器无法与代理进行 WCCP 握手。
🔗 Cisco IOS 15.5(3)M2 路由器
!
ip cef
ip wccp web-cache redirect-list WCCP_ACCESS
ip wccp 70 redirect-list WCCP_ACCESS
no ipv6 cef
!
!
!
interface GigabitEthernet0/1
ip address 192.168.200.2 255.255.255.0
ip wccp web-cache redirect out
ip wccp 70 redirect out
!
!
ip route 0.0.0.0 0.0.0.0 192.168.200.1
!
ip access-list extended WCCP_ACCESS
remark ACL for HTTP/HTTPS
remark Squid proxies bypass WCCP
deny ip host 192.168.200.3 any
remark LAN clients proxy port 80/443
permit tcp 192.168.0.0 0.0.255.255 any eq www 443
remark all others bypass WCCP
deny ip any any
!
!
注意:ip wccp web-cache 只能重定向 HTTP(端口 80),因此要重定向 HTTPS,我们创建另一个动态 wccp-service 70(在 Cisco WCCP 文档中,此数字专用于 HTTPS。总的来说,数字范围是 1-254,它并不重要,但请记住在 squid 配置中指定它)。另外请记住,只有在需要 HTTPS 拦截时才需要激活 SECURITYK9/DATAK9 技术包。它们仅用于 HTTP 重定向。
另外请注意,当代理停止时 - 所有 HTTP/HTTPS 流量都会绕过它,并通过默认路由传递到下一跳(或最后的网关)。
🔗 Squid HTTP/HTTPS WCCPv2 配置
# WCCPv2 parameters
wccp2_router 192.168.200.2
wccp2_forwarding_method l2
wccp2_return_method l2
wccp2_rebuild_wait off
wccp2_service standard 0
wccp2_service dynamic 70
wccp2_service_info 70 protocol=tcp flags=dst_ip_hash,src_ip_alt_hash,src_port_alt_hash priority=231 ports=443
注意:Squid 必须支持 WCCPv2 编译。
注意:Squid 服务器已配置默认路由器指向 192.168.200.1(2901 上的 Ge0/1)- 最后的网关。
注意:此示例使用 L2 重定向(适用于没有原生 GRE 支持的操作系统)。请注意,wccp2_rebuild_wait 在代理准备好处理请求时向路由器发送“我在这里”消息,而缓存重建尚未完成。此外,路由器和代理都使用 2048/udp 端口与 WCCP 通信。因此,此端口必须在防火墙中打开。最重要的一点是:当使用 l2 重定向时,启用 WCCP 的路由器端口和代理都必须共享同一个 L2 网络段。
注意:如果选择 GRE 来与路由器和代理通信,请记住:您必须在代理服务器上配置 GRE!
🔗 安全
为避免拒绝服务攻击,您可以强制代理(或多个代理)和路由器之间的身份验证。为此,您需要在路由器上使用密码设置 WCCP 服务
ip wccp web-cache redirect-list WCCP_ACCESS password 0 foo123
ip wccp 70 redirect-list WCCP_ACCESS password 0 bar456
如果您的路由器启用了服务密码加密(为此,您需要在路由器全局配置中应用以下命令)
service password-encryption
定义路由器上的 WCCP 服务后,密码将被加密
ip wccp web-cache redirect-list WCCP_ACCESS password 7 0600002E1D1C5A
ip wccp 70 redirect-list WCCP_ACCESS password 7 121B0405465E5A
然后更改 squid.conf 中的 WCCP 服务定义
# MD5 service authentication can be enabled by adding
# "password=<password>" to the end of this service declaration.
wccp2_service standard 0 password=foo123
wccp2_service dynamic 70 password=bar456
然后重启 squid 并检查重定向是否正常工作。
注意:请注意,您的 squid.conf 中可能包含**任何**明文密码!像保护代理服务器免受未经授权的访问一样保护它!
🔗 QUIC/SPDY 协议阻止
注意:在大多数现代安装中,您可能希望(并且必须)阻止备用协议:SPDY 和/或 QUIC。为此,请使用**此说明**。
🔗 结论
此配置示例在 Cisco 2911 和 Squid 3.x/4.x 上使用。如您所见,您可以配置您的环境以拦截不同的端口。
注意:与 PBR(路由映射)相比,**性能**更好,WCCP 在 Cisco 设备上使用的 CPU 更少。因此,WCCP 比路由映射更受青睐。另请注意,l2 重定向具有硬件支持,开销比 gre 小,而 gre 仅具有软件处理(在 CPU 上)。
注意:此配置已在 Cisco IOS 版本 15.4(1)T, 15.4(3)M, 15.5(1)T, 15.5(2)T1, 15.5(3)M, 15.5(3)M2, 15.6(2)T, 15.6(2)T1, 15.6(3)M 上进行测试并完全运行。
![]()
![]()
🔗 变体 II:将交换机 L3 作为 WCCPv2 路由器
- 作者:Yuri Voinov 和 Svyatoslav Voinov
🔗 使用聚合交换机配置带 WCCPv2 的 Cisco IOS 15.0(2)SE9
🔗 概述
此配置从交换机 L3 通过 WCCPv2 将 HTTP/HTTPS 流量(端口 80 和 443)传递给代理服务器进行处理。预计该服务器将包含 Squid 3.x/4.x 用于处理流量。
在此示例中,我们使用 Cisco 3750 聚合交换机以 L3 模式作为 WCCPv2 路由器。该交换机运行 Cisco IOS Software,版本为 15.0(2)SE9,启用了 IPSERVICEK9 技术包,并具有 1 Gbps 的物理接口。在此示例中,代理的 IP 地址为 192.168.200.10(2 Gbps 聚合,aggr1)和 192.168.200.11(4 Gbps 聚合,aggr2)。WCCPv2 使用 L2 重定向,分配方法为 **mask**。交换机仅支持 WCCP “IN” 重定向。

🔗 Cisco IOS 15.0(2)SE9 交换机
ip routing
ip wccp source-interface Vlan201
ip wccp web-cache redirect-list WCCP_ACCESS
ip wccp 70 redirect-list WCCP_ACCESS
interface GigabitEthernet1/0/15
no switchport
ip address 192.168.200.4 255.255.255.0
interface Vlan201
ip address 192.168.201.1 255.255.255.0
ip wccp web-cache redirect in
ip wccp 70 redirect in
ip route 0.0.0.0 0.0.0.0 192.168.200.1
ip access-list extended WCCP_ACCESS
remark ACL for HTTP/HTTPS
remark Squid proxies bypass WCCP
deny ip host 192.168.201.10 any
deny ip host 192.168.201.11 any
remark LAN clients proxy port 80/443
permit tcp 192.168.0.0 0.0.255.255 any eq www 443
remark all others bypass WCCP
deny ip any any
注意:“WCCP 仅在支持 PBR 的 SDM 模板上受支持:access, routing, and dual IPv4/v6 routing。”(来自 Cisco 文档)
🔗 Squid HTTP/HTTPS WCCPv2 配置
# -------------------------------------
# WCCPv2 parameters
# -------------------------------------
wccp2_router 192.168.201.1
wccp2_forwarding_method l2
wccp2_return_method l2
wccp2_rebuild_wait off
wccp2_service standard 0
wccp2_service dynamic 70
wccp2_service_info 70 protocol=tcp flags=dst_ip_hash,src_ip_alt_hash,src_port_alt_hash priority=231 ports=443
# Cisco Routers uses hash (default), switches - mask
wccp2_assignment_method mask
balance_on_multiple_ip on
注意:一如既往,预计您的 Squid 已配置 HTTP 和 HTTPS 端口。
🔗 安全
注意:在使用身份验证的 WCCP 时,如前一个示例所示,请注意,Cisco 设备有密码长度限制(路由器和大多数交换机不超过 8 个字符)和密码强度限制 - 您只能使用字母和数字。另外,在 3750 等交换机上发现了一些旧 iOS 的附加密码长度限制,在这种情况下,您将被迫将密码长度缩短到 6-7 个字符。
🔗 结论
此配置示例在 Cisco 3750 聚合交换机和 Squid 3.x/4.x 上使用。如您所见,您可以配置您的环境以拦截不同的端口。
注意:初始设置是在 WS-C3750G-16TD-S 交换机上使用 iOS 12.2(55)SE10 IPSERVICEK9 和 Squid 3.5.19 进行创建、测试和完全运行的。
注意:此配置已在适当的交换机(请参阅下一个注释)的 Cisco IOS 版本 15.0(2)SE9 上进行测试并完全运行。
**务必非常小心**:Cisco 3750 系列有许多子型号,并非所有型号都兼容 iOS 15.x。部分 C3750G-16TD-S 只能运行 iOS 12.2(55)SE 系列。选择 iOS 版本时,请先阅读 Cisco Release Notes。摘录自:“并非所有 Catalyst 3750 和 3560 交换机都能运行此版本。Cisco IOS Release 12.2(58)SE1 及更高版本不支持以下型号:WS-C3560-24TS, WS-C3560-24PS. WS-C3560-48PS, WS-C3560-48TS, WS-C3750-24PS, WS-C3750-24TS, WS-C3750-48PS, WS-C3750-48TS, WS-3750G-24T, WS-C3750G-12S, WS-C3750G-24TS, WS-C3750G-16TD。对于这些型号的持续维护重建,请使用 Cisco IOS Release 12.2(55)SE 及更高版本(SE1、SE2 等)。”另请注意,此系列交换机从 12.2(37)SE iOS 开始支持 WCCP。
注意:与变体 I 不同,交换机的硬件加速重定向不会显示在 **sho ip wccp** 命令输出中。通过 Squid 的 access.log 检查重定向是否正常工作。
🔗 变体 III:带 WCCPv2 的交换式 ISR G2 路由器
- 作者:Yuri Voinov 和 Svyatoslav Voinov
🔗 使用带汇聚交换板的交换式 ISR G2 路由器配置带 WCCPv2 的 Cisco IOS 15.5(3)M2
🔗 概述
此配置通过 WCCPv2 将 HTTP/HTTPS 流量(端口 80 和 443)传递给代理服务器进行处理。预计该服务器将包含 Squid 3.x/4.x 用于处理流量。
路由器运行 Cisco IOS Software 版本 15.5(3)M2,启用了 SECURITYK9 和 DATAK9 技术包。路由器包含汇聚交换板,带有四个 100 Mbps 或 1 Gbps 端口。WCCPv2 配置在 2911 路由器上。

🔗 Cisco IOS 15.5(3)M2 路由器
!
ip dhcp pool 100
network 192.168.100.0 255.255.255.0
default-router 192.168.100.1
dns-server 192.168.100.1
lease 30
!
ip dhcp pool 101
network 192.168.101.0 255.255.255.0
default-router 192.168.101.1
dns-server 192.168.101.1
lease 30
!
!
ip cef
ip wccp source-interface Vlan201
no ipv6 cef
!
!
interface FastEthernet0/0/0
switchport access vlan 201
no ip address
!
interface FastEthernet0/0/1
switchport access vlan 201
no ip address
!
interface FastEthernet0/0/2
switchport mode trunk
no ip address
!
interface FastEthernet0/0/3
switchport access vlan 100
no ip address
!
!
interface Vlan100
ip address 192.168.100.1 255.255.255.0
ip wccp web-cache redirect in
ip wccp 70 redirect in
ip nat inside
ip virtual-reassembly in
!
interface Vlan101
ip address 192.168.101.1 255.255.255.0
ip wccp web-cache redirect in
ip wccp 70 redirect in
ip nat inside
ip virtual-reassembly in
!
interface Vlan201
ip address 192.168.201.1 255.255.255.0
ip wccp web-cache redirect in
ip wccp 70 redirect in
ip nat inside
ip virtual-reassembly in
!
ip nat inside source list NAT interface GigabitEthernet0/1 overload
ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/1 EXTERNAL_ISP_IP
!
ip access-list extended WCCP_ACCESS
remark ACL for HTTP/HTTPS
remark Squid proxies bypass WCCP
deny ip host 192.168.201.10 any
remark LAN clients proxy port 80/443
permit tcp 192.168.0.0 0.0.255.255 any eq www 443
!
注意:每当客户端和代理通过交换机模块连接时,路由器会自行使用 **hash** 分配方法。
🔗 Squid HTTP/HTTPS WCCPv2 配置
# -------------------------------------
# WCCPv2 parameters
# -------------------------------------
wccp2_router 192.168.201.1
wccp2_forwarding_method l2
wccp2_return_method l2
wccp2_rebuild_wait off
wccp2_service standard 0
wccp2_service dynamic 70
wccp2_service_info 70 protocol=tcp flags=dst_ip_hash,src_ip_alt_hash,src_port_alt_hash priority=231 ports=443
# Cisco Routers uses hash (default), switches - mask
wccp2_assignment_method hash
🔗 安全
注意:您可以像第一个示例一样使用身份验证的 WCCP。
🔗 结论
此配置示例使用交换式 ISR-G2 2911 路由器作为核心基础设施设备。您可以使用下游基础设施的接入交换机定义任意数量的客户端 VLAN,并且:出于安全原因,需要在端口 Gi0/1 上配置封闭的防火墙和 NAT。
🔗 变体 IV:带 WCCPv2 的 VRF
- 作者:Yuri Voinov 和 Svyatoslav Voinov
🔗 概述
此配置通过 VRF 启用的路由器,使用 WCCPv2 将 HTTP/HTTPS 流量(端口 80 和 443)传递给代理服务器进行处理。预计该服务器将包含 Squid 3.x/4.x 用于处理流量。您可以拥有多个 VRF 路由器(在 MPLS 路由器上)以及任意数量的代理服务器,例如在 ISP 中。
⚠️ Disclaimer: Any example presented here is provided "as-is" with no support
or guarantee of suitability. If you have any further questions about
these examples please email the squid-users mailing list.
类别: ConfigExample
导航:站点搜索、站点页面、分类、🔼 向上