DNS ALG
域名系统 (DNS) 应用层网关 (ALG) 服务处理与定位域名并将其转换为 IP 地址相关的数据。ALG 通常在端口 53 上运行。ALG 监控 DNS 查询和回复数据包,仅支持 UDP 流量。
使用 功能浏览器 确认平台和版本对特定功能的支持。
查看特定于平台的 DNS ALG 行为 部分,了解与您的平台相关的说明。
DNS ALG 概述
DNS 应用层网关 (ALG) 服务提供用于 DNS 客户端的应用程序级网关。DNS ALG 服务允许客户端访问不同网络中的多个 DNS 服务器,并提供与这些服务器之间的路由。它还支持 DNS 查询和响应数据包的灵活地址转换。这些函数允许 DNS 客户端从网络客户端上的单个 DNS 服务器实例查询许多不同的域。
DNS 服务器通过 UDP 端口 53 侦听来自 DNS 解析器的传入查询。解析程序通过发送 DNS 查询和处理 DNS 响应来与 DNS 服务器通信。
DNS ALG 的默认端口为端口 53。
DNS ALG 执行以下功能:
监控 DNS 查询和回复数据包,并在收到 DNS 回复时关闭会话
执行 DNS 篡改
执行 IPv4 和 IPv6 地址转换
域名系统 (DNS) 最初设计用于支持对静态配置数据库的查询,并且数据预期会发生变化。
除了 DNS 标准之外,现在还提供动态 DNS (DDNS) 支持。DNS 和 DDNS 之间的主要区别在于标题部分和更新消息的消息格式。
与 DNS 消息相比,DDNS 消息的处理方式不同。为 DDNS 重写消息解析。DDNS 在邮件的查询部分执行 NAT 和 NAT-PT,DNS 在邮件的响应部分执行 NAT 和 NAT-PT。
另见
示例:配置 DNS ALG
此示例说明如何将 DNS ALG 配置为通过瞻博网络设备上的静态 NAT 池传递 DNS 流量。
要求
开始之前:
为所有 IP 地址配置静态 NAT 池。
了解适用于 DNS 的 ALG 背后的概念。请参阅 DNS ALG 概述。
概述
在此示例中,适用于 DNS 的 ALG 配置为监控并允许在位于瞻博网络设备相对端的客户端和服务器之间交换 DNS 流量。
此示例说明如何配置静态 NAT 池和规则集,以及如何将 DNS ALG 与策略相关联。
配置
配置 NAT 静态池和规则集
CLI 快速配置
要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层 [edit]
级的 CLI 中,然后从配置模式进入 commit
。
set security nat static rule-set rs1 from zone untrust set security nat static rule-set rs1 rule r1 match destination-address 203.0.113.100 set security nat static rule-set rs1 rule r1 then static-nat prefix 192.0.2.100 set security policies from-zone untrust to-zone trust policy u2t match source-address any set security policies from-zone untrust to-zone trust policy u2t match destination-address any set security policies from-zone untrust to-zone trust policy u2t match application junos-dns-udp set security policies from-zone untrust to-zone trust policy u2t then permit
分步过程
下面的示例要求您在各个配置层级中进行导航。有关作说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。
要配置静态 NAT 池,请执行以下作:
创建 NAT 静态规则集。
[edit] user@host# set security nat static rule-set rs1 from zone untrust user@host# set security nat static rule-set rs1 rule r1 match destination-address 203.0.113.100 user@host# set security nat static rule-set rs1 rule r1 then static-nat prefix 192.0.2.100
使用策略关联 DNS 应用程序。
[edit] user@host# set security policies from-zone untrust to-zone trust policy u2t match source-address any user@host# set security policies from-zone untrust to-zone trust policy u2t match destination-address any user@host# set security policies from-zone untrust to-zone trust policy u2t match application junos-dns-udp user@host# set security policies from-zone untrust to-zone trust policy u2t then permit
结果
在配置模式下,输入 show security nat
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。
user@host# show security nat static { rule-set rs1 { from zone untrust; rule r1 { match { destination-address 203.0.113.100; } then { static-nat { prefix { 192.0.2.100; } } } } } }
[edit] user@host# show security policies from-zone untrust to-zone trust { policy u2t { match { source-address any; destination-address any; application [ junos-dns-udp]; } then { permit; } } } default-policy { permit-all; }
如果完成设备配置,请从配置模式输入 commit
。
验证
要确认配置工作正常,请执行以下任务:
验证 DNS ALG
目的
验证是否已启用 DNS 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 : Disabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled
意义
输出显示 DNS ALG 已启用。
验证 DNS ALG 安全流会话
目的
验证是否已启用 ALG 安全流会话。
行动
在作模式下,输入 show security flow session application dns extensive
命令。
user@host> show security flow session application dns extensive Session ID: 24088, Status: Normal Flags: 0x40/0x0/0x2/0x2000103 Policy name: unt2tru/6 Source NAT pool: Null, Application: junos-dns-udp/16 Dynamic application: junos:UNKNOWN, Encryption: Unknown Application traffic control rule-set: INVALID, Rule: INVALID Maximum timeout: 60, Current timeout: 56 Session State: Valid Start time: 658866, Duration: 10 In: 192.0.2.0/38926 --> 198.51.100.0/53;udp, Conn Tag: 0x0, Interface: ge-0/0/3.0, Session token: 0xa, Flag: 0x621 Route: 0x110010, Gateway: 192.0.2.0, Tunnel: 0 Port sequence: 0, FIN sequence: 0, FIN state: 0, Pkts: 2, Bytes: 116 Out: 198.51.100.0/53 --> 192.0.2.0/38926;udp, Conn Tag: 0x0, Interface: ge-0/0/2.0, Session token: 0x9, Flag: 0x620 Route: 0x100010, Gateway: 198.51.100.0, Tunnel: 0 Port sequence: 0, FIN sequence: 0,
意义
输出显示存在利用 DNS ALG 的活动流。
了解 DNS 和 DDNS 篡改
Junos OS 支持 ALG 的域名系统 (DNS)。DNS ALG 监视 DNS 查询和回复数据包,如果 DNS 标志指示数据包是回复消息,则关闭会话。要配置 DNS ALG,请在[edit security alg]
层次结构级别使用edit security alg dns
语句。
DNS 在路由类中提供名称到地址的映射,而网络地址转换 (NAT) 尝试在同一路由类的不同地址领域中的主机之间提供透明的路由。因此,NAT 可能会导致一些 DNS 问题,DNG ALG 必须通过称为 DNS 篡改的过程来处理。
动态域名系统 (DDNS) 也适用相同的篡改功能。对于 NAT 模式下的 DDNS,您还可以在 DDNS 更新中进行 IP 转换。
为了解决 NAT 引入的问题,DNS 和 DDNS ALG 功能已扩展为支持静态 NAT,允许通过 DNS 篡改来解决这些问题。
恢复和篡改过程分两部分进行:
-
Packet sanity check
对于 DNS 数据包,DNS ALG 检查字段包括问题、答案、授权和附加信息。如果问题数超过 1、域名超过 255 字节或标签长度超过 63 字节,DNS ALG 将丢弃数据包。
对于 DDNS 数据包,DNS ALG 检查字段包括区域、先决条件、更新和附加数据。如果区域数超过 1、域名超过 255 字节或标签长度超过 63 个字节,DNS ALG 将丢弃数据包。
对于 DNS 和 DDNS,DNS ALG 会丢弃不符合标准的数据包。
-
NAT
图 2 显示了 DNS 如何将私有地址转换为公共地址。

当 external.com 中的主机 X 希望通过 DNS 解析主机 A 的地址时,如果 DNS ALG 不支持 NAT,它将采用一个专用地址,例如 172.19.1.10,该地址对主机 X 无效。私有地址通过 DNS ALG 转换为公用地址 10,131.108.10。
图 3 显示了 DNS 如何将公共地址转换为私有地址。

当 private.com 中的主机 A 希望通过 DNS 解析主机 B 的地址时,如果 DNS ALG 不支持 NAT,则它会从 external.com 中的 DNS 服务器获取公共地址,例如 10.131.108.8。如果主机 A 向公网地址为 10.131.108.8 的主机 B 发送流量,则该地址对私域中的主机 B 无效。因此,DNS 查询 A 记录中的公共地址通过 DNS ALG 转换为专用地址 172.19.2.1。
DNS ALG 可以在单个 DNS 回复中转换前 32 条 A 记录。不处理前 32 条记录之后的 A 记录。另请注意,DNS ALG 支持 IPv4 和 IPv6 地址,不支持 VPN 隧道。
禁用 DNS 和 DDNS 刮经
必须在设备上启用 DNS ALG 才能执行 DNS 和 DDNS 篡改。在设备上启用 DNS ALG 后,默认情况下会启用 DNS 和 DDNS 改动功能。您可以使用 CLI 禁用 DNS 和 DDNS 篡改。
要禁用 DNS 和 DDNS 篡改:
-
通过指定
none
配置选项来禁用所有修改功能。此命令禁用所有篡改功能。
user@host#
set security alg dns doctoring none
-
通过指定
sanity-check
配置选项,禁用 NAT 功能并保留健全性检查功能。此选项将禁用 NAT 功能并保留健全性检查功能。
user@host#
set security alg dns doctoring sanity-check
-
完成设备配置后,请提交配置。
-
要验证配置,请使用 vty 命令 show usp algs dns stats。
特定于平台的 DNS ALG 行为
使用 功能浏览器 确认平台和版本对特定功能的支持。
使用下表查看您的平台特定于平台的行为:
平台 |
差异 |
---|---|
SRX 系列 |
|