このページの目次
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 のプロセスを示しています。
トポロジ
図の中央にあるジュニパーネットワークスのルーターは、2つのステップでアドレス変換を実行します。ラップトップが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アドレスを使用して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プールを適用します。
[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 ALG96ビットプレフィックスを定義します。
[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宛先アドレスの先頭に追加する96ビットプレフィックス(www.example.com)、および変換タイプ。
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; } }