ALG概览
ALG 说明
本主题介绍 Junos OS 支持的应用层网关 (ALG)。 ALG 支持包括管理受支持 ALG 的针孔和父子关系。
支持的 ALG
表 1 列出了 Junos OS 支持的 ALG。有关 MS-DPC、MS-MPC、MS-MIC 支持哪些 ALG 的信息,请参阅 可用于 Junos OS Address Aware NAT 的 ALG。
支持的 ALG |
v4 - v4 |
v6 - v4 |
v6 - v6 |
DS-Lite(从 Junos OS 18.1R1 版开始,开始支持在 MS-MPC 和 MS-MIC 上带有 DS-lite 的 ALG) |
---|---|---|---|---|
基本 TCP ALG |
是的 |
是的 |
是的 |
是的 |
基本 UPD ALG |
是的 |
是的 |
是的 |
是的 |
BOOTP |
是的 |
不 |
不 |
不 |
DCE RPC 服务 |
是的 |
不 |
不 |
不 |
DNS |
是的 |
是的 |
不 |
是的 |
FTP |
是的 |
是(从 Junos OS 14.1R1 版开始) |
不 |
是的 |
网守 RAS |
是(从 Junos OS 17.1R1 版开始) |
是(从 Junos OS 17.2R1 版开始) |
不 |
不 |
H323型 |
是的 |
是(从 Junos OS 17.2R1 版开始) |
不 |
不 |
ICMP |
是的 |
是的 |
是的 |
是的 |
IKE ALG(从 Junos OS 14.2R7、15.1R5、16.1R2 和 17.1R1 版开始) |
是的 |
是的 |
不 |
不 |
IIOP |
是的 |
不 |
不 |
不 |
IP |
是的 |
不 |
不 |
不 |
NETBIOS |
是的 |
不 |
不 |
不 |
网络显示 |
是的 |
不 |
不 |
不 |
PPTP |
是的 |
是(从 Junos OS 14.1R1 版开始) |
不 |
是的 |
真实音频 |
是的 |
不 |
不 |
不 |
Sun RPC 和 RPC 端口映射服务 |
是的 |
不 |
不 |
不 |
RTSP |
是的 |
是(从 Junos OS 14.1R1 版开始) |
不 |
是的 |
啜 |
是的 |
是(从 Junos OS 14.1R1 版开始) |
不 |
从 Junos OS 18.2R1 版开始,MS-MPC 和 MS-MIC 上的 DS-Lite 支持 SIP。 |
SNMP |
是的 |
不 |
不 |
不 |
SQLNET的 |
是的 |
不 |
不 |
不 |
TFTP |
是的 |
是(从 Junos OS 14.1R1 版开始) |
不 |
是的 |
Traceroute |
是的 |
是的 |
不 |
是的 |
Unix Remote Shell 服务 |
是的 |
不 |
不 |
不 |
WINFrame |
是的 |
不 |
不 |
不 |
ALG 支持详细信息
本部分包含有关 ALG 的详细信息。它包括以下内容:
- 基本 TCP ALG
- 基本 UDP ALG
- BOOTP
- DCE RPC 服务
- DNS
- FTP
- 网守 RAS
- H323型
- ICMP
- IIOP
- IKE ALG
- IP
- NetBIOS
- NetShow(网络显示)
- ONC RPC 服务
- PPTP
- 真实音频
- Sun RPC 和 RPC 端口映射服务
- RTSP
- 啜
- SNMP
- SQLNet
- TFTP
- Traceroute
- UNIX 远程 Shell 服务
- WinFrame
基本 TCP ALG
此 ALG 对 TCP 数据包执行基本的健全性检查。如果发现错误,将生成以下异常事件和系统日志消息:
TCP 源端口或目标端口零
TCP 报头长度检查失败
TCP 序列号为 0,并且未设置任何标志
设置了 TCP 序列号 0 和 FIN/PSH/RST 标志
TCP FIN/RST 或 SYN(URG|FIN|设置 RST) 标志
TCP ALG 执行以下步骤:
当路由器收到 SYN 数据包时,ALG 会创建 TCP 正向和反向流,并在 对话中对它们进行分组。它跟踪 TCP 三次握手。
SYN 防御机制跟踪 TCP 连接建立状态。它要求在很短的时间间隔内(当前为 4 秒)建立 TCP 会话。如果在此期间未建立 TCP 三次握手,则会话将终止。
激活机制可检测具有无响应端点的 TCP 会话。
仅当流与 ICMP 数据中指定的选择器信息匹配时,才允许出现 ICMP 错误。
基本 UDP ALG
此 ALG 对 UDP 标头执行基本的健全性检查。如果发现错误,将生成以下异常事件和系统日志消息:
UDP 源端口或目标端口 0
UDP 报头长度检查失败
UDP ALG 执行以下步骤:
当 ALG 收到第一个数据包时,它会创建双向流以接受正向和反向 UDP 会话流量。
如果会话的空闲时间超过允许的最大空闲时间(默认为 30 秒),则流将被删除。
仅当流与 ICMP 数据中指定的选择器信息匹配时,才允许出现 ICMP 错误。
BOOTP
自举协议 (BOOTP) 客户端从网络上的服务器检索其网络信息。它发出一条常规广播消息来请求信息,该信息由 BOOTP 服务器返回。有关协议规范,请参阅 ftp://ftp.isi.edu/in-notes/rfc951.txt
。
状态防火墙支持要求您在 UDP 服务器端口 67 和客户端端口 68 上配置 BOOTP ALG。如果客户端发送广播消息,则应在服务规则语句中 from
配置广播地址。即使 NAT 规则与流量匹配,也不会对 BOOTP 流量执行网络地址转换 (NAT)。如果在路由器上激活了 BOOTP 中继功能,则假定远程 BOOTP 服务器会为被 NAT 转换屏蔽的客户端分配地址。
DCE RPC 服务
分布式计算环境 (DCE) 远程过程调用 (RPC) 服务主要由 Microsoft 应用程序使用。ALG 使用众所周知的 TCP 端口 135 提供端口映射服务,并使用通用唯一标识符 (UUID) 而不是程序号来标识协议。主要基于应用的 DCE RPC 是 Microsoft Exchange 协议。
要支持状态防火墙和 NAT 服务,您需要在 TCP 端口 135 上配置 DCE RPC 端口映射 ALG。DCE RPC ALG 将 TCP 协议与特定于应用的 UUID 结合使用。
DNS
域名系统 (DNS) 通常在端口 53 上运行,用于处理与定位域名并将其转换为 IP 地址相关的数据。MX 系列 DNS ALG 监控 DNS 查询和回复数据包,并独立支持 UDP 和 TCP DNS 流量。DNS ALG 不支持 NAT 的有效负载转换,但在 DNS 服务器发送响应后,作员可以使用它从内存中高效地删除 NAT 或有状态防火墙 DNS 会话。DNS ALG 仅在收到回复或达到空闲超时时关闭会话。
如果 DNS 流量不仅仅是标准请求和回复类型,则使用 TCP-DNS-ALG 时,TCP DNS 流量可能会出现问题。例如,TCP-DNS-ALG 可能会中断使用 TCP 的 DNS 服务器到服务器通信,例如 DNS 复制或区域传输。NAT 或有状态防火墙插件可能会丢弃此类流量,因为 TCP-DNS-ALG 会在 TCP 握手完成后以及每台服务器向另一台服务器发送一个数据包后关闭会话。在这些情况下,请勿使用 TCP-DNS-ALG。
MS-DPC 服务卡不支持 TCP-DNS-ALG。
FTP
FTP 是 RFC 959 中指定的文件传输协议。除了主控制连接外,还为客户端和服务器之间的任何数据传输建立数据连接;主机、端口和方向通过控制通道进行协商。
对于非被动模式 FTP,Junos OS 状态式防火墙服务会扫描客户端到服务器的应用程序数据中的 PORT 命令,该命令提供服务器连接到的 IP 地址和端口号。对于被动模式 FTP,Junos OS 状态式防火墙服务会扫描客户端到服务器应用程序数据中的 PASV 命令,然后扫描服务器到客户端响应中的 227 响应,其中包含客户端连接到的 IP 地址和端口号。
还有一个额外的复杂性:FTP 以 ASCII 表示这些地址和端口号。因此,当地址和端口被重写时,TCP 序列号可能会被更改,此后 NAT 服务需要通过对所有后续数据包执行序列 NAT 来维护 SEQ 和 ACK 编号中的此增量。
要支持状态防火墙和 NAT 服务,您需要在 TCP 端口 21 上配置 FTP ALG 以启用 FTP 控制协议。ALG 执行以下任务:
自动分配动态数据连接的数据端口和防火墙权限
为动态协商的数据连接创建流
在主动和被动模式下监控控制连接
使用相应的 NAT 地址和端口信息重写控制数据包
在 MS-MPC、MS-MIC 上,要使无源 FTP 在未启用 FTP 应用层网关 (ALG) 的情况下正常工作(通过未在[edit services stateful-firewall rule rule-name term term-name from]
和层次结构级别指定application junos-ftp
语句),必须启用启用地址池配对 (APP) 功能(通过在[edit services nat rule rule-name term term-name then translated]
层次结构级别包含address-pooling
语[edit services nat rule rule-name term term-name from]
句)。此类配置会导致数据和控制 FTP 会话接收相同的 NAT 地址。
网守 RAS
从 Junos OS 17.1R1 版开始,网守注册、管理和状态 (RAS) ALG 允许对 H.323 调用完全支持网守模式。端点注册到网守并请求其管理。在发出呼叫之前,端点会请求其网守发出呼叫的权限。在注册和录取阶段,都会使用 RAS 通道。在 IPv4 和 IPv6 状态防火墙规则或 NAPT-44 规则中使用网守 RAS ALG 和 H323 ALG。从 Junos OS 17.2R1 版开始,还支持 NAT-64 规则。Junos 默认应用程序集 junos-h323-suite
包括 H323 ALG 和网守 RAS ALG。
H323型
H323 是一套用于音频和视频会议以及协作应用的 ITU 协议。H323 由 H.225 呼叫信令协议和用于媒体通信的 H.245 控制协议组成。在 H.225 协商期间,端点通过在控制信道上交换呼叫信令消息来创建呼叫,并协商 H.245 的新控制信道。将为 H.245 消息创建新的控制连接。在 H.245 控制通道上交换消息以打开媒体通道。
有状态防火墙监控 H.225 控制通道以打开 H.245 控制通道。创建 H.245 通道后,状态防火墙还会监控此通道的媒体通道信息,并允许媒体流量通过防火墙。
H323 ALG 通过重写 H.225 和 H.245 消息中的相应地址和端口来支持静态目标、静态和动态源 NAT。
要支持 H.323 呼叫的网守模式,请在 IPv4 和 IPv6 状态防火墙规则或 NAPT-44 规则中使用 H323 ALG 和网守 RAS ALG。从 Junos OS 17.2R1 版开始,还支持 NAT-64 规则。Junos 默认应用程序集 junos-h323-suite
包括 H323 ALG 和网守 RAS ALG。
ICMP
互联网控制消息协议 (ICMP) 在 RFC 792 中定义。Junos OS 状态防火墙服务允许按特定类型或特定类型代码值过滤 ICMP 消息。缺少特定配置类型和代码的 ICMP 错误数据包将与任何相反方向的现有流量进行匹配,以检查错误数据包的合法性。通过过滤器匹配的 ICMP 错误数据包需要进行 NAT 转换。
ICMP ALG 始终使用 ICMP 序列号有状态地跟踪 ping 流量。仅当存在具有相应序列号的回显请求时,才会转发每个回显回复。对于任何 ping 流,只能转发 20 个回显请求,而不会收到回显回复。配置动态 NAT 时,PING 数据包标识符将进行转换,以允许 NAT 池中的其他主机使用相同的标识符。
如果需要协议,需要对有状态防火墙和 NAT 服务提供支持,您需要配置 ICMP ALG。您可以配置 ICMP 类型和代码以进行其他过滤。
IIOP
Oracle 应用程序服务器名称服务器互联网 ORB 间协议 (IIOP)。此 ALG 用于基于分布式计算的通用对象请求代理架构 (CORBA)。尽管 CORBA 和 IIOP 是对象管理组 (OMG) 标准,但没有为 IIOP 分配固定端口。每个实施 CORBA 的供应商都会选择一个端口。Java 虚拟机默认使用端口 1975,而 ORBIX 默认使用端口 3075。
有状态防火墙和 NAT 要求为 Java VM IIOP 的 TCP 端口 1975 配置 ALG IIOP,为 CORBA 应用程序 ORBIX(Iona Technologies 的 CORBA 框架)配置 3075。
IKE ALG
在 Junos OS 17.4R1 版之前,MX 系列路由器上的 Junos VPN Site Secure IPsec 功能套件不支持网络地址转换-遍历 (NAT-T)。从 Junos OS 14.2R7、15.1R5、16.1R2 和 17.1R1 版开始,IKE ALG 允许在不符合 NAT-T 的 IPsec 对等方之间通过 NAPT-44 和 NAT64 规则传递 IKEv1 和 IPsec 数据包。此 ALG 仅支持 ESP 隧道模式。
在 NAT 规则中使用此 ALG,并指定 UDP 协议和端口 500。
此 ALG 执行以下作:
跟踪 IKEv1 连接初始化请求,以确定是否需要进行 NAT 处理。
对传出和传入 IKEv1 请求执行 NAT 转换并创建 IKE 会话。
识别与已建立的 IKE 会话相关的 IPsec 数据包,并在对等方之间建立安全关联。
对 IPsec 数据包执行 NAT 转换。
IP
IP ALG 仅用于创建单向流。如果是 TCP 流量,它不会检查 3 向握手过程。此 ALG 在仅使用状态防火墙服务集的情况下很有用,其中它只允许流量单向流动。与 match-direction input-output
它一起配置时,返回流量也允许流经状态防火墙。典型场景包括静态 NAT、目标 NAT 或在存在非对称路由的情况下预计流量将遍历有状态防火墙的场景。Junos IP ALG 不适合与 NAPT 配合使用,这会导致匹配的流量因创建丢弃流而被丢弃。
NetBIOS
NetBIOS ALG 在使用 NAT 时转换 NetBIOS IP 地址和端口号。
NetBIOS 支持 TCP 和 UDP 传输协议。要支持有状态防火墙和 NAT 服务,您需要在 UDP 端口 138 和 TCP 端口 139 上配置 NetBIOS ALG。
NetShow(网络显示)
Microsoft 媒体服务器 NetShow 使用 Microsoft 协议 ms-streaming。此协议支持多种传输协议:TCP、UDP 和 HTTP。客户端在端口 1755 上启动 TCP 连接,并向服务器发送 PORT 命令。然后,服务器在该端口上启动到客户端的 UDP。要支持有状态防火墙和 NAT 服务,您需要在 UDP 端口 1755 上配置 NetShow ALG。
ONC RPC 服务
开放网络计算 (ONC) RPC 服务的功能类似于 DCE RCP 服务。但是,ONC RPC ALG 将 TCP/UDP 端口 111 用于端口映射服务,并使用程序号而不是 UUID 来识别协议。
要支持有状态防火墙和 NAT 服务,您需要在 TCP 端口 111 上配置 ONC RPC 端口映射 ALG。ONC RPC ALG 使用带有特定于应用程序编号的 TCP 协议。
PPTP
点对点隧道协议 (PPTP) ALG 是基于 TCP 的 ALG。PPTP 允许点对点协议 (PPP) 通过 IP 网络建立隧道。PPTP 定义了客户端-服务器体系结构、PPTP 网络服务器和 PPTP 访问集中器。PPTP ALG 需要控制连接和数据隧道。控制连接使用 TCP 建立和断开 PPP 会话,并在端口 1723 上运行。数据隧道在通过 IP 传输的通用路由封装 (GRE) 数据包中传输 PPP 流量。
真实音频
Real Networks PNA 协议 RealVideo 不是一项单独的服务。它是 RealPlayer 的一部分,很可能使用另一个视频频道。RealPlayer 版本 G2、7 和 8 使用 PNA 和 RTSP。要使此版本正常工作,ALG 必须同时允许 PNA(7070) 和 RTSP(554)。对于介质,服务器从一系列 UDP 端口(6970 到 7170)、TCP 端口 7071 或 HTTP 中进行选择。客户端可以配置为使用特定端口。RealPlayer 版本 4.0 和 5.0 使用控制通道 7070 媒体 UDP 端口 6970 到 7170、TCP 端口 7071 或 HTTP。RealAudio 播放器 3.0 版使用控制通道 7070 媒体、UDP 端口 6770-7170 或 TCP 端口 7071。
真实产品使用 表 2 中所示的端口和端口范围。
真实产品 |
端口使用 |
---|---|
4.0 和 5.0 服务器/播放器 |
TCP 端口 7070 上的控制通道(双向)。TCP 端口 7070 或 UDP 端口 6970-7170 上从服务器到播放器的数据通道。 |
4.0 和 5.0 服务器/编码器 |
TCP 端口 7070 上的控制通道(双向)。来自 TCP 端口 7070 上的编码器或服务器的数据通道。 |
G2 服务器/播放器 |
TCP 端口 80、554、7070 或 8080 上的控制通道(双向)。TCP 端口 80、554、7070、8080 或 UDP 端口 6970-32,000 上从服务器到播放器的数据通道。 |
G2 Server/3.1 和 5.x 编码器 |
TCP 端口 7070 上的控制通道(双向)。TCP 端口 7070 上从编码器到服务器的数据通道。 |
G2 服务器/G2 生产者 |
TCP 端口 4040 上的控制通道(双向)。TCP 端口 4040 和 UDP 端口 6970-32,000 上从编码器到服务器的数据通道。 |
2 服务器/G2 生产者(仅限 TCP) |
TCP 端口 4040 上的控制通道(双向)TCP 端口 4040 上从编码器到服务器的数据通道。注意:版本 6.1 或更高版本中提供仅限 TCP 的选项。 |
RealAudio 是 RealPlayers 的原始协议。较新版本的 RealPlayer 使用 RTSP。有状态防火墙和 NAT 要求在 TCP 端口 7070 上对 ALG RealAudio 进行编程。
Sun RPC 和 RPC 端口映射服务
远程过程调用 (RPC) ALG 使用众所周知的端口 TCP 111 和 UDP 111 进行端口映射,从而动态分配和打开 RPC 服务的端口。RPC 端口映射 ALG 跟踪端口请求,并动态打开这些请求端口的防火墙。RPC ALG 可以通过指定允许的程序编号来进一步限制 RPC 协议。
ALG 包括 表 3 中列出的 RPC 服务。
名字 |
描述 |
评论 |
---|---|---|
|
网络文件服务器 (NFS) 挂载守护程序;有关详细信息,请参见 UNIX 手册页 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。 |
|
用作 NFS 的一部分。有关详细信息,请参阅 RFC 1094。另请参阅 NFS v3 RFC1813。 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。 |
|
Network Information Service Plus (NIS+),旨在取代 NIS;它是 Sun Solaris 的缺省命名服务,与旧的 NIS 无关。没有可用的协议信息。 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。 |
|
网络锁管理器。 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。构建 RPC 程序表后, |
|
内核统计服务器。有关详细信息,请参见 和 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。生成 RPC 程序表后, |
|
用于向用户写消息;有关详细信息,请参见 UNIX 手册页 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。生成 RPC 程序表后, |
|
NIS 绑定过程。有关详细信息,请参见 UNIX 手册页 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。构建 RPC 程序表后, |
|
NIS 密码服务器。有关详细信息,请参见 UNIX 手册页 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。构建 RPC 程序表后, |
|
NIS 服务器。有关详细信息,请参见 UNIX 手册页 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。构建 RPC 程序表后, |
|
网络更新工具。 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。生成 RPC 程序表后, |
|
NIS 映射传输服务器。有关详细信息,请参见 UNIX 手册页 |
基本支持是 RPC v2 和端口 111 上的端口映射器服务(请参阅 RFC 1050)。生成 RPC 程序表后, |
要支持使用端口映射的状态防火墙和 NAT 服务,则需要在 TCP/UDP 目标端口 111 上配置 RPC 端口映射 ALG,并为 TCP 和 UDP 配置 RPC ALG。可以指定一个或多个 rpc-program-number
值以进一步限制允许的 RPC 协议。
RTSP
实时流协议 (RTSP) 控制具有实时属性(如音频和视频)的数据传输。RTSP控制的流可以使用RTP,但不是必需的。媒体可以在同一 RTSP 控制流上传输。这是一种基于文本的类似 HTTP 的协议,但客户端和服务器维护会话信息。使用 SETUP 消息建立会话,并使用 TEARDOWN 消息终止会话。传输(介质协议、地址和端口号)在设置和设置响应中协商。
要支持状态防火墙和 NAT 服务,您需要为 TCP 端口 554 配置 RTSP ALG。
ALG 监视控制连接,动态打开媒体 (RTP/RTSP) 流的流,并执行 NAT 地址和端口重写。
啜
会话初始化协议 (SIP) 是一种应用层协议,可以建立、维护和终止媒体会话。它是一种广泛使用的 IP 语音 (VoIP) 信令协议。SIP ALG 监控 SIP 流量,并动态创建和管理信令和介质路径上的针孔。ALG 仅允许具有正确权限的数据包。SIP ALG 还执行以下功能:
管理父子会话关系。
实施安全策略。
管理 VoIP 流量的针孔。
SIP ALG 支持以下功能:
状态式防火墙
静态源 NAT
仅动态地址 源 NAT
网络地址端口转换 (NAPT)
SIP 会话限制为 12 小时(720 分钟),用于在 MS-MIC 和 MS-MPC 接口卡上进行 NAT 处理。MS-DPC 上的 SIP 会话没有时间限制。
SNMP
SNMP 是一种用于管理 TCP/IP 网络(包括单个网络设备和聚合设备)的通信协议。该协议由 RFC 1157 定义。SNMP 在 UDP 之上运行。
Junos OS 状态式防火墙服务实施 SNMP ALG 来检查 SNMP 类型。SNMP 不强制实施有状态流。需要专门启用每种 SNMP 类型。状态防火墙服务要完全支持 SNMP,您需要在 UDP 端口 161 上配置 SNMP ALG。这将启用 SNMP get
和 get-next
命令,以及它们在相反方向上的响应流量: UDP 端口 161 启用 SNMP get-response
命令。如果允许 SNMP 陷阱,那么可以在 UDP 端口 162 上配置它们,并启用 SNMP trap
命令。
SQLNet
Oracle SQL Server 使用 SQLNet 协议从客户端执行 SQL 命令,包括负载平衡和特定于应用程序的服务。
支持有状态防火墙和 NAT 服务要求为 TCP 端口 1521 配置 SQLNet ALG。
ALG 监控控制数据包,动态打开数据流以获取数据流量,并执行 NAT 地址和端口重写。
TFTP
简单文件传输协议 (TFTP) 在 RFC 1350 中指定。初始 TFTP 请求将发送到 UDP 目标端口 69。可以创建其他流来 获取 或 放置 单个文件。支持状态防火墙和 NAT 服务需要为 UDP 目标端口 69 配置 TFTP ALG。
Traceroute
Traceroute 是一种用于显示数据包到网络主机的路由的工具。它使用 IP 生存时间 (TTL) 字段来触发来自路由器或网关的 ICMP 超时消息。它将 UDP 数据报发送到被认为未使用的目标端口;目标端口使用以下公式进行编号:+ n跃点 – 1。默认基端口为 33434。要支持通过防火墙的 traceroute,必须通过两种类型的流量:
UDP 探测数据包(UDP 目标端口 > 33000,IP TTL < 30)
ICMP 响应数据包(ICMP 类型超时)
应用 NAT 时,还必须更改 ICMP 错误数据包中的 IP 地址和端口。
支持状态防火墙和 NAT 服务需要为 UDP 目标端口 33434 到 33450 配置 Traceroute ALG。此外,您还可以配置 TTL 阈值,以防止 TTL 值较大的 UDP 泛洪攻击。
UNIX 远程 Shell 服务
三个协议构成了 UNIX 远程 shell 服务的基础:
exec - 远程命令执行;使客户端系统上的用户能够在远程系统上执行命令。从客户端 (
rcmd
) 到服务器 (rshd
) 的第一个命令使用已知的 TCP 端口 512。可以应 的rcmd
请求打开第二个 TCP 连接。第二个连接的客户端端口号将作为 ASCII 字符串发送到服务器。登录 - 更广为人知的是
rlogin
;使用众所周知的 TCP 端口 513。有关详细信息,请参阅 RFC 1282。不需要特殊的防火墙处理。Shell - 远程命令执行;使客户端系统上的用户能够在远程系统上执行命令。从客户端 (
rcmd
) 到服务器 (rshd
) 的第一个命令使用已知的 TCP 端口 514。可以应 的rcmd
请求打开第二个 TCP 连接。第二个连接的客户端端口号将作为 ASCII 字符串发送到服务器。
要支持状态防火墙服务,您需要在 TCP 端口 512 上配置 Exec ALG,在 TCP 端口 513 上配置登录 ALG,并在 TCP 端口 514 上配置 Shell ALG。NAT 远程 shell 服务要求分配的任何动态源端口都在 512 到 1023 的端口范围内。如果配置 NAT 池,则此端口范围专门为远程 shell 应用程序保留。
WinFrame
WinFrame 应用程序服务器软件提供对几乎任何 Windows 应用程序的访问,通过任何类型的网络连接到任何类型的客户端。
此协议主要由 Citrix Windows 应用程序使用。
有状态防火墙和 NAT 要求在 TCP 目标端口 1494 和 UDP 端口 1604 上配置 ALG Winframe。
瞻博网络默认值
Junos OS 提供了一个默认的隐藏配置组,称为 junos-defaults
,该配置组会自动应用于路由器的配置。该 junos-defaults
组包含预配置的语句,这些语句包含常见应用程序的预定义值。某些语句必须引用才能生效,例如 FTP 或 Telnet 等应用。其他语句会自动应用,如终端设置。所有预配置语句都以保留名称 junos-
开头。
您可以覆盖 Junos OS 默认配置值,但不能删除或编辑这些值。如果删除配置,则在添加新配置时返回默认值。
不能将语句用于 apply-groups
Junos OS defaults 组。
要查看 Junos OS 默认组中的完整可用预设语句集,请发出 show groups junos-defaults
配置模式命令。以下示例显示使用应用程序协议 (ALG) 的 Junos OS 默认组列表:
user@host# show groups junos-defaults applications { # # File Transfer Protocol # application junos-ftp { application-protocol ftp; protocol tcp; destination-port 21; } # # Trivial File Transfer Protocol # application junos-tftp { application-protocol tftp; protocol udp; destination-port 69; } # # RPC portmapper on TCP # application junos-rpc-portmap-tcp { application-protocol rpc-portmap; protocol tcp; destination-port 111; } # # RPC portmapper on UDP # application junos-rpc-portmap-udp { application-protocol rpc-portmap; protocol udp; destination-port 111; } # # SNMP get # application junos-snmp-get { application-protocol snmp; protocol udp; destination-port 161; snmp-command get; } # # SNMP get next # application junos-snmp-get-next { application-protocol snmp; protocol udp; destination-port 161; snmp-command get-next; } # # SNMP response # application junos-snmp-response { application-protocol snmp; protocol udp; source-port 161; snmp-command get-response; } # # SNMP trap # application junos-snmp-trap { application-protocol snmp; protocol udp; destination-port 162; snmp-command trap; } # # remote exec # application junos-rexec { application-protocol exec; protocol tcp; destination-port 512; } # # remote login # application junos-rlogin { application-protocol shell; protocol tcp; destination-port 513; } # # remote shell # application junos-rsh { application-protocol shell; protocol tcp; destination-port 514; } # # Real Time Streaming Protocol # application junos-rtsp { application-protocol rtsp; protocol tcp; destination-port 554; } # # Citrix windows application server protocol # windows applications remotely on windows/non-windows clients # # citrix needs udp 1604 to be open # application junos-citrix-winframe { application-protocol winframe; protocol tcp; destination-port 1494; } application junos-citrix-winframe-udp { protocol udp; destination-port 1604; } # # Oracle SQL servers use this protocol to execute sql commands # from clients, load balance, use application-specific servers, etc # application junos-sqlnet { application-protocol sqlnet; protocol tcp; destination-port 1521; } # # H.323 Protocol for audio/video conferencing # application junos-h323 { application-protocol h323; protocol tcp; destination-port 1720; } application junos-h323-ras { application-protocol ras; protocol udp; destination-port 1719; } # # Internet Inter-ORB Protocol - used for CORBA applications # The ORB protocol in Java virtual machines uses port 1975 as default # application junos-iiop-java { application-protocol iiop; protocol tcp; destination-port 1975; } # # Internet Inter-ORB Protocol - used for CORBA applications # ORBIX is a CORBA framework from Iona Technologies that uses port # 3075 as default # application junos-iiop-orbix { application-protocol iiop; protocol tcp; destination-port 3075; } # # Real players use this protocol for real time streaming # This was the original protocol for real players. # RTSP is more widely used by real players # but they still support realaudio. # application junos-realaudio { application-protocol realaudio; protocol tcp; destination-port 7070; } # # traceroute application. # application junos-traceroute { application-protocol traceroute; protocol udp; destination-port 33435-33450; ttl-threshold 30; } # # The full range of known RPC programs using UDP # The program numbers can be more specific to certain applications. # application junos-rpc-services-udp { application-protocol rpc; protocol udp; rpc-program-number 100000-400000; } # # The full range of known RPC programs using TCP # The program numbers can be more specific to certain applications. # application junos-rpc-services-tcp { application-protocol rpc; protocol tcp; rpc-program-number 100000-400000; } # # All ICMP traffic # This can be made to be more restrictive by specifying ICMP type # and code. # application junos-icmp-all { application-protocol icmp; } # # Protocol used by Windows media server and windows media player # application junos-netshow { application-protocol netshow; protocol tcp; destination-port 1755; } # # NetBIOS - networking protocol used on # Windows networks name service port, both UDP and TCP # application junos-netbios-name-udp { application-protocol netbios; protocol udp; destination-port 137; } application junos-netbios-name-tcp { protocol tcp; destination-port 137; } # # NetBIOS - networking protocol used on # Windows networks datagram service port # application junos-netbios-datagram { application-protocol netbios; protocol udp; destination-port 138; } # # NetBIOS - networking protocol used on # Windows networks session service port # application junos-netbios-session { protocol tcp; destination-port 139; } # # DCE-RPC portmapper on TCP # application junos-dce-rpc-portmap { application-protocol dce-rpc-portmap; protocol tcp; destination-port 135; } # # DCE-RPC application on TCP sample UUID # This application requires user to specify the UUID value # # application junos-dcerpc { # application-protocol dce-rpc; # protocol tcp; # # # UUID also needs to be defined as shown below # UUID 11223344 22334455 33445566 44556677; # # } # # ms-exchange needs these 3 UUIDs # application junos-dcerpc-endpoint-mapper-service { application-protocol dce-rpc; protocol tcp; uuid e1af8308-5d1f-11c9-91a4-08002b14a0fa; } application junos-dcerpc-msexchange-directory-rfr { application-protocol dce-rpc; protocol tcp; uuid 1544f5e0-613c-11d1-93df-00c04fd7bd09; } application junos-dcerpc-msexchange-information-store { application-protocol dce-rpc; protocol tcp; uuid a4f1db00-ca47-1067-b31f-00dd010662da; } application junos-ssh { protocol tcp; destination-port 22; } application junos-telnet { protocol tcp; destination-port 23; } application junos-smtp { protocol tcp; destination-port 25; } application junos-dns-udp { protocol udp; destination-port 53; } application junos-dns-tcp { protocol tcp; destination-port 53; } application junos-tacacs { protocol tcp; destination-port 49; } # TACACS Database Service application junos-tacacs-ds { protocol tcp; destination-port 65; } application junos-dhcp-client { protocol udp; destination-port 68; } application junos-dhcp-server { protocol udp; destination-port 67; } application junos-bootpc { protocol udp; destination-port 68; } application junos-bootps { protocol udp; destination-port 67; } application junos-finger { protocol tcp; destination-port 79; } application junos-http { protocol tcp; destination-port 80; } application junos-https { protocol tcp; destination-port 443; } application junos-pop3 { protocol tcp; destination-port 110; } application junos-ident { protocol tcp; destination-port 113; } application junos-nntp { protocol tcp; destination-port 119; } application junos-ntp { protocol udp; destination-port 123; } application junos-imap { protocol tcp; destination-port 143; } application junos-imaps { protocol tcp; destination-port 993; } application junos-bgp { protocol tcp; destination-port 179; } application junos-ldap { protocol tcp; destination-port 389; } application junos-snpp { protocol tcp; destination-port 444; } application junos-biff { protocol udp; destination-port 512; } # UNIX who application junos-who { protocol udp; destination-port 513; } application junos-syslog { protocol udp; destination-port 514; } # line printer daemon, printer, spooler application junos-printer { protocol tcp; destination-port 515; } # UNIX talk application junos-talk-tcp { protocol tcp; destination-port 517; } application junos-talk-udp { protocol udp; destination-port 517; } application junos-ntalk { protocol udp; destination-port 518; } application junos-rip { protocol udp; destination-port 520; } # INA sanctioned RADIUS port numbers application junos-radius { protocol udp; destination-port 1812; } application junos-radacct { protocol udp; destination-port 1813; } application junos-nfsd-tcp { protocol tcp; destination-port 2049; } application junos-nfsd-udp { protocol udp; destination-port 2049; } application junos-cvspserver { protocol tcp; destination-port 2401; } # # Label Distribution Protocol # application junos-ldp-tcp { protocol tcp; destination-port 646; } application junos-ldp-udp { protocol udp; destination-port 646; } # # JUNOScript and JUNOScope management # application junos-xnm-ssl { protocol tcp; destination-port 3220; } application junos-xnm-clear-text { protocol tcp; destination-port 3221; } # # IPsec tunnel # application junos-ipsec-esp { protocol esp; } # #IKE application for IPSec VPN # application junos-ike { application-protocol ike-esp-nat; protocol udp; destination-port 500; } # # 'junos-algs-outbound' defines a set of all applications # requiring an ALG. Useful for defining rule to the the public # internet allowing private network users to use all JUNOS OS # supported ALGs initiated from the private network. # # NOTE: the contents of this set might grow in future JUNOS OS versions. # application-set junos-algs-outbound { application junos-ftp; application junos-tftp; application junos-rpc-portmap-tcp; application junos-rpc-portmap-udp; application junos-snmp-get; application junos-snmp-get-next; application junos-snmp-response; application junos-snmp-trap; application junos-rexec; application junos-rlogin; application junos-rsh; application junos-rtsp; application junos-citrix-winframe; application junos-citrix-winframe-udp; application junos-sqlnet; application junos-h323; application junos-iiop-java; application junos-iiop-orbix; application junos-realaudio; application junos-traceroute; application junos-rpc-services-udp; application junos-rpc-services-tcp; application junos-icmp-all; application junos-netshow; application junos-netbios-name-udp; application junos-netbios-datagram; application junos-dcerpc-endpoint-mapper-service; application junos-dcerpc-msexchange-directory-rfr; application junos-dcerpc-msexchange-information-store; } # # 'junos-management-inbound' represents the group of applications # that might need access the router from public network for # for management purposes. # # Set is intended for a UI to display management choices. # # NOTE: It is not recommended the user to use the entire set # directly in a firewall rule and open up firewall to all # of these applications. Also, the user should always # specify the source and destination prefixes when using # each application. # # NOTE: the contents of this set may grow in future JUNOS versions. # application-set junos-management-inbound { application junos-snmp-get; application junos-snmp-get-next; application junos-snmp-response; application junos-snmp-trap; application junos-ssh; application junos-telnet; application junos-http; application junos-https; application junos-xnm-ssl; application junos-xnm-clear-text; } # # 'junos-routing-inbound' represents routing protocols that might # need to access the router from public network. # # Set is intended for a UI to display routing involvement choices. # # NOTE: It is not recommended the user to use the entire set # directly in a firewall rule and open up firewall to all # of these applications. Also, the user should always # specify the source and destination prefixes when using # each application. # # NOTE: the contents of this set might grow in future JUNOS OS versions. # application-set junos-routing-inbound { application junos-bgp; application junos-rip; application junos-ldp-tcp; application junos-ldp-udp; } application-set junos-h323-suite { application junos-h323-ras, application junos-h323; } }
要引用组中可用的 junos-defaults
语句,请在适用的层次结构级别包含所选 junos-default-name
语句。要配置应用程序协议,请参阅 配置应用程序属性;有关特定协议的详细信息,请参阅 ALG 说明。
示例:引用 Junos OS 默认组中的预设语句
以下示例是从 Junos OS 默认组中可用于状态防火墙中的 FTP 的预设语句:
[edit] groups { junos-defaults { applications { application junos-ftp { # Use FTP default configuration application-protocol ftp; protocol tcp; destination-port 21; } } }
要引用 Junos OS 默认组中的预设 Junos OS 默认语句,请在适用的层级包含该junos-default-name
语句。例如,要在状态防火墙中引用 FTP 的 Junos OS 默认语句,请在[edit services stateful-firewall rule rule-name term term-name from applications]
层次结构级别包含该junos-ftp
语句。
[edit] services { stateful-firewall { rule my-rule { term my-term { from { applications junos-ftp; #Reference predefined statement, junos-ftp, } } } } }
以下示例显示了默认 Junos IP ALG 的配置:
[edit] services { stateful-firewall { rule r1 { match-direction input; term t1 { from { applications junos-ip; } then { accept; syslog; } } } } }
如果在状态防火墙规则中配置 IP ALG,则任何 IP 流量都会匹配该 IP ALG,但当任何其他更具体的应用程序与同一流量匹配时,IP ALG 将不匹配。例如,在以下配置中,同时配置了 ICMP ALG 和 IP ALG,但会为 ICMP 数据包匹配流量,因为它是更具体的匹配。
[edit] services { stateful-firewall { rule r1 { match-direction input; term t1 { from { applications [ junos-ip junos-icmp-all ]; } then { accept; syslog; } } } } }
另见
用于 MS-MIC 和 MS-MPC 的 ICMP、ping 和 Traceroute ALG
从 Junos OS 14.2 版开始,在 MS-MIC 和 MS-MPC 上预安装和预配置的 Junos OS 扩展提供程序包以与 uKernel 服务提供的支持一致的方式提供对 ping、traceroute 和 ICMP ALG 的支持。在 MS-MIC/MS-MPC 和 uKernel 服务之间为这些 ALG 建立了奇偶校验和统一的支持。在 Junos OS 14.1 版之前,与在 uKernel PIC 上通过有状态防火墙 (SFW) 支持网络地址转换 (NAT) 的 uKernel 服务相比,具有 MS-MIC 和 MS-MPC 的 MX 系列路由器并不完全支持 ICMP ALG、PING ALG 和跟踪路由 ALG。支持处理与任何现有流在相反方向上匹配的 ICMP 错误响应数据包,以及使用 NAT 处理 ping 数据包的 ICMP 数据包的 NAT 处理。
在具有 MS-MIC 和 MS-MPC 的 MX 系列路由器上,支持完全使用 ICMP 序列号跟踪 ping 流量状态(例如,仅当识别出具有相应序列号的回显请求时,才转发回显回复)。ICMP 应用层网关 (ALG) 已得到增强,可提供详细的日志记录信息。此外,traceroute ALG 支持处理 UDP 目的端口号大于 33000 且 IP 生存时间 (TTL) 小于 30 秒的 UDP 探测数据包。Traceroute ALG 支持处理 ICMP 类型超时的 ICMP 响应数据包,并支持 traceroute TTL 阈值,该阈值控制跟踪路由可接受的网络渗透级别。
您可以在和[edit services nat rule rule-name term term-name from]
层级使用application junos-icmp-all
、application junos-icmp-ping
、application icmp-code
和语句[edit services stateful-firewall rule rule-name term term-name from]
配置 ICMP 和 ping 消息,以定义状态防火墙和 NAT 规则的匹配条件。在 Junos OS 14.1 版之前,不存在对可为 ICMP 消息定义的应用程序的限制或验证。MS-MIC 和 MS-MPC 的工作方式与 uKernel 服务相同,这会导致使用 ICMP 序列号有状态地跟踪 ping 流量(仅当具有相应序列号的回显请求匹配时,才会转发回显回复)。此外,MS-MIC 和 MS-MPC 对未完成的 ping 请求施加限制,并在达到限制时丢弃后续 ping 请求。
同样,对于 traceroute 消息,可以在和 [edit services nat rule rule-name term term-name from]
层次结构级别配置application junos-traceroute
和 application junos-traceroute-ttl-1
语句[edit services stateful-firewall rule rule-name term term-name from]
,以便为状态防火墙和 NAT 规则的 traceroute 消息定义匹配条件。
IPv4 和 IPv6 数据包都支持 Traceroute 和 ICMP 消息。要使 traceroute 功能正常工作,您只需确保用户定义的应用程序在非活动超时期间按预期工作,并将 TTL 阈值配置为与在层次结构级别使用 session-timeout seconds
语句 [edit services application-identification application application-name]
配置的时间段相同。在记录 ICMP 消息期间,ping 和 ICMP 实用程序的 ALG 信息将显示在相关 show 命令的输出中,例如 show sessions
show conversations
和 ,其显示方式与 uKernel 日志记录的显示方式相同。
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能浏览器 查看您使用的平台是否支持某项功能。