DNS ALG
ドメイン生成アルゴリズム(DNS)アプリケーション層ゲートウェイ(ALG)サービスは、ドメイン名の検索とIPアドレスへの変換に関連するデータを処理します。ALG は通常、ポート 53 で実行されます。ALGはDNSクエリーと応答パケットを監視し、UDPトラフィックのみをサポートします。
Feature Explorerを使用して、特定の機能に対するプラットフォームとリリースのサポートを確認します。
プラットフォームに関連する注意事項については、「プラットフォーム固有の DNS ALG の動作 」セクションを確認してください。
DNS ALG の概要
DNS アプリケーション層ゲートウェイ(ALG)サービスは、DNS クライアントで使用するアプリケーションレベルのゲートウェイを提供します。DNS ALG サービスを使用すると、クライアントは異なるネットワーク内の複数の DNS サーバーにアクセスでき、それらのサーバーとのルーティングを提供できます。また、DNSクエリーとレスポンスパケットの柔軟なアドレス変換もサポートしています。これらの関数を使用すると、DNS クライアントは、ネットワークのクライアント側にある 1 つの DNS サーバー インスタンスから多数の異なるドメインに対してクエリを実行できます。
DNS サーバーは、UDP ポート 53 を介して、DNS リゾルバーからの着信クエリをリッスンします。リゾルバーは、DNS クエリを送信し、DNS 応答を処理することで、DNS サーバーと通信します。
DNS ALG のデフォルトポートはポート 53 です。
DNS ALG は、次の機能を実行します。
DNS クエリーと応答パケットを監視し、DNS 応答を受信したときにセッションを閉じます
DNSドクターを実行します
IPv4 および IPv6 アドレス変換を実行します
ドメイン生成アルゴリズム (DNS) はもともと、静的に構成されたデータベースのクエリをサポートするように設計されており、データの変更が予想されていました。
DNS標準に加えて、ダイナミックDNS(DDNS)のサポートが利用できるようになりました。DNSとDDNSの主な違いは、ヘッダーセクションと更新メッセージのメッセージ形式にあります。
DDNSメッセージは、DNSメッセージとは異なる方法で処理されます。DDNS用にメッセージ解析が書き換えられました。DDNSはメッセージのクエリ部分でNATとNAT-PTを実行し、DNSはメッセージの応答部分でNATとNAT-PTを実行します。
参照
例:DNS ALG の設定
この例では、デバイスの静的 NAT プールで DNS トラフィックを通過するように DNS ALG を構成する方法を示します。
必要条件
開始する前に、以下を実行します。
すべての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 は、DNG ALG が DNS ドクターと呼ばれるプロセスを通じて処理する必要があるいくつかの DNS の問題を引き起こす可能性があります。
同じドクター機能は、動的ドメインネームシステム(DDNS)にも適用されます。NATモードのDDNSの場合、DDNSアップデートでIP変換を行うこともできます。
NATによってもたらされる問題を解決するために、DNSとDDNS ALG機能がスタティックNATをサポートするように拡張され、DNSドクターによって問題を解決できるようになりました。
復元とドクターのプロセスは、次の2つの部分で実行されます。
-
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をサポートしていない場合、ホストXに対して無効な172.19.1.10などのプライベートアドレスを使用します。プライベートアドレスは、DNS ALG を介してパブリックアドレス 10,131.108.10 に変換されます。
図 3 は、DNS がパブリック アドレスをプライベート アドレスに変換する方法を示しています。
private.com のホストAがDNSを介してホストBのアドレスを解決したい場合、DNS ALGがNATをサポートしていない場合、10.131.108.8などの external.com DNS サーバーからパブリックアドレスを取得します。ホストAがパブリックアドレス10.131.108.8でホストBにトラフィックを送信した場合、これはプライベートドメインのホストBに対して無効です。したがって、DNSクエリAレコードのパブリックアドレスは、DNS ALGを介してプライベートアドレス172.19.2.1に変換されます。
DNS ALG は、1 つの DNS 応答で最初の 32 個の A レコードを変換できます。最初の 32 レコードより後の A レコードは処理されません。また、DNS ALGはIPv4およびIPv6アドレスをサポートし、VPNトンネルはサポートしていないことにも注意してください。
DNSおよびDDNSドクターの無効化
DNSおよびDDNSドクターを実行するには、デバイスでDNS ALGを有効にする必要があります。デバイスで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の動作
Feature Explorerを使用して、特定の機能に対するプラットフォームとリリースのサポートを確認します。
次の表を使用して、プラットフォームのプラットフォーム固有の動作を確認します。
| プラットホーム |
差 |
|---|---|
| SRX シリーズ |
|
