本页内容
验证 ALG 会话的输出
本节包含 ALG 会话成功输出的示例和有关系统日志配置的信息。您可以比较会话的结果,检查配置是否正常运行。
FTP 示例
此示例分析活动 FTP 会话期间的输出。它由四种不同的流组成:两个是控制流,两个是数据流。此示例包含以下部分:
示例输出
MS-MPC 卡
对于 MS-MPC,以下是操作模式命令的完整示例输出 show services stateful-firewall conversations application-protocol ftp
:
user@host>show services stateful-firewall conversations application-protocol ftp Interface: ms-1/3/0, Service set: CLBJI1-AAF001 Conversation: ALG protocol: ftp Number of initiators: 2, Number of responders: 2 Flow State Dir Frm count TCP 1.1.79.2:14083 -> 2.2.2.2:21 Watch I 13 NAT source 1.1.79.2:14083 -> 194.250.1.237:50118 TCP 1.1.79.2:14104 -> 2.2.2.2:20 Forward I 3 NAT source 1.1.79.2:14104 -> 194.250.1.237:50119 TCP 2.2.2.2:21 -> 194.250.1.237:50118 Watch O 12 NAT dest 194.250.1.237:50118 -> 1.1.79.2:14083 TCP 2.2.2.2:20 -> 194.250.1.237:50119 Forward O 5 NAT dest 194.250.1.237:50119 -> 1.1.79.2:14104
对于每个流,第一行显示流信息,包括协议 (TCP)、源地址、源端口、目标地址、目标端口、流状态、方向和帧计数。
流的状态可以是
Watch
、 、Forward
或Drop
:Watch
流状态表示控制流由 ALG 监控,以查看有效负载中的信息。根据需要对报头和有效负载执行 NAT 处理。流
Forward
转发数据包,而无需监控有效负载。根据需要对报头执行 NAT。流
Drop
会丢弃与 5 元匹配的任何数据包。
帧计数 (
Frm count
) 显示该流上处理的数据包数。
第二行显示 NAT 信息。
source
指示源 NAT。dest
指示目标 NAT。NAT 行中的第一个地址和端口是为该流转换的原始地址和端口。
NAT 行中的第二个地址和端口是该流的转换地址和端口。
MX-SPC3 卡
在 MX-SPC3 服务卡上,以下是操作模式命令的完整 show services sessions application-protocol ftp
示例输出:
user@host>show services sessions application-protocol ftp Session ID: 536870917, Service-set: ss1, Policy name: p1/131085, Timeout: 1, Valid Logical system: root-logical-system Resource information : FTP ALG, 1, 1 In: 12.10.10.10/35281 --> 22.20.20.3/8204;tcp, Conn Tag: 0x0, If: vms-2/0/0.100, Pkts: 6, Bytes: 320, Out: 22.20.20.3/8204 --> 60.1.1.2/48747;tcp, Conn Tag: 0x0, If: vms-2/0/0.200, Pkts: 9, Bytes: 8239, Session ID: 536870919, Service-set: ss1, Policy name: p1/131085, Timeout: 29, Valid Logical system: root-logical-system Resource information : FTP ALG, 1, 0 In: 12.10.10.10/44194 --> 22.20.20.3/21;tcp, Conn Tag: 0x0, If: vms-2/0/0.100, Pkts: 13, Bytes: 585, Out: 22.20.20.3/21 --> 60.1.1.2/48660;tcp, Conn Tag: 0x0, If: vms-2/0/0.200, Pkts: 11, Bytes: 650, Total sessions: 2
对于每个分会讨论:
第一行显示流信息,包括会话 ID、服务集名称、策略名称、会话超时、逻辑系统名称和其状态。
第二行
Resource information
表示由 ALG 创建会话,包括 ALG 名称 (FTP ALG) 和 ASL 组 ID(即 1),ASL 资源 ID(控制会话为 0,数据会话为 1)。第三行
In
是正向流,第四行Out
是反向流,包括源地址、源端口、目标地址、目标端口、协议 (TCP)、会话 conn-标记、接口的传入In
和传出Out
、接收的帧计数和字节。根据需要对报头执行 NAT。
FTP 系统日志消息
FTP 会话期间会生成系统日志消息。有关系统日志的更多信息,请参阅 系统日志消息。
MS-MPC 卡
在创建 FTP 控制流期间会生成以下系统日志消息:
规则接受系统日志:
Oct 27 11:42:54 (FPC Slot 1, PIC Slot 1) {ss_ftp}[FWNAT]: ASP_SFW_RULE_ACCEPT: proto 6 (TCP) application: ftp, fe-3/3/3.0:1.1.1.2:4450 -> 2.2.2.2:21, Match SFW accept rule-set:, rule: ftp, term: 1
创建接受流系统日志:
Oct 27 11:42:54 (FPC Slot 1, PIC Slot 1) {ss_ftp}[FWNAT]: ASP_SFW_CREATE_ACCEPT_FLOW: proto 6 (TCP) application: ftp, fe-3/3/3.0:1.1.1.2:4450 -> 2.2.2.2:21, creating forward or watch flow
用于创建数据流的系统日志:
Oct 27 11:43:30 (FPC Slot 1, PIC Slot 1) {ss_ftp}[FWNAT]: ASP_SFW_FTP_ACTIVE_ACCEPT: proto 6 (TCP) application: ftp, so-2/1/2.0:2.2.2.2:20 -> 1.1.1.2:50726, Creating FTP active mode forward flow
MX-SPC3 卡卡
在创建 FTP 控制流期间会生成以下系统日志消息:
FTP 控制会话创建系统日志:
Mar 23 23:58:54 esst480r RT_FLOW: RT_FLOW_SESSION_CREATE_USF: Tag svc-set-name ss1: session created 20.1.1.2/52877->30.1.1.2/21 0x0 junos-ftp 20.1.1.2/52877->30.1.1.2/21 0x0 N/A N/A N/A N/A 6 p1 ss1-ZoneIn ss1-ZoneOut 818413576 N/A(N/A) ge-1/0/2.0 UNKNOWN UNKNOWN UNKNOWN N/A N/A -1 N/A Mar 23 23:59:00 esst480r junos-alg: RT_ALG_FTP_ACTIVE_ACCEPT: application:ftp data, vms-3/0/0.0 30.1.1.2:20 -> 20.1.1.2:33947 (TCP)
FTP 数据会话创建系统日志:
Mar 23 23:59:00 esst480r RT_FLOW: RT_FLOW_SESSION_CREATE_USF: Tag svc-set-name ss1: session created 30.1.1.2/20->20.1.1.2/33947 0x0 junos-ftp-data 30.1.1.2/20->20.1.1.2/33947 0x0 N/A N/A N/A N/A 6 p1 ss1-ZoneOut ss1-ZoneIn 818413577 N/A(N/A) ge-1/1/6.0 FTP-DATA UNKNOWN UNKNOWN Infrastructure File-Servers 2 N/A
FTP 数据会话的系统日志销毁:
Mar 23 23:59:02 esst480r RT_FLOW: RT_FLOW_SESSION_CLOSE_USF: Tag svc-set-name ss1: session closed TCP FIN: 30.1.1.2/20->20.1.1.2/33947 0x0 junos-ftp-data 30.1.1.2/20->20.1.1.2/33947 0x0 N/A N/A N/A N/A 6 p1 ss1-ZoneOut ss1-ZoneIn 818413577 2954(4423509) 281(14620) 2 FTP-DATA UNKNOWN N/A(N/A) ge-1/1/6.0 No Infrastructure File-Servers 2 N/A
FTP 控制会话的系统日志销毁:
Mar 23 23:59:39 esst480r RT_FLOW: RT_FLOW_SESSION_CLOSE_USF: Tag svc-set-name ss1: session closed Closed by junos-tcp-clt-emul: 20.1.1.2/52877->30.1.1.2/21 0x0 junos-ftp 20.1.1.2/52877->30.1.1.2/21 0x0 N/A N/A N/A N/A 6 p1 ss1-ZoneIn ss1-ZoneOut 818413576 23(1082) 18(1176) 45 UNKNOWN UNKNOWN N/A(N/A) ge-1/0/2.0 No N/A N/A -1 N/A
分析
控制流
MS-MPC 卡
控制流是在三次握手完成后建立的。
从 FTP 客户端到 FTP 服务器的控制流。TCP 目标端口为 21。
TCP 1.1.79.2:14083 -> 2.2.2.2:21 Watch I 13 NAT source 1.1.79.2:14083 -> 194.250.1.237:50118
从 FTP 服务器到 FTP 客户端的控制流。TCP 源端口为 21。
TCP 2.2.2.2:21 -> 194.250.1.237:50118 Watch O 12 NAT dest 194.250.1.237:50118 -> 1.1.79.2:14083
MX-SPC3 卡
控制流是在三次握手完成后建立的。
控制从 FTP 客户端到 FTP 服务器的会话,TCP 目标端口为 21。
Session ID: 536870919, Service-set: ss1, Policy name: p1/131085, Timeout: 29, Valid Logical system: root-logical-system Resource information : FTP ALG, 1, 0 In: 12.10.10.10/44194 --> 22.20.20.3/21;tcp, Conn Tag: 0x0, If: vms-2/0/0.100, Pkts: 13, Bytes: 585, Out: 22.20.20.3/21 --> 60.1.1.2/48660;tcp, Conn Tag: 0x0, If: vms-2/0/0.200, Pkts: 11, Bytes: 650,
从 FTP 客户端到 FTP 服务器的数据会话,适用于 FTP 被动模式。
Session ID: 536870917, Service-set: ss1, Policy name: p1/131085, Timeout: 1, Valid Logical system: root-logical-system Resource information : FTP ALG, 1, 1 In: 12.10.10.10/35281 --> 22.20.20.3/8204;tcp, Conn Tag: 0x0, If: vms-2/0/0.100, Pkts: 6, Bytes: 320, Out: 22.20.20.3/8204 --> 60.1.1.2/48747;tcp, Conn Tag: 0x0, If: vms-2/0/0.200, Pkts: 9, Bytes: 8239,
从 FTP 服务器到 FTP 客户端的数据会话,适用于 FTP 活动模式:
Session ID: 549978117, Service-set: ss1, Policy name: p1/131085, Timeout: 1, Valid Logical system: root-logical-system Resource information : FTP ALG, 1, 1 In: 22.20.20.3/20 --> 60.1.1.3/6049;tcp, Conn Tag: 0x0, If: vms-2/0/0.200, Pkts: 10, Bytes: 8291, Out: 12.10.10.10/33203 --> 22.20.20.3/20;tcp, Conn Tag: 0x0, If: vms-2/0/0.100, Pkts: 5, Bytes: 268,
数据流
在 FTP 控制协议过程中,协商数据端口 20,以便进行数据传输。这两个流是 FTP 客户端和 FTP 服务器之间的数据流:
TCP 1.1.79.2:14104 -> 2.2.2.2:20 Forward I 3 NAT source 1.1.79.2:14104 -> 194.250.1.237:50119 TCP 2.2.2.2:20 -> 194.250.1.237:50119 Forward O 5 NAT dest 194.250.1.237:50119 -> 1.1.79.2:14104
故障排除问题
如何知道 FTP ALG 是否处于活动状态?
对话中的 ALG 协议字段应显示
ftp
。控制流中应存在有效的帧计数 (
Frm count
)。数据流中的有效帧计数表示已进行数据传输。
检查 FTP 连接是否已建立但未进行数据传输,我需要什么?
很可能控制连接已启动,但数据连接已关闭。
检查对话输出,以确定是否同时存在控制和数据流。
如何解读每个流?每个流意味着什么?
FTP 控制流发起方流 — 目标端口为 21 的流
FTP 控制流响应程序流 — 带源端口的流;21
FTP 数据流发起方流 — 目标端口 20 的流
FTP 数据流响应程序流 — 源端口 20 的流
RTSP ALG 示例
以下是 RTSP 对话的示例。应用程序使用 RTSP 协议进行控制连接。设置连接后,将使用 UDP 协议 (RTP) 发送介质。
此示例由以下内容组成:
MS-MPC 的示例输出
下面是操作模式命令的 show services stateful-firewall conversations
输出:
user@host# show services stateful-firewall conversations Interface: ms-3/2/0, Service set: svc_set Conversation: ALG protocol: rtsp Number of initiators: 5, Number of responders: 5 Flow State Dir Frm count TCP 1.1.1.3:58795 -> 2.2.2.2:554 Watch I 7 UDP 1.1.1.3:1028 -> 2.2.2.2:1028 Forward I 0 UDP 1.1.1.3:1029 -> 2.2.2.2:1029 Forward I 0 UDP 1.1.1.3:1030 -> 2.2.2.2:1030 Forward I 0 UDP 1.1.1.3:1031 -> 2.2.2.2:1031 Forward I 0 TCP 2.2.2.2:554 -> 1.1.1.3:58795 Watch O 5 UDP 2.2.2.2:1028 -> 1.1.1.3:1028 Forward O 6 UDP 2.2.2.2:1029 -> 1.1.1.3:1029 Forward O 0 UDP 2.2.2.2:1030 -> 1.1.1.3:1030 Forward O 3 UDP 2.2.2.2:1031 -> 1.1.1.3:1031 Forward O 0
MX-SPC3 服务卡的示例输出
下面是操作模式命令的 show services sessions application-protocol rtsp
输出:
user@host# run show services sessions application-protocol rtsp Session ID: 1073741828, Service-set: sset1, Policy name: p1/131081, Timeout: 116, Valid Logical system: root-logical-system Resource information : RTSP ALG, 1, 0 In: 31.0.0.2/33575 --> 41.0.0.2/554;tcp, Conn Tag: 0x0, If: vms-4/0/0.1, Pkts: 8, Bytes: 948, Out: 41.0.0.2/554 --> 131.10.0.1/7777;tcp, Conn Tag: 0x0, If: vms-4/0/0.2, Pkts: 6, Bytes: 1117, Session ID: 1073741829, Service-set: sset1, Policy name: p1/131081, Timeout: 120, Valid Logical system: root-logical-system Resource information : RTSP ALG, 1, 1 In: 41.0.0.2/35004 --> 131.10.0.1/7780;udp, Conn Tag: 0x0, If: vms-4/0/0.2, Pkts: 220, Bytes: 79200, Out: 31.0.0.2/30004 --> 41.0.0.2/35004;udp, Conn Tag: 0x0, If: vms-4/0/0.1, Pkts: 0, Bytes: 0, Session ID: 1073741830, Service-set: sset1, Policy name: p1/131081, Timeout: 120, Valid Logical system: root-logical-system Resource information : RTSP ALG, 1, 4 In: 41.0.0.2/35006 --> 131.10.0.1/7781;udp, Conn Tag: 0x0, If: vms-4/0/0.2, Pkts: 220, Bytes: 174240, Out: 31.0.0.2/30006 --> 41.0.0.2/35006;udp, Conn Tag: 0x0, If: vms-4/0/0.1, Pkts: 0, Bytes: 0, Total sessions: 3
分析
RTSP 对话应包含与 RTSP 控制连接对应的 TCP 流。应该有两个流,每个方向一个,从客户端到服务器,从服务器流到客户端:
TCP 1.1.1.3:58795 -> 2.2.2.2:554 Watch I 7 TCP 2.2.2.2:554 -> 1.1.1.3:58795 Watch O 5
发起方流的 RTSP 控制连接从目标端口 554 发送。
响应方流的 RTSP 控制连接从源端口 554 发送。
UDP 流对应于通过 RTSP 连接发送的 RTP 介质。
故障排除问题
配置 RTSP ALG 时,介质无法工作。我该怎么办?
检查 RTSP 对话,查看 TCP 和 UDP 流是否存在。
ALG 协议应显示为
rtsp
。
注意:流的状态显示为
Watch
,因为 ALG 处理正在进行中,客户端本质上正在“监视”或处理与应用程序对应的有效负载。对于 FTP 和 RTSP ALG 流,控制连接始终Watch
为流。如何检查 ALG 错误?
您可以通过发出以下命令来检查错误。每个 ALG 都有一个单独的 ALG 数据包错误字段。
user@host# show services stateful-firewall statistics extensive Interface: ms-3/2/0 Service set: svc_set New flows: Accepts: 1347, Discards: 0, Rejects: 0 Existing flows: Accepts: 144187, Discards: 0, Rejects: 0 Drops: IP option: 0, TCP SYN defense: 0 NAT ports exhausted: 0 Errors: IP: 0, TCP: 276 UDP: 0, ICMP: 0 Non-IP packets: 0, ALG: 0 IP errors: IP packet length inconsistencies: 0 Minimum IP header length check failures: 0 Reassembled packet exceeds maximum IP length: 0 Illegal source address: 0 Illegal destination address: 0 TTL zero errors: 0, Illegal IP protocol number (0 or 255): 0 Land attack: 0 Non-IPv4 packets: 0, Bad checksum: 0 Illegal IP fragment length: 0 IP fragment overlap: 0 IP fragment reassembly timeout: 0 Unknown: 0 TCP errors: TCP header length inconsistencies: 0 Source or destination port number is zero: 0 Illegal sequence number and flags combinations: 0 SYN attack (multiple SYN messages seen for the same flow): 276 First packet not a SYN message: 0 TCP port scan (TCP handshake, RST seen from server for SYN): 0 Bad SYN cookie response: 0 UDP errors: IP data length less than minimum UDP header length (8 bytes): 0 Source or destination port number is zero: 0 UDP port scan (ICMP error seen for UDP flow): 0 ICMP errors: IP data length less than minimum ICMP header length (8 bytes): 0 ICMP error length inconsistencies: 0 Duplicate ping sequence number: 0 Mismatched ping sequence number: 0 ALG errors: BOOTP: 0, DCE-RPC: 0, DCE-RPC portmap: 0 DNS: 0, Exec: 0, FTP: 0 ICMP: 0 Login: 0, NetBIOS: 0, NetShow: 0 RPC: 0, RPC portmap: 0 RTSP: 0, Shell: 0 SNMP: 0, SQLNet: 0, TFTP: 0 Traceroute: 0
系统日志消息
启用系统日志生成和检查系统日志也有助于进行 ALG 流分析。本节包含以下内容:
系统日志配置
您可以在 Junos OS CLI 中的多个不同级别上配置启用系统日志消息。如以下示例配置所示,级别的选择取决于希望事件日志记录的具体程度以及要包括的选项。有关配置选项的详细信息,请参阅 路由设备的 Junos OS 管理库 (系统级别)或 路由设备的 Junos OS 服务接口库 (所有其他级别)。
在全球顶级级别:
user@host# show system syslog file messages { any any; }
在服务集级别:
user@host# show services service-set svc_set syslog { host local { services any; } } stateful-firewall-rules allow_rtsp; interface-service { service-interface ms-3/2/0; }
在服务规则级别:
user@host# show services stateful-firewall rule allow_rtsp match-direction input-output; term 0 { from { applications junos-rtsp; } then { accept; syslog; } }
系统日志输出
流创建期间会生成系统日志消息,如以下示例所示:
以下系统日志消息表示 ASP 与接受规则匹配:
Oct 25 16:11:37 (FPC Slot 3, PIC Slot 2) {svc_set}[FWNAT]: ASP_SFW_RULE_ACCEPT: proto 6 (TCP) application: rtsp, ge-2/0/1.0:1.1.1.2:35595 -> 2.2.2.2:554, Match SFW accept rule-set: , rule: allow_rtsp, term: 0
有关系统日志消息的完整列表,请参阅 系统日志浏览器。