会话设置因会话哈希冲突错误而失败

会话设置因会话哈希冲突错误而失败

65736
Created On 09/25/18 19:22 PM - Last Modified 03/26/21 16:47 PM


Symptom


  • 入站连接有时会失败
  • 配置 firewall 了 IP NAT policy 用于出站流量的动态和端口源
  • 配置policy为用于入站流量的 firewall 静 NAT 态目的地 

 



Environment


  • PAN-OS
  • NAT


Cause


在 Palo Alto 网络上 firewall ,会话由两个单向流定义,每个流均由 6 个密钥唯一识别:源地址、目的地地址、源端口、目的地端口、协议和安全区

A firewall 。 当这种情况发生时, firewall 将丢弃传入的包并增量称为session_hash_insert_duplicate的全球计数器。

在接下来的两个图表中,您可以看到此会话与两个呼叫的碰撞行为 SIP 。 每个图表都包括一部本地电话 firewall 和一部远程电话。此外,我们还列举了客户端服务器流的网络腿以及 IP UDP 每个数据包的地址和端口信息。

70539-1. 1. png
 
  1. 本地电话 (192.168.1.2) 拨打 SIP 源和目的地 UDP 端口为 5060 的远程电话 (10.10.10.10)。
  2. 出站流量匹配源 NAT policy firewall ,将源转换 IP 为 10.10.10.1,源端口转换为 56611。 firewall然后创建一个具有两个单向流的会话。在这里,我们可以看到 SIP 第一届会议创建的会话详细信息 firewall 。
    > show session id 27954
    
    Session 27954
    
    c2s flow:
    source: 192.168.1.2 [l3-trust]
    dst: 10.10.10.10
    proto: 17
    sport: 5060 dport: 5060
    state: ACTIVE type: FLOW
    src user: unknown
    dst user: unknown
    
    s2c flow:
    source: 10.10.10.10 [l3-untrust]
    dst: 10.10.10.1
    proto: 17
    sport: 5060 dport: 56611
    state: ACTIVE type: FLOW
    src user: unknown
    dst user: unknown
  3. A 第二个连接是由远程电话尝试后不久。 此连接用于 firewall IP 10.10.10.1 的地址。 firewall其入站目的地 NAT policy 配置为内部电话地址 IP 192.168.1.2。这个电话从来没有建立, 但为什么?

70539-2. 1. png


运行筛选的数据包捕获后,我们看到 firewall SIP INVITE 正在从 10.10.10.10 丢弃数据包。
全球计数器表示,掉落发生在会话创建过程中,并且是由会话哈希碰撞引起的。
> show counter global filter delta yes packet-filter yes


Global counters:
Elapsed time since last sampling: 9.170 seconds

name value rate severity category aspect description
--------------------------------------------------------------------------------
session_allocated 1 0 info session resource Sessions allocated
session_freed 1 0 info session resource Sessions freed
session_install_error 1 0 warn session pktproc Sessions installation error
session_install_error_s2c 1 0 warn session pktproc Sessions installation error s2c
session_hash_insert_duplicate 1 0 warn session pktproc Session setup: hash insert failure due to duplicate entry


将 firewall 10.10.10.10 的呼叫与入站目的地匹配 NAT policy ,并将目的地 IP 地址从 10.10.10.1 翻译为 192.168.1.2。 当 firewall 尝试创建会话时,它会检查会话哈希是否与现有的 c2 或 s2c 流匹配。

如果我们比较第一个会话的 c2s 流和失败会话的预期 s2c 流,我们有以下几个:
c2s流:
来源:192.168.1.2[l3-信任
]dst:10.10.10.10
原:17
运动:5060 dport:5060
状态: ACTIVE 类型:srcFLOW
用户:未知
dst用户:未知
s2c流量:
来源:192.168.1.2[l3-信任
]dst:10.10.10.10
原:17
运动:5060 dport:5060
状态: ACTIVE 类型:srcFLOW
用户:未知
dst用户:未知

请注意, 这两个流是相同的。 如果 firewall 创建了第二个会话,则无法识别用于匹配数据包的流。firewall由于这一冲突,该会议不会创建第二届会议。
 


Resolution


此行为可以以独特的方式表现出来, 具体取决于实现。 对于此场景,用户可以 NAT 重新配置其源从动态 IP 和端口到 静态 NAT。 这将允许第二个调用匹配初始 s2c 流,而不是创建一个新的会话由 firewall 。

全球柜台看到session_hash_insert_duplicate时,请记住 NAT 政策如何影响与现有流量相匹配的新会话。



Actions
  • Print
  • Copy Link

    https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClWrCAK&lang=zh_CN&refURL=http%3A%2F%2Fknowledgebase.paloaltonetworks.com%2FKCSArticleDetail

Choose Language