カテゴリー別アーカイブ: FW




SRX(JunOS)でDNS通信がグローバルIPアドレスからプライベートIPアドレスにNATされるのは、DNS ALGが原因だった件




投稿日:

何度かこの現象に出くわしたのでいい加減、メモします。

SRXをDNS通信が通ると、そのデータはSRXのNATポリシーに従い変換されてしまうという現象です。

SRXのネットワーク内から外にDNSの問合せをする場合は問題はありませんが、SRXの中にDNSサーバをおいてSRXの外から問いあわせを受ける時には、問題です。

SRXを通過すると応答データに含まれるグローバルIPアドレスは、プライベートIPアドレスに変換されるので、
内から外にDNSの問合せの場合は、問合せ元にプライベートIPアドレスに変換されて届いて、
外から内にDNSの問合せの場合も、問合せ元にプライベートIPアドレスに変換されて届きます。

お、外にプライベートIPを返したら意味ないですね。
よくよく調べると、このように定義されていました。

DNS ALG Overview – Technical Documentation – Support – Juniper Networks 
http://www.juniper.net/techpubs/en_US/junos12.1×46/topics/concept/security-alg-dns-overview.html

The DNS ALG performs the following functions:

Monitors DNS query and reply packets and closes the session when the DNS reply is received
Performs DNS doctoring
Performs the IPv4 and IPv6 address transformations
Modifies the DNS payload in NAT mode

つまり、DNS ALGには以下の機能がある。

・DNSクエリと応答パケットのモニターと、DNS応答が返って来た場合のセッションのクローズ
・DNSの加工
・IPv4 と IPv6アドレスの変換
・NATモードでのDNSのペイロードの修正

最後のがまさにそれですね。

ということで、SRXを問わずJunOSにてこの現象は起きるようです。
通常、DNS用のポリシーとして、以下のようにjunos-dns-udp junos-dns-tcpを利用していたらアウトです。

今回の対応としては、このDNS ALGを無効にすることで対応できました。
ただ、これでどこまで問題ないのか?は不明です。にしても、厄介ですね。

でもこのようなことを想定して作られていないということは、この事象が起きた環境設計も世の中的に稀という訳ですね。。。

確認は以下のコマンドで実施しましょう。(参考リンクより引用)

※ ちなみにALGはデフォルトでONになっています。

user@host> show security alg status
DNS      : Enabled 
FTP      : Enabled
H323     : Enabled

※ コマンドは、細かいコマンドはもちろん、正式なソースを確認してから実行してください。

参考

DNS ALG Overview – Technical Documentation – Support – Juniper Networks
http://www.juniper.net/techpubs/en_US/junos12.1×46/topics/concept/security-alg-dns-overview.html

Example: Configuring the DNS ALG – Technical Documentation – Support – Juniper Networks
http://www.juniper.net/techpubs/en_US/junos12.1×46/topics/example/security-alg-dns-configuring.html#jd0e238