备份需要很长时间以致防火墙关闭连接

jim*_*gee 4 oracle linux tcpip backupexec cisco-asa

这里有一些系统的混搭,所以请耐心等待。从本质上讲,我在尝试备份远程 Linux 服务器时在使用适用于 Oracle 的 Backup Exec 代理时遇到了一些问题。BE 代理似乎使用 RMAN 来备份数据库

备份服务器在一个 VLAN 上,目标服务器在另一个 VLAN 上,Cisco ASA 防火墙提供了它们之间的唯一链接。这是设计使然,因为备份服务器要支持多个客户端,并且每个客户端都必须位于自己的 VLAN 上,以防止它们相互访问。我已将推荐的端口添加到防火墙,以至少允许代理与媒体服务器通信。

备份开始得很好(实际上,同一台服务器上较小的 Oracle 数据库可以毫无问题地完成),但显然需要几个小时才能完成的 200GB 数据库无法完成。

我认为该问题与http://www.symantec.com/business/support/index?page=content&id=TECH59632相关,它表示在备份开始时在端口 5633 上建立了一个 CORBA 会话并且之前使用过每个 RMAN 操作,但是在传输数据时,CORBA 会话的套接字没有收到任何数据包。由于防火墙上的连接超时为 60 分钟,因此 CORBA 会话被丢弃,并且当 RMAN 代理尝试执行其下一个操作时,整个过程会爆炸。赛门铁克说这个问题在早期版本的 Backup Exec 中得到了解决,但没有详细说明任何额外的设置来强制执行它。

将防火墙上的连接超时设置为足以覆盖备份窗口的时间(例如 12 小时)似乎是错误的做法,因为这是一个范围内的更改,这也会影响(例如) 对另一个客户端的 Web 服务器的 Web 请求。

将 Linux 服务器移动到与备份服务器相同的 LAN 中是不可能的。

我不是 Linux 大师,但我大致了解我的方法。到目前为止,我已经尝试开始使用 libkeepalive ( http://libkeepalive.sourceforge.net/ ) 来强制使用 KEEPALIVE TCP 标志创建 beremote 进程的套接字,但快速netstat -top表明它没有被占用。要么我错误地使用了 libkeepalive,要么它不适用于 beremote 二进制文件

我想我正在寻找适合我所处环境的选项。我想我正在寻找以下一项或多项:

  • 一种配置 BE 代理以保持连接活动的方法?
  • 一种将keepalive 标志注入现有TCP 连接的方法(例如,通过cronjob)?
  • 一种告诉 Cisco 设备增加特定源/目标(可能是策略映射)的连接超时的方法?

欢迎任何/所有(其他)想法......

J。


回复:@Weaver 的评论

根据要求class-map,policy-mapservice-map条目...

class-map CLS_INSPECTION_TRAFFIC
 match default-inspection-traffic
class-map CLS_ALL_TRAFFIC
 match any
class-map CLS_BACKUPEXEC_CORBA
 description Oracle/DB2 CORBA port for BackupExec traffic
 match port tcp eq 5633
!
!
policy-map type inspect dns PMAP_DNS_INSPECT_SETTINGS
 parameters
  message-length maximum client auto
  message-length maximum 1280
policy-map PMAP_GLOBAL_SERVICE
 class CLS_INSPECTION_TRAFFIC
  inspect dns PMAP_DNS_INSPECT_SETTINGS 
  inspect ftp 
  inspect h323 h225 
  inspect h323 ras 
  inspect rsh 
  inspect rtsp 
  inspect esmtp 
  inspect sqlnet 
  inspect skinny  
  inspect sunrpc 
  inspect xdmcp 
  inspect sip  
  inspect netbios 
  inspect tftp 
  inspect ipsec-pass-thru 
  inspect icmp 
  inspect snmp 
 class CLS_BACKUPEXEC_CORBA
  set connection timeout idle 1:00:00 dcd 
 class CLS_ALL_TRAFFIC
  set connection decrement-ttl
!
Run Code Online (Sandbox Code Playgroud)

Wea*_*ver 5

ASA 超时/计时器的背景:

全局超时连接是 TCP 虚拟电路(会话)空闲计时器,默认为 60 分钟。全局超时 udp用于 UDP 漏洞,默认为 2 分钟。全局超时 xlate用于清除conn 超时仍然存在的翻译。 conn (TCP) 超时优先于 xlate 超时。下一段进一步解释了 conn 和 xlate 定时器之间的关系。

如果通过 TCP 拆解成功拆除了 conn,则 conn 和 xlate 会随之而去(如果永远不会删除动态 xlate、静态 NAT 和静态 PAT xlate)。如果 conn 超时,则考虑 xlate 计时器。如果 xlate 首先超时(您将其设置得很低),它不会断开连接,直到 conn 超时。

ASA 有多种方法来处理不同的超时。Conn 是一种可以基于类映射覆盖全局设置的方法——如果可能的话,这应该优先于增加全局设置。

ASA 拥有的另一个有趣的功能是死连接检测——DCD。 DCD 允许您将 [全局] 连接超时保持在 60 分钟(默认值),当达到 60 分钟时——ASA 中间人将空数据 ACK 欺骗到每个端点作为另一个端点。空数据用于防止序列号递增。如果双方都响应,连接的空闲计时器将重置为 0 并重新开始。如果任何一方在给定时间段内尝试设定次数(可配置)后都没有响应,则 conn 将被删除,并且 xlate 计时器获得如上所述的相关性。

我建议配置类映射并将其添加到启用 DCD 的策略中。您可以使用 ACL 或端口(也可以使用其他端口)。如果您确定 TCP/5633 是问题所在,则使用该端口是快速、简单的,并且可以很好地工作。

我使用了下面的 global_policy,但可以根据需要随意调整。

class-map BE-CORBA_class
 description Backup Exec CORBA Traffic Class
 match port tcp eq 5633

policy-map global_policy
 class BE-CORBA_class
  -->::Choose one below::<--
  set connection timeout idle 1:00:00 dcd --> for 8.2(2) and up
  set connection timeout tcp 1:00:00 dcd --> for prior to 8.2(2)

service-policy global_policy global
Run Code Online (Sandbox Code Playgroud)

@评论

根据参考指南——“对于每个特征类型,一个数据包只能匹配策略映射中的一个类映射。”

关键词是粗体。穿过接口的数据包可以匹配策略映射内的多个类,但前提是这些类使用不同的“功能”。如果您在上述链接中向上滚动一点,您将看到列出的各种功能。整个页面都是强积金花絮的金矿。

正如您提到的,您match any定义了一个类映射,然后在策略映射中将其作为类引用——如果您在该策略映射类中执行任何其他 TCP 和 UDP 连接限制和超时更改,则后续的类映射匹配流量——如果在策略映射中设置——将不会对该数据包执行 TCP 和 UDP 连接限制和超时更改。

如果您发布所有 ACL、class-map's、policy-map's 和service-policy's,我们可以确定。