本页内容
NAT 协议转换
配置 NAT-PT
要将转换类型配置为 basic-nat-pt
,必须配置 DNS ALG 应用程序、NAT 池和规则、带有服务接口的服务集以及追踪选项。如果您使用的是 MS-MPC 或 MS-MIC,则不支持配置 NAT-PT。本主题包含以下任务:
配置 DNS ALG 应用程序
要配置 DNS ALG 应用程序,请执行以下作:
配置 NAT 池和 NAT 规则
要配置 NAT 池和 NAT 规则,请执行以下作:
为 NAT 配置服务集
要为 NAT 配置服务集,请执行以下作:
配置追踪选项
要配置追踪选项,请执行以下作:
以下示例将转换类型配置为 basic-nat-pt。
[edit] user@host# show services service-set ss_dns { nat-rules rule-basic-nat-pt; interface-service { service-interface sp-1/2/0; } } nat { pool p1 { address 10.10.10.2/32; } pool src_pool0 { address 20.1.1.1/32; } pool dst_pool0 { address 50.1.1.2/32; } rule rule-basic-nat-pt { match-direction input; term t1 { from { source-address { 2000::2/128; } destination-address { 4000::2/128; } applications dns_alg; } then { translated { source-pool src_pool0; destination-pool dst_pool0; dns-alg-prefix 2001:db8:10::0/96; translation-type { basic-nat-pt; } } } } term t2 { from { source-address { 2000::2/128; } destination-address { 2001:db8:10::0/96; } } then { translated { source-prefix 19.19.19.1/32; translation-type { basic-nat-pt; } } } } } } adaptive-services-pics { traceoptions { flag all; } }
示例:配置 NAT-PT
域名系统应用级网关 (DNS ALG) 与网络地址转换协议转换 (NAT-PT) 配合使用,以促进名称到地址的映射。您可以配置 DNS ALG 以将 DNS 响应中返回的地址映射到 IPv6 地址。如果您使用的是 MS-MPC 或 MS-MIC,则不支持配置 NAT-PT。
使用 DNS ALG 支持配置 NAT-PT 时,必须配置两个 NAT 规则或一个包含两个术语的规则。在此示例中,您将配置两个规则。第一个 NAT 规则可确保正确转换 DNS 查询和响应数据包。若要使此规则正常工作,必须配置 DNS ALG 应用程序并在规则中引用它。需要第二条规则来确保 NAT 会话发往 DNS ALG 映射的地址。
然后,您必须配置一个服务集,然后将该服务集应用于接口。
此示例介绍如何使用 DNS ALG 配置 NAT-PT:
要求
此示例使用以下硬件和软件组件:
Junos OS 11.2 版
多服务接口 (ms-)
概述和拓扑
以下方案显示了当仅 IPv6 域中的笔记本电脑请求访问仅 IPv4 域中的服务器时,使用 DNS ALG 的 NAT-PT 过程。
拓扑学

图中央的瞻博网络路由器分两个步骤执行地址转换。当笔记本电脑请求与仅支持 IPv4 的 www.example.com 服务器的会话时,瞻博网络路由器将执行以下作:
将 IPv6 笔记本电脑和 DNS 服务器地址转换为 IPv4 地址。
将笔记本电脑发出的 AAAA 请求转换为 A 请求,以便 DNS 服务器可以提供 IPv4 地址。
当 DNS 服务器响应 A 请求时,瞻博网络路由器将执行以下作:
将 IPv4 DNS 服务器地址转换回 IPv6 地址。
将 A 请求转换回 AAAA 请求,以便笔记本电脑现在具有 www.example.com 服务器的 96 位 IPv6 地址。
笔记本电脑收到 IPv6 版本的 www.example.com 服务器地址后,笔记本电脑将使用 96 位 IPv6 地址启动第二个会话以访问该服务器。瞻博网络路由器执行以下作:
将笔记本电脑 IPv4 地址直接转换为其 IPv4 地址。
将 96 位 IPv6 www.example.com 服务器地址转换为其 IPv4 地址。
使用 DNS ALG 配置 NAT-PT
要使用 DNS ALG 配置 NAT-PT,请执行以下任务:
配置应用级网关
分步过程
将 DNS 应用程序配置为 DNS 流量的目标 ALG。一旦收到 DNS 响应,DNS 应用程序协议就会关闭 DNS 流。配置 DNS 应用程序协议时,必须将 UDP 协议指定为应用程序定义中要匹配的网络协议。
要配置 DNS 应用程序,请执行以下作:
在配置模式下,转到
[edit applications]
层级。user@host# edit applications
定义应用程序名称,并指定要在第一个 NAT 规则的匹配条件中使用的应用程序协议。
[edit applications] user@host# set application application-name application-protocol protocol-name
例如:
[edit applications] user@host# set application dns_alg application-protocol dns
指定要匹配的协议,在本例中为 UDP。
[edit applications] user@host# set application application-name protocol type
例如:
[edit applications] user@host# set application dns_alg protocol udp
定义用于其他数据包匹配的 UDP 目标端口,在本例中为域端口。
[edit applications] user@host# set application application-name destination-port value
例如:
[edit applications] user@host# set application dns_alg destination-port 53
结果
[edit applications] user@host# show application dns_alg { application-protocol dns; protocol udp; destination-port 53; }
配置 NAT 池
分步过程
在此配置中,您将配置两个池来定义用于 NAT 的地址(或前缀)。这些池定义转换为 IPv6 地址的 IPv4 地址。第一个池包含源的 IPv4 地址。第二个池定义 DNS 服务器的 IPv4 地址。要配置 NAT 池,请执行以下作:
在配置模式下,转到
[edit services nat]
层级。user@host# edit services nat
指定第一个池的名称和 IPv4 源地址(笔记本电脑)。
[edit services nat] user@host# set pool nat-pool-name address ip-prefix
例如:
[edit services nat] user@host# set pool pool1 address 40.1.1.1/32
指定第二个池的名称和 DNS 服务器的 IPv4 地址。
[edit services nat] user@host# set pool nat-pool-name address ip-prefix
例如:
[edit services nat] user@host# set pool pool2 address 50.1.1.1/32
结果
以下示例输出显示了 NAT 池的配置。
[edit services nat] user@host# show pool pool1 { address 40.1.1.1/32; } pool pool2 { address 50.1.1.1/32; }
配置 DNS 服务器会话:第一个 NAT 规则
分步过程
第一个 NAT 规则应用于流向 DNS 服务器的 DNS 流量。此规则可确保正确转换 DNS 查询和响应数据包。若要使此规则正常工作,必须配置 DNS ALG 应用程序并在规则中引用它。DNS 应用程序已在 配置 NAT-PT 中配置。此外,还必须指定流量匹配的方向、笔记本电脑的源地址、DNS 服务器的目标地址以及满足匹配条件时要执行的作。
要配置第一个 NAT 规则,请执行以下作:
在配置模式下,转到
[edit services nat]
层级。user@host# edit services nat
指定 NAT 规则的名称。
[edit services nat] user@host# edit rule rule-name
例如:
[edit services nat] user@host# edit rule rule1
指定 NAT 术语的名称。
[edit services nat rule rule-name] user@host# edit term term-name
例如:
[edit services nat rule rule1] user@host# edit term term1
定义此规则的匹配条件。
指定尝试访问 IPv4 地址的设备(笔记本电脑)的 IPv6 源地址。
[edit services nat rule rule-name term term-name] user@host# set from source-address source-address
例如:
[edit services nat rule rule1 term term1] user@host# set from source-address 2000::2/128
指定 DNS 服务器的 IPv6 目标地址。
[edit services nat rule rule-name term term-name] user@host# set from destination-address prefix
例如:
[edit services nat rule rule1 term term1] user@host# set from destination-address 4000::2/128
引用应用发往端口 53 的 DNS 流量的 DNS 应用程序。
[edit services nat rule rule1 term term1] user@host# set from applications application-name
在此示例中,在 配置 DNS 应用程序 步骤中配置的应用程序名称 dns_alg:
[edit services nat rule rule1 term term1] user@host# set from applications dns_alg
定义满足匹配条件时要执行的作。您在 配置 NAT 池中配置的 源池和目标池将应用到此处。
应用为源转换配置的 NAT 池。
[edit services nat rule rule-name term term-name] user@host# set then translated source-pool nat-pool-name
例如:
[edit services nat rule rule1 term term1] user@host# set then translated source-pool pool1
应用为目标转换配置的 NAT 池。
[edit services nat rule rule-name term term-name] user@host# set then translated destination-pool nat-pool-name
例如:
[edit services nat rule rule1 term term1] user@host# set then translated source-pool pool2
为 IPv4 到 IPv6 地址映射定义 DNS ALG 96 位前缀。
[edit services nat rule rule-name term term-name] user@host# set then translated dns-alg-prefix dns-alg-prefix
例如:
[edit services nat rule rule1 term term1] user@host# set then translated dns-alg-prefix 10:10:10::0/96
指定用于源流量和目标流量的 NAT 类型。
[edit services nat rule rule-name term term-name] user@host# set then translated translation-type basic-nat-pt
例如:
[edit services nat rule rule1 term term1] user@host# set then translated translation-type basic-nat-pt
注意:在此示例中,由于 NAT 是使用仅地址转换实现的,因此使用 basic-nat-pt 转换类型。要使用地址和端口转换 (NAPT) 实现 NAT,请使用 napt-pt 转换类型。
指定匹配符合规则条件的流量的方向。
[edit services nat rule rule-name] user@host# set match-direction (input | output)
例如:
[edit services nat rule rule1] user@host# set match-direction input
配置系统日志记录以记录从服务接口到 /var/log 目录的信息。
[edit services nat rule rule-name term term-name] user@host# set then syslog
例如:
[edit services nat rule rule1 term term1] user@host# set then syslog
结果
以下示例输出显示了转到 DNS 服务器的第一个 NAT 规则的配置。
[edit services nat] user@host# show rule rule1 { match-direction input; term term1 { from { source-address { 2000::2/128; } destination-address { 4000::2/128; } applications dns_alg; } then { translated { source-pool pool1; destination-pool pool2; dns-alg-prefix 10:10:10::0/96; translation-type { basic-nat-pt; } } syslog; } } }
配置 HTTP 会话: 第二个 NAT 规则
分步过程
第二个 NAT 规则应用于流向 IPv4 服务器 (www.example.com) 的目标流量。此规则可确保 NAT 会话发往 DNS ALG 映射的地址。要使此规则正常工作,您必须配置 DNS ALG 地址映射,将第一个规则执行的 DNS 查询或响应处理与第二个规则处理的实际数据会话相关联。此外,还必须指定流量匹配的方向:IPv6 源地址(笔记本电脑)的 IPv4 地址、要前置到 IPv4 目标地址 (www.example.com) 的 96 位前缀以及转换类型。
要配置第二个 NAT 规则,请执行以下作:
在配置模式下,转到以下层级。
user@host# edit services nat
指定 NAT 规则和期限的名称。
[edit services nat] user@host# edit rule rule-name term term-name
例如:
[edit services nat] user@host# edit rule rule2 term term1
定义此规则的匹配条件:
指定尝试访问 IPv4 服务器的设备的 IPv6 地址。
[edit services nat rule rule-name term term-name] user@host# set from source-address source-address
例如:
[edit services nat rule rule2 term term1] user@host# set from source-address 2000::2/128
指定要前置到 IPv4 服务器地址的 96 位 IPv6 前缀。
[edit services nat rule rule-name term term-name] user@host# set from destination-address prefix
例如:
[edit services nat rule rule2 term term1] user@host# set from destination-address 10:10:10::c0a8:108/128
定义满足匹配条件时要执行的作。
指定用于转换 IPv6 源地址的前缀。
[edit services nat rule rule-name term term-name] user@host# set then translated source-prefix source-prefix
例如:
[edit services nat rule rule2 term term1] user@host# set then translated source-prefix 19.19.19.1/32
指定用于源流量和目标流量的 NAT 类型。
[edit services nat rule rule-name term term-name] user@host# set then translated translation-type basic-nat-pt
例如:
[edit services nat rule rule2 term term1] user@host# set then translated translation-type basic-nat-pt
注意:在此示例中,由于 NAT 是使用仅地址转换实现的,因此使用 basic-nat-pt 转换类型。若要使用地址和端口转换 (NAPT) 实现 NAT,必须使用 napt-pt 转换类型。
指定匹配满足规则条件的流量的方向。
[edit services nat rule rule-name] user@host# set match-direction (input | output)
例如:
[edit services nat rule rule2] user@host# set match-direction input
结果
以下示例输出显示了第二个 NAT 规则的配置。
[edit services nat] user@host# show rule rule2 { match-direction input; term term1 { from { source-address { 2000::2/128; } destination-address { 10:10:10::c0a8:108/128; } } then { translated { source-prefix 19.19.19.1/32; translation-type { basic-nat-pt; } } } } }
配置服务集
分步过程
此服务集是一个接口服务集,用作整个服务 (ms-) 接口的作修饰符。有状态防火墙和 NAT 规则集应用于服务接口处理的流量。
要配置服务集,请执行以下作:
在配置模式下,转到
[edit services]
层级。user@host# edit services
定义服务集。
[edit services] user@host# edit service-set service-set-name
例如:
[edit services] user@host# edit service-set ss
指定用于控制如何为服务集生成系统日志消息的属性。
[edit services service-set ss] user@host# set syslog host local services severity-level
以下示例包括所有严重性级别。
[edit services service-set ss] user@host# set syslog host local services any
指定此服务集中包含的状态防火墙规则。
[edit services service-set ss] user@host# set stateful-firewall-rules rule1 severity-level
以下示例引用 配置有状态防火墙规则中定义的有状态防火墙规则。
[edit services service-set ss] user@host# set stateful-firewall-rules rule1
定义此服务集中包含的 NAT 规则。
[edit services service-set ss] user@host# set nat-rules rule-name
以下示例引用此配置示例中定义的两个规则。
[edit services service-set ss user@host# set nat-rules rule1 user@host# set nat-rules rule2
配置要在其上执行服务的自适应服务接口。
[edit services service-set ss] user@host# set interface-service service-interface interface-name
例如:
[edit services service-set ss user@host# interface-service service-interface ms-2/0/0
只需要设备名称,因为路由器软件会自动管理逻辑单元号。服务接口必须是自适应服务接口,且已在配置接口中的层次结构级别为其配置了单元 0 家族 inet
[edit interfaces interface-name]
。
结果
以下示例输出显示了服务集的配置。
[edit services] user@host# show service-set ss { syslog { host local { services any; } } stateful-firewall-rules rule1; nat-rules rule1; nat-rules rule2; interface-service { service-interface ms-2/0/0; } }
配置状态防火墙规则
分步过程
此示例使用状态防火墙检查数据包中是否有从过去的通信和其他应用程序派生的状态信息。NAT-PT 路由器会检查与规则指定的方向匹配的流量,在本例中包括输入和输出。将数据包发送到服务 (ms-) 接口时,会附带方向信息。
要配置状态式防火墙规则,请执行以下作:
在配置模式下,转到
[edit services stateful firewall]
层级。user@host# edit services stateful firewall
指定状态防火墙规则的名称。
[edit services stateful-firewall] user@host# edit rule rule-name
例如:
[edit services stateful-firewall] user@host# edit rule rule1
指定流量匹配的方向。
[edit services stateful-firewall rule rule-name] user@host# set match-direction (input | input-output | output)
例如:
[edit services stateful-firewall rule rule1] user@host# set match-direction input-output
指定状态防火墙术语的名称。
[edit services stateful-firewall rule rule-name] user@host# edit term term-name
例如:
[edit services stateful-firewall rule rule1] user@host# edit term term1
定义构成此规则的术语。
[edit services stateful-firewall rule rule-name term term-name] user@host# set then accept
例如:
[edit services stateful-firewall rule rule1 term term1] user@host# set then accept
结果
以下示例输出显示了服务状态式防火墙的配置。
[edit services] user@host# show stateful-firewall { rule rule1 { match-direction input-output; term term1 { then { accept; } } } }
配置接口
分步过程
定义服务集后,必须将服务应用于路由器上安装的一个或多个接口。在此示例中,您将配置一个接口,在其上应用输入和输出流量的服务集。将服务集应用于接口时,它会自动确保数据包定向到服务 (ms-) 接口。
要配置接口,请执行以下作:
在配置模式下,转到
[edit interfaces]
层级。user@host# edit interfaces
配置应用服务集的接口,以自动确保数据包定向到服务 (ms-) 接口。
对于 IPv4 流量,请指定 IPv4 地址。
[edit interfaces] user@host# set ge-1/0/9 unit 0 family inet address 30.1.1.1/24
应用 配置接口中定义的服务集。
[edit interfaces] user@host# set ge-1/0/9 unit 0 family inet6 service input service-set ss user@host# set ge-1/0/9 unit 0 family inet6 service output service-set ss
对于 IPv6 流量,请指定 IPv6 地址。
[edit interfaces] user@host# set ge-1/0/9 unit 0 family inet6 address 2000::1/64
指定执行服务的服务接口的接口属性。
[edit interfaces] user@host# set ms-2/0/0 services-options syslog host local services any user@host# set ms-2/0/0 unit 0 family inet user@host# set ms-2/0/0 unit 0 family inet6
结果
以下示例输出显示了此示例的接口配置。
[edit interfaces] user@host# show ge-1/0/9 { unit 0 { family inet { address 30.1.1.1/24; } family inet6 { service { input { service-set ss; } output { service-set ss; } } address 2000::1/64; } } } ms-2/0/0 { services-options { syslog { host local { services any; } } } unit 0 { family inet; family inet6; } }