数据包三层处理流程
StoneOS的数据包三层处理流程如下图所示(Deny Session功能为关闭状态):

- 识别数据包的逻辑入接口,可能是一般无标签接口,也可能是子接口。从而确定数据包的源安全域。
- StoneOS对数据包进行合法性检查。如果源安全域配置了攻击防护功能,系统会在这一步同时进行攻击防护功能检查。
- 会话查询。如果该数据包属于某个已建立会话,则跳过4到10,直接进行第11步。
- 目的NAT(DNAT)操作。如果能够查找到相匹配的DNAT规则,则为包做DNAT标记。因为路由查询需要DNAT转换的IP地址,所以先进行DNAT操作。
- 路由查询。StoneOS的路由查询顺序从前到后依次为:策略路由(PBR)
源接口路由(SIBR)
源路由(SBR)
目的路由(DBR)
ISP路由。此时,系统得到了数据包的逻辑出接口和目的安全域。
- 源NAT(SNAT)操作。如果能够查找到相匹配的SNAT规则,则为包做SNAT标记。
- 下一跳VR查询。如果下一跳为VR,则继续查看指定的下一跳VR是否超出最大VR数限制(当前版本系统仅允许数据包最多通过3个VR),如果超过则丢弃数据包,如果未超过,返回4;如果下一跳不是VR,则继续进行下一步策略查询。
- 策略查询。系统根据数据包的源安全域、目的安全域、源IP地址和端口号、目的IP地址和端口号以及协议,查找策略规则。如果找不到匹配的策略规则,则丢弃数据包;如果找到匹配的策略规则,则根据规则指定的行为进行处理,分别是:
- 允许(Permit):允许数据包通过。
- 拒绝(Deny):拒绝数据包通过。
- 隧道(Tunnel):将数据包转发到指定的隧道。
- 是否来自隧道(Fromtunnel):检查数据包是否来自指定的隧道,如果是,则允许通过,如果不是,则丢弃。
- Web认证(WebAuth):对符合条件的流量进行Web认证。
- 第一次应用类型识别。系统根据策略规则中配置的端口号和服务,尝试识别应用类型。
- 会话建立。
- 如果需要,进行第二次应用类型识别。根据数据包的内容和流量行为再次对应用类型进行精确识别。
- 应用层行为控制。根据确定的应用类型,系统将在此执行配置的Profile组和ALG功能。
- 根据会话中记录的信息,例如NAT标记等,执行相应的处理操作,并且将数据包转发到出接口。
提示:关于Deny Session功能的详细说明,请参阅《Hillstone山石网科多核安全网关使用手册》。