本页内容
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 的过程。
拓扑结构
配置 DNS ALG
图中的瞻博网络路由器分两个步骤执行地址转换。当笔记本电脑请求与仅支持 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
只需要设备名称,因为路由器软件会自动管理逻辑单元号。服务接口必须是自适应服务接口,您在配置接口中的层次结构级别已
[edit interfaces interface-name]为其配置了单元 0 系列 INET。
结果
以下示例输出显示了服务集的配置。
[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;
}
}