このページの内容
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応答で返されたアドレスをIPv6アドレスにマッピングするように、DNS ALGを設定できます。MS-MPCまたはMS-MICを使用している場合、NAT-PTの設定はサポートされていません。
DNS ALGをサポートするNAT-PTを設定する場合、2つのNATルールまたは2つの条件を持つ1つのルールを設定する必要があります。この例では、2つのルールを設定します。最初のNATルールは、DNSクエリと応答パケットが正しく変換されていることを確認します。このルールを機能させるには、DNS ALGアプリケーションを設定し、ルール内で参照する必要があります。2つ目のルールは、NATセッションがDNS ALGによってマッピングされたアドレスに送信されるようにするために必要です。
次に、サービスセットを設定し、そのサービスセットをインターフェイスに適用する必要があります。
この例では、DNS ALGでNAT-PTを設定する方法について説明します。
要件
この例では、以下のハードウェアおよびソフトウェアコンポーネントを使用しています。
Junos OSリリース11.2
マルチサービスインターフェイス(ms-)
概要とトポロジー
以下のシナリオは、IPv6 専用ドメインのラップトップが IPv4 専用ドメインのサーバーへのアクセスを要求した場合の、DNS ALG を使用した NAT-PT のプロセスを示しています。
トポロジー
によるDNS ALGの設定
図中央のジュニパーネットワークスルーターは、2つのステップでアドレス変換を実行します。ラップトップがIPv4専用ドメインにある www.example.com サーバーとのセッションを要求すると、ジュニパーネットワークスルーターは以下を実行します。
IPv6ラップトップとDNSサーバーのアドレスをIPv4アドレスに変換します。
DNSサーバーがIPv4アドレスを提供できるように、ラップトップからのAAAAリクエストをAリクエストに変換します。
DNS サーバーが A リクエストを応答すると、ジュニパーネットワークス ルーターは以下を実行します。
IPv4 DNSサーバーアドレスをIPv6アドレスに変換し直します。
A リクエストを AAAA リクエストに変換して、ラップトップが www.example.com サーバーの 96 ビット IPv6 アドレスを持つようにします。
ラップトップが www.example.com サーバーアドレスのIPv6バージョンを受信した後、ラップトップは96ビットIPv6アドレスを使用してそのサーバーにアクセスするための2つ目のセッションを開始します。ジュニパーネットワークスルーターは、以下を実行します。
ラップトップのIPv4アドレスをIPv4アドレスに直接変換します。
96ビットIPv6 www.example.com サーバーアドレスをIPv4アドレスに変換します。
DNS ALGを使用したNAT-PTの設定
DNS ALGでNAT-PTを設定するには、以下のタスクを実行します。
- アプリケーションレベルゲートウェイの設定
- NATプールの設定
- DNS サーバー セッションの設定:最初の NAT ルール
- HTTPセッションの設定:2番目のNATルール
- サービスセットの設定
- ステートフルファイアウォールルールの設定
- インターフェイスの設定
アプリケーションレベルゲートウェイの設定
ステップバイステップの手順
DNSトラフィックの宛先となるALGとしてDNSアプリケーションを設定します。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 に使用されるアドレス(またはプレフィックス)を定義する 2 つのプールを設定します。これらのプールは、IPv6 アドレスに変換される IPv4 アドレスを定義します。最初のプールには、送信元のIPv4アドレスが含まれています。2 番目のプールは、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
2番目のプールの名前と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プールが適用されます。
送信元変換用に設定された 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セッションの設定:2番目のNATルール
ステップバイステップの手順
2つ目のNATルールは、IPv4サーバー(www.example.com)に向かう宛先トラフィックに適用されます。このルールにより、NATセッションがDNS ALGによってマッピングされたアドレスに送信されるようになります。このルールを機能させるには、最初のルールで行われたDNSクエリまたはレスポンス処理と、2番目のルールで処理された実際のデータセッションを相関させるDNS ALGアドレスマップを設定する必要があります。さらに、トラフィックが一致する方向、つまりIPv6送信元アドレス(ラップトップ)のIPv4アドレス、IPv4宛先アドレス(www.example.com)の先頭に付加する96ビットプレフィックス、および変換タイプを指定する必要があります。
2 番目の 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
結果
次のサンプル出力は、2 番目の 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
以下の例は、この設定例で定義された 2 つのルールを参照しています。
[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;
}
}
}
}
インターフェイスの設定
ステップバイステップの手順
サービスセットを定義した後、ルーターにインストールされている1つ以上のインターフェイスにサービスを適用する必要があります。この例では、入出力トラフィックにサービスセットを適用する1つのインターフェイスを設定します。サービスセットをインターフェイスに適用すると、パケットがサービス(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;
}
}