TFTP ALG
简单文件传输协议 (TFTP) ALG 处理向 UDP 目标端口 69 发起请求的 TFTP 数据包,并打开一个门以允许从相反方向返回数据包到发送请求的端口。支持状态防火墙和 NAT 服务需要为 UDP 目标端口 69 配置 TFTP ALG。
使用 功能浏览器 确认平台和版本对特定功能的支持。
查看 特定于平台的 TFTP ALG 行为 部分,了解与您的平台相关的说明。
了解 TFTP ALG
概述
简单文件传输协议 (TFTP) 是用于文件传输 (RFC 1350) 的简单协议。TFTP 是在 UDP 之上实现的,目标端口 69 是众所周知的端口。TFTP 应用层网关 (ALG) 处理发起请求的 TFTP 数据包并创建针孔以允许从相反方向返回数据包。
在流处理中,一个 TFTP 对话有两个会话,一个是由读取请求 (RRQ) 或写入请求 (WRQ) 数据包创建的 TFTP 控制会话;另一个是由 DATA 数据包(用于 RRQ)或确认 (ACK) 数据包(用于 WRQ)创建的 TFTP 数据会话。
在 Junos OS 防火墙中,通过 junos-tftp 应用程序策略允许 TFTP 控制会话。当收到控制会话数据包时,允许数据会话通过 TFTP ALG 开放针孔从服务器的任何端口到客户端的 TID(端口)。不需要 NAT 转换,因为已经执行了 NAT 转换,并且可以从会话数据结构中获得信息。
TFTP 数据包
任何传输都从读取或写入文件的请求开始。小于 512 字节的数据包表示传输终止。
TFTP 支持五种类型的数据包:
读取请求 (RRQ)
写入请求 (WRQ)
数据 (DATA)
确认 (ACK)
错误 (ERROR)
TFTP 会话
TFTP ALG 基于 UDP,这是一种无状态传输协议。在防火墙中,TFTP ALG 充当具有超时功能的 UDP 会话。如果没有数据包刷新会话,则该会话将在超时后终止。尽管 TFTP 客户端和服务器决定了 TFTP 会话的终止,但它们有时并不知道 Fireware 中的会话。因此,在这种情况下,客户端和服务器可以请求新的 TFTP 对话。
TFTP ALG 会话可通过以下任一方式进行:
当 TFTP 控制会话达到超时时,如果数据会话仍处于活动状态,则会话不会终止。
无论数据会话是否正在进行中,TFTP 会话都可能被
clear security flow session all或clear specific sessionCLI 命令终止或损坏。如果新的 TFTP 会话请求到达并到达现有会话,TFTP ALG 将再次为新请求打开针孔。
如果针孔已存在,TFTP ALG 将不会再次打开针孔,也不会出现丢包的情况。
TFTP ALG 不会丢弃任何数据包。
了解 TFTP ALG 对话
默认情况下,TFTP 服务器侦听来自端口 69 上的 TFTP 客户端的传入请求。TFTP 客户端选择其源隧道标识符 (TID) 端口,并将其初始请求发送到服务器。作为响应,服务器使用选择的 TID 作为源端口,并向客户端的 TID 作为目标端口发送响应。然后,这两个 TID 端口将用于其余的数据传输。
Read file conversation steps:
主机 A(客户端)向主机 B(服务器)发送 RRQ 数据包,其中 A 的 TID 为源,端口 69 为目标。
主机 B(服务器)向主机 A(客户端)发送 DATA 数据包,其中 B 的 TID 为源,A 的 TID 为目标。
主机 A(客户端)向主机 B(服务器)发送 ACK 数据包,其中 A 的 TID 为源,B 的 TID 为目标。
DATA 和 ACK 数据包对话继续进行,直到文件数据传输完成。
Write file conversation steps:
主机 A(客户端)向主机 B(服务器)发送 WRQ 数据包,其中 A 的 TID 为源,端口 69 为目标。
主机 B(服务器)向主机 A(客户端)发送 ACK 数据包,其中 B 的 TID 为源,A 的 TID 为目标。
主机 A(客户端)向主机 B(服务器)发送 DATA 数据包,其中 A 的 TID 为源,B 的 TID 为目标。
主机 B(服务器)向主机 A(客户端)发送 ACK 数据包,其中 B 的 TID 为源,A 的 TID 为目标。
了解 TFTP ALG 的 IPv6 支持
简单文件传输协议 (TFTP) 应用层网关 (ALG) 已得到增强,可支持 IPv6 和 IPv4 TFTP 对话,该对话具有源 IP 地址和目标 IP 地址的 IPv6 和 IPv4 地址。
TFTP ALG 处理发起路由请求的数据包,并创建针孔,以允许数据包从相反方向返回到发送请求的端口。
数据会话由从客户端到服务器的第一个数据包建立。TFTP ALG 监控第一个数据包,并打开从服务器上任何端口到客户端的针孔。此过程有助于从服务器返回的数据包和后续数据包通过。
示例:配置 TFTP ALG
TFTP ALG 处理发起请求的 TFTP 数据包,并打开一个门,允许将数据包从相反方向返回到发送请求的端口。
此示例说明如何将 TFTP ALG 配置为通过瞻博网络设备上的源 NAT 池传递 TFTP 流量。
要求
为源 NAT 池中的所有 IP 地址配置代理 ARP。
了解 TFTP ALG 的基本概念。请参阅 了解 TFTP ALG。
概述
在此示例中,TFTP ALG 配置为监控和允许 TFTP 流量,并在位于瞻博网络设备相对两侧的客户端和服务器之间传输文件。
配置
配置 NAT 源池、规则集和策略
CLI 快速配置
要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层 [edit] 级的 CLI 中,然后从配置模式进入 commit 。
set security nat source pool pool1 address 10.10.10.1/32 to 10.10.10.10/32 set security zones security-zone green address-book address sa1 1.1.1.0/24 set security zones security-zone red address-book address da1 2.2.2.0/24 set security nat source rule-set rs1 from zone green set security nat source rule-set rs1 to zone red set security nat source rule-set rs1 rule r1 match source-address 1.1.1.0/24 set security nat source rule-set rs1 rule r1 match destination-address 2.2.2.0/24 set security nat source rule-set rs1 rule r1 then source-nat pool pool1
set security policy from-zone green to-zone red policy pol1 match destination-address da1 set security policy from-zone green to-zone red policy pol1 match source-address sa1 set security policy from-zone green to-zone red policy pol1 match application junos-tftp set security policy from-zone green to-zone red policy pol1 then permit
如果您不确定 TFTP 客户端和服务器 IP 地址,可以将“da1”和“sa1”替换为“any”。
分步过程
下面的示例要求您在各个配置层级中进行导航。有关作说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。
要配置源 NAT 池,请执行以下作:
创建 NAT 源池。
[edit security] user@host# set nat source pool pool1 address 10.10.10.1/32 to 10.10.10.10/32
配置安全区域通讯簿条目。
[edit security zones security-zone] user@host# set green address-book address sa1 1.1.1.0/24 user@host# set red address-book address da1 2.2.2.0/24
创建 NAT 源规则集。
[edit security nat source rule-set rs1] user@host# set from zone green user@host# set to zone red user@host# set rule r1 match source-address 1.1.1.0/24 user@host# set rule r1 match destination-address 2.2.2.0/24 user@host# set rule r1 then source-nat pool pool1
配置策略
[edit security policies from-zone green to-zone red policy pol1] user@host# set match source-address sa1 user@host# set match destination-address da1 user@host# set match application junos-tftp user@host# set then permit
结果
在配置模式下,输入 show security nat 和 show security policies 命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。
[edit]
user@host# show security nat
source {
pool pool1 {
address {
10.10.10.1/32 to 10.10.10.10/32;
}
}
rule-set rs1 {
from zone green;
to zone red;
rule r1 {
match {
source-address 1.1.1.0/24;
destination-address 2.2.2.0/24;
}
then {
source-nat {
pool {
pool1;
}
}
}
}
}
[edit]
user@host# show security policies
from-zone green to-zone red {policy pol1 {
policy pol1 {
match {
source-address sa1;
destination-address da1;
application [junos-tftp];
}
then {
permit;
}
}
}
default-policy {
permit-all;
}
如果完成设备配置,请从配置模式输入 commit 。
验证
确认配置工作正常。
验证 NAT 源池和规则集
目的
验证用于支持 TFTP ALG 的 NAT 源池和规则集是否工作正常。
行动
在作模式下,输入 show security nat static rule r1 命令。
特定于平台的 TFTP ALG 行为
使用 功能浏览器 确认平台和版本对特定功能的支持。
使用下表查看您的平台特定于平台的行为:
| 平台 |
差异 |
|---|---|
| SRX 系列 |
|