DNS ALG
ドメイン名システム(DNS)アプリケーション層ゲートウェイ(ALG)サービスは、ドメイン名の特定と IP アドレスへの変換に関連するデータを処理します。ALGは通常、ポート53で動作します。ALG は DNS クエリーを監視し、パケットに応答し、UDP トラフィックのみをサポートします。
DNS ALG の概要
DNSアプリケーション層ゲートウェイ(ALG)サービスは、DNSクライアントに使用するアプリケーションレベルゲートウェイを提供します。DNS ALGサービスにより、クライアントは異なるネットワーク内の複数のDNSサーバーにアクセスし、それらのサーバー間のルーティングを提供できます。また、DNS クエリと応答パケットの柔軟なアドレス変換もサポートします。これらの機能により、DNS クライアントは、ネットワークのクライアント側にある単一の DNS サーバー インスタンスから、さまざまなドメインにクエリを実行できます。
DNS サーバーは、UDP ポート 53 を介して DNS リゾルバーからの受信クエリをリッスンします。リゾルバーは、DNSクエリーを送信してDNS応答を処理することで、DNSサーバーと通信します。
DNS ALG のデフォルト ポートはポート 53 です。
DNS ALG は、以下の機能を実行します。
DNS クエリーと応答パケットを監視し、DNS 応答を受信したときにセッションを閉じる
DNS Doctoring を実行します。
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 Doctoring と呼ばれるプロセスを通じて処理しなければならない DNS 問題を引き起こす可能性があります。
同じ Doctoring 機能が動的ドメイン名システム(DDNS)に適用されます。NAT モードの DDNS の場合、DDNS アップデートで IP 変換を実行することもできます。
NAT によって発生した問題を解決するために、DNS および DDNS ALG 機能が拡張されて静的 NAT をサポートし、DNS Doctoring を通じて問題を解決できるようになりました。
DNS Doctoringを実行するには、デバイスでDNS ALGを有効にする必要があります。SRX3400、SRX3600、SRX4600、SRX5600、SRX5800の各デバイスでDNS ALGが有効になっている場合、DNS Doctoringはデフォルトで有効になっています。(プラットフォームのサポートは、インストールされている Junos OS リリースによって異なります)。
復元と医師のプロセスは、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をサポートしていない場合、172.19.1.10などのプライベートアドレスを取得します。これはXをホストするには無効です。プライベート アドレスは、DNS ALG を介してパブリック アドレス 10,131.108.10 に変換されます。
図 3 は、 DNS がパブリック アドレスをプライベート アドレスに変換する方法を示しています。

private.com のホストAがDNSを介してホストBのアドレスを解決したい場合、DNS ALGがNATをサポートしていない場合、external.com のDNSサーバーから10.131.108.8などのパブリックアドレスを取得します。ホスト A がパブリック アドレス 10.131.108.8 を持つホスト B にトラフィックを送信した場合、プライベート ドメインで B をホストすることは無効です。そのため、DNS クエリ A レコードのパブリック アドレスは、DNS ALG を介してプライベート アドレス 172.19.2.1 に変換されます。
DNS ALG は、単一の DNS 応答で最初の 32 個の A レコードを変換できます。最初の 32 レコード以降の A レコードは処理されません。また、DNS ALGはIPv4およびIPv6アドレスをサポートしており、VPNトンネルをサポートしていないことに注意してください。
DNS および DDNS Doctoring の無効化
DNS と DDNS の医師を実行するには、デバイスで DNS ALG を有効にする必要があります。デバイスでDNS ALGが有効になっている場合、DNSおよびDDNS Doctoring機能はデフォルトで有効になっています。CLIを使用して、DNSとDDNSの医師を無効にできます。
DNSおよびDDNS Doctoringを無効にするには:
-
設定オプションを指定して、すべての医師の機能を
none
無効にします。このコマンドは、すべての医師の機能を無効にします。
user@host#
set security alg dns doctoring none
-
NAT機能を無効にし、設定オプションを指定してサニティーチェック機能を
sanity-check
保持します。このオプションはNAT機能を無効にし、サニティーチェック機能を保持します。
user@host#
set security alg dns doctoring sanity-check
-
デバイスの設定が完了したら、設定をコミットします。
-
設定を確認するには、 vty コマンドを使用します show usp algs dns stats。