SQLNET ALG
Oracle SQL Server 使用 SQLNET 协议从客户端执行 SQL 命令,包括负载平衡和应用程序特定的服务。对于有状态防火墙和NAT服务,您必须为 TCP 端口 1521 配置 SQLNET ALG。ALG 将监控控制数据包,为数据流量动态开放流量,并执行NAT地址和端口重写。
了解 SQLNET ALG
SQLNET 应用层网关 (ALG) 处理透明网络底层网络 (TNS) 用于 IP 地址和端口信息的重定向数据包。SQLNET ALG 对 TNS 重定向数据包的有效负载执行 网络地址转换 (NAT),为从客户端到服务器的新连接打开一个针孔,以及向位于 瞻博网络 设备两侧的客户端和服务器之间传输数据。
SQLNET ALG 支持以下类型的数据传输模式:
重定向模式 — 连接重定向类型
交错模式 — 连接接受类型
负载平衡 — 连接-重定向-连接-重定向类型
SQLNET 允许应用程序与 Oracle 数据库之间或多个 Oracle 数据库之间远程访问远程数据。SQLNET 主要建立并维护客户端应用程序与 Oracle 数据库服务器之间的连接。SQLNET 具有多个通信层,使客户端和数据库服务器能够共享、修改和操控数据。
Oracle SQL 服务器使用 SQLNET 协议从客户端执行 SQL 命令,包括负载平衡和应用程序特定的服务。SQLNET 协议将 TNS 用作其网络架构,并且所有 SQLNET 流量均封装为 TNS 数据包格式。
SQLNET ALG 可监控控制数据包,打开数据流量的针孔,并执行NAT重写。为 TCP 端口 1521 NAT SQLNET ALG 需要支持状态防火墙和多服务。
示例:配置 SQLNET ALG
SQLNET ALG 处理 TNS 重定向数据包,执行NAT操作,并开启从客户端到服务器的新连接的针孔。
此示例展示如何在路由或 NAT 模式下配置 SQLNET ALG、允许 SQLNET 流量通过设备,以及如何在客户端与位于 瞻博网络 设备另一侧的服务器之间传输数据。
要求
此示例具有以下硬件和软件组件:
SRX 系列设备
两个 PC(客户端和服务器)
开始之前:
了解 ALG 背后的概念。请参阅 ALG 概述。
了解 SQLNET ALG 的基础知识。请参阅 了解 SQLNET ALG。
概述
此示例将首先在设备上配置网络接口。创建安全区域并将接口分配给区域,并配置策略以允许 SQLNET 流量通过 SRX 系列设备。
然后创建静态 NAT 规则集 rs1,规则 rs1 与目标地址 40.0.172.10/32 匹配,然后创建地址为 40.0.172.45/32 的静态 NAT 前缀。
接下来,您将创建一个源 NAT 池 src-p1,其源规则集 src-rs1 用于将数据包从接口 fe-3/0/0.0 转换至接口 fe-3/0/1.0。为匹配数据包,源地址将转换为 src-p1 池中的 IP 地址。
然后创建一个目标 NAT 池 des-p1,其目标规则集 des-rs1 用于将数据包从区域信任关系转换为目标地址 40.0.172.10/32。为匹配数据包,目标地址将转换为 des-p1 池中的 IP 地址。最后,启用 SQLNET ALG 追踪选项。
配置
要配置 SQLNET ALG,请执行以下任务:
配置路由模式
CLI快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。 [edit]
commit
set interfaces ge-0/0/0 unit 0 family inet address 10.208.172.58/21 set interfaces fe-3/0/0 unit 0 family inet address 30.3.3.149/8 set interfaces fe-3/0/1 unit 0 family inet address 40.4.4.149/8 set security zones security-zone trust host-inbound-traffic system-services all set security zones security-zone trust host-inbound-traffic protocols all set security zones security-zone trust interfaces fe-3/0/0.0 set security zones security-zone untrust host-inbound-traffic system-services all set security zones security-zone untrust host-inbound-traffic protocols all set security zones security-zone untrust interfaces fe-3/0/1.0 set security policies from-zone trust to-zone untrust policy sql match source-address any set security policies from-zone trust to-zone untrust policy sql match destination-address any set security policies from-zone trust to-zone untrust policy sql match application junos-sqlnet-v2 set security policies from-zone trust to-zone untrust policy sql then permit
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何操作的说明,请参阅 CLI 用户指南 中的 在配置模式下CLI编辑器 。
要配置路由模式:
配置接口。
[edit interfaces] user@host# set ge-0/0/0 unit 0 family inet address 10.208.172.58/21 user@host# set fe-3/0/0 unit 0 family inet address 30.3.3.149/8 user@host# set fe-3/0/1 unit 0 family inet address 40.4.4.149/8
配置区域并将接口分配给区域。
[edit security zones security-zone] user@host# set trust host-inbound-traffic system-services all user@host# set trust host-inbound-traffic protocols all user@host# set trust interfaces fe-3/0/0.0 user@host# set untrust host-inbound-traffic system-services all user@host# set untrust host-inbound-traffic protocols all user@host# set untrust interfaces fe-3/0/1.0
配置一个 SQL 策略,允许 SQL 流量从信任区域到不信任区域。
[edit security policies from-zone trust to-zone untrust ] user@host# set policy sql match source-address any user@host# set policy sql match destination-address any user@host# set policy sql match application junos-sqlnet-v2 user@host# set policy sql then permit
结果
在配置模式下,输入 、 和 show interfaces
命令 show security zones
以确认您的 show security policies
配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
为简洁起见, show
此输出仅包含与此示例相关的配置。系统上的其他任何配置已替换为椭圆 (...)。
[edit] user@host# show interfaces ge-0/0/0 { unit 0 { family inet { address 10.208.172.58/21; } } } fe-3/0/0 { unit 0 { family inet { address 30.3.3.149/8; } } } fe-3/0/1 { unit 0 { family inet { address 40.4.4.149/8; } } }
[edit] user@host# show security zones ... security-zone trust { host-inbound-traffic { system-services { all; } protocols { all; } } interfaces { fe-3/0/0.0; } } security-zone untrust { host-inbound-traffic { system-services { all; } protocols { all; } } interfaces { fe-3/0/1.0; } } ...
[edit] user@host# show security policies from-zone trust to-zone untrust { policy sql { match { source-address any; destination-address any; application junos-sqlnet-v2; } then { permit; } } }
如果完成设备配置,请从配置 commit
模式输入 。
配置静态规则NAT集
CLI快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。 [edit]
commit
set security nat static rule-set rs1 from zone trust set security nat static rule-set rs1 rule r1 match destination-address 40.0.172.10/32 set security nat static rule-set rs1 rule r1 then static-nat prefix 40.0.172.45/32
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何操作的说明,请参阅 CLI 用户指南 中的 在配置模式下CLI编辑器 。
要配置静态规则NAT集:
创建静态规则NAT集。
[edit security nat static rule-set rs1] user@host#set from zone trust
定义与目标地址匹配的规则。
[edit security nat static rule-set rs1] user@host# set rule r1 match destination-address 40.0.172.10/32
为设备NAT静态路由前缀。
[edit security nat static rule-set rs1] user@host# set rule r1 then static-nat prefix 40.0.172.45/32
结果
在配置模式下,输入 命令以确认 show security nat
您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
[edit] user@host# show security nat static { rule-set rs1 { from zone trust; rule r1 { match { destination-address 40.0.172.10/32; } then { static-nat { prefix { 40.0.172.45/32; } } } } } }
如果完成设备配置,请从配置 commit
模式输入 。
配置源NAT池和规则集
CLI快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。 [edit]
commit
set security nat source pool src-p1 address 40.0.172.100/32 to 40.0.172.101/32 set security nat source rule-set src-rs1 from interface fe-3/0/0.0 set security nat source rule-set src-rs1 to interface fe-3/0/1.0 set security nat source rule-set src-rs1 rule r1 match source-address 30.0.0.0/8 set security nat source rule-set src-rs1 rule r1 match destination-address 40.0.0.0/8 set security nat source rule-set src-rs1 rule r1 then source-nat pool src-p1
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何操作的说明,请参阅 CLI用户指南 中的 在配置模式下CLI编辑器 。
要配置源NAT池和规则集:
创建源NAT池。
[edit security nat source] user@host#set pool src-p1 address 40.0.172.100/32 to 40.0.172.101/32
创建一个NAT规则集。
[edit security nat source] user@host# set rule-set src-rs1 from interface fe-3/0/0.0 user@host# set rule-set src-rs1 to interface fe-3/0/1.0
配置匹配数据包且将源地址转换至源池地址的规则。
[edit security nat source] user@host# set rule-set src-rs1 rule r1 match source-address 30.0.0.0/8
配置匹配数据包且将目标地址转换为源池地址的规则。
[edit security nat source] user@host# set rule-set src-rs1 rule r1 match destination-address 40.0.0.0/8
在规则NAT配置源池。
[edit security nat source] user@host# set rule-set src-rs1 rule r1 then source-nat pool src-p1
结果
在配置模式下,输入 命令以确认 show security nat
您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
[edit] user@host# show security nat source { pool src-p1 { address { 40.0.172.100/32 to 40.0.172.101/32; } } rule-set src-rs1 { from interface fe-3/0/0.0; to interface fe-3/0/1.0; rule r1 { match { source-address 30.0.0.0/8; destination-address 40.0.0.0/8; } then { source-nat { pool { src-p1; } } } } } }
如果完成设备配置,请从配置 commit
模式输入 。
配置目标NAT池和规则集
CLI快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。 [edit]
commit
set security nat destination pool des-p1 address 40.0.172.45/32 set security nat destination rule-set des-rs1 from zone trust set security nat destination rule-set des-rs1 rule des-r1 match source-address 30.0.172.12/32 set security nat destination rule-set des-rs1 rule des-r1 match destination-address 40.0.172.10/32 set security nat destination rule-set des-rs1 rule des-r1 then destination-nat pool des-p1
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何操作的说明,请参阅 CLI用户指南 中的 在配置模式下CLI编辑器 。
要配置目标NAT池和规则集:
创建目标NAT池。
[edit security nat destination] user@host#set pool des-p1 address 40.0.172.45/32
创建一个NAT集。
[edit security nat destination] user@host# set rule-set des-rs1 from zone trust
配置匹配数据包且将源地址转换到池内地址的规则。
[edit security nat destination] user@host# set rule-set des-rs1 rule des-r1 match source-address 30.0.172.12/32
配置匹配数据包且将目标地址转换到池内地址的规则。
[edit security nat destination] user@host# set rule-set des-rs1 rule des-r1 match destination-address 40.0.172.10/32
在规则NAT一个源池。
[edit security nat destination] user@host# set rule-set des-rs1 rule des-r1 then destination-nat pool des-p1
结果
在配置模式下,输入 命令以确认 show security nat
您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
[edit] user@host# show security nat destination { pool des-p1 { address { 40.0.172.45/32; } } rule-set des-rs1 { from zone trust; rule des-r1 { match { source-address 30.0.172.12/32; destination-address 40.0.172.10/32; } then { destination-nat { pool { des-p1; } } } } }
如果完成设备配置,请从配置 commit
模式输入 。
支持 SQLNET ALG
CLI快速配置
从 Junos OS 版15.1X49-D10 Junos OS版本17.3R1,SQLNET 应用程序层网关默认启用。
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。 [edit]
commit
set security alg sql
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何操作的说明,请参阅 CLI用户指南 中的 在配置模式下CLI编辑器 。
要启用 SQLNET ALG:
启用 SQLNET ALG。
[edit ] user@host#set security alg sql
启用 SQLNET ALG 追踪选项
CLI快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。 [edit]
commit
set security alg sql traceoptions flag all set security alg traceoptions file trace set security alg traceoptions file size 1g set security alg traceoptions level verbose
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何操作的说明,请参阅 CLI 用户指南 中的 在配置模式下CLI编辑器 。
要启用 SQLNET ALG 追踪选项,
启用 SQLNET ALG 追踪选项。
[edit security alg] user@host#set sql traceoptions flag all
配置文件名,以从追踪操作接收输出。
[edit security alg] user@host#set traceoptions file trace
指定最大追踪文件大小。
[edit security alg] user@host#set traceoptions file size 1g
指定追踪输出级别。
[edit security alg] user@host#set traceoptions level verbose
结果
在配置模式下,输入 命令以确认 show security alg
您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
[edit] user@host# show security alg traceoptions { file trace size 1g; level verbose; } sql traceoptions flag all;
如果完成设备配置,请从配置 commit
模式输入 。
验证
确认配置工作正常。
验证 SQLNET ALG 控制会话
目的
验证 SQL 命令是否执行且创建了所有 SQL 控制和数据会话。
行动
在操作模式下,输入 show security flow session
命令。
user@host>show security flow session Session ID: 10880, Policy name: sql, Timeout: 2, Valid In: 30.0.172.12/52315 --> 40.0.172.35/1521;tcp, If: fe-3/0/0.0, Pkts: 6, Bytes: 492 Out: 40.0.172.35/1521 --> 30.0.172.12/52315;tcp, If: fe-3/0/1.0, Pkts: 4, Bytes: 227 Session ID: 10881, Policy name: sql, Timeout: 1800, Valid Resource information : SQLV2 ALG, 5, 18 In: 30.0.172.12/45944 --> 40.0.172.35/1114;tcp, If: fe-3/0/0.0, Pkts: 18, Bytes: 4240 Out: 40.0.172.35/1114 --> 30.0.172.12/45944;tcp, If: fe-3/0/1.0, Pkts: 15, Bytes: 3989 Total sessions: 2
意义
Session ID—标识会话的编号。使用此 ID 获取有关会话详细信息,如策略名称、输入和退出的数据包数。
Policy name—允许流量的策略名称。
In—传入流(源和目标 IP 地址,以及各自的源端口号和目标端口号,会话为 TCP,此会话的源接口为 fe-3/0/0.0)。
Out—反向流(源和目标 IP 地址,以及各自的源端口号和目标端口号,会话为 TCP,此会话的目标接口为 fe-3/0/1.0)。
验证 SQLNET ALG
目的
验证 SQLNET ALG 是否已启用。
行动
在操作模式下,输入 show security alg status
命令。
user@host>show security alg status ALG Status : DNS : Enabled FTP : Enabled H323 : Disabled MGCP : Disabled MSRPC : Enabled PPTP : Enabled RSH : Disabled RTSP : Disabled SCCP : Disabled SIP : Disabled SQL : Enabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled
意义
输出显示 SQLNET ALG 状态,如下所示:
启用 — 显示启用了 SQLNET ALG
禁用 - 显示 SQLNET ALG 已禁用。
验证 SQLNET ALG 资源管理器组
目的
验证 SQLNET ALG 使用的资源管理器组和活动组总数。
行动
在操作模式下,输入 show security resource-manager group active
命令。
user@host>show security resource-manager group active Group ID 1: Application - SQL ALG Total groups 677, active groups 1
验证 SQLNET ALG 资源信息
目的
验证 SQLNET ALG 使用的资源和活动资源总数。
行动
在操作模式下,输入 show security resource-manager resource active
命令。
user@host>show security resource-manager resource active Resource ID 2: Group ID - 1, Application - SQL ALG Resource ID 1: Group ID - 1, Application - SQL ALG Total Resources 4044, active resources 2