NATによるDNSのペイロード書き換え | DNSレスポンスのIPアドレス変換

NATによるDNSのペイロード書き換え | DNSレスポンスのIPアドレス変換

CiscoルーターのNATによるDNSペイロードの書き換えについて説明します。

NATの概要については、下記を参照してください。

目次

NATによるDNSのペイロード書き換えの概要

NATによるDNSのペイロード書き換えは、DNSトラフィックを検査して、DNSレスポンスの中のIPアドレスを書き換えるプロセスを指します。これは主にセキュリティ等の目的で行われることがあります。

以下は、NATによるDNSのペイロード書き換えの一般的なプロセスです。

STEP
DNSリクエスト/レスポンスの受信

NAT機器が、DNSリクエスト/レスポンスを受信すると、このトラフィックを検査します。

DNSリクエスト/レスポンスの受信
STEP
ペイロードの解析

DNSリクエスト/レスポンスのペイロード(データ部分)を解析して、IPアドレスなど情報を取得します。

ペイロードの解析
STEP
ペイロードの書き換え

NATテーブルの情報を参照し、ペイロード内のIPアドレスを書き換えます。

ペイロードの書き換え
STEP
DNSリクエスト/レスポンスの送信

ペイロード内の情報を書き換えたDNSリクエスト/レスポンスを送信します。

DNSリクエスト/レスポンスの送信

NATによるDNSのペイロード書き換えの検証

ネットワーク構成

下記のネットワーク構成でNATによるDNSペイロード書き換えの検証を行います。

ネットワーク構成

NATルーターの設定

NATルーターには下記のとおり、インターフェースとNATの設定を行います。

interface GigabitEthernet0/0
 ip address 192.168.1.254 255.255.255.0
 ip nat inside

interface GigabitEthernet0/1
 ip address 192.168.2.254 255.255.255.0
 ip nat outside

ip nat inside source static 192.168.1.101 192.168.2.101
ip nat inside source static 192.168.1.201 192.168.2.201

ip nat inside source static 192.168.1.101 192.168.2.101
→ DNSサーバーのアドレスを変換する設定

ip nat inside source static 192.168.1.201 192.168.2.201
→ Webサーバーのアドレスを変換する設定

DNSサーバーの設定

DNSサーバーには下記のとおり、Aレコードを設定します。

DNSサーバーのAレコード

FQDNIPアドレス
server1.test.local192.168.1.201

名前解決の実行

PC1で名前解決を実行します。(nslookupコマンド)

PC1:~$ nslookup -type=A server01.test.local 192.168.2.101
Server:		192.168.2.101
Address:	192.168.2.101:53

Name:	server01.test.local
Address: 192.168.2.201

名前解決されたアドレスが、”192.168.2.201″となっていることがわかります。
DNSサーバーに登録されたアドレスではなく、NAT変換後のアドレスになっています。

パケットキャプチャとデバッグの結果

パケットキャプチャとNATルーターのデバッグログを確認します。

パケットキャプチャ

NATルーター通過前後のDNSレスポンスのパケットを確認します。

パケットキャプチャ
キャプチャポイント① ※NATルーター通過前
キャプチャポイント① ※NATルーター通過前
詳細テキスト表示(クリックで開く)
Domain Name System (response)
    Transaction ID: 0x9a4b
    Flags: 0x8580 Standard query response, No error
    Questions: 1
    Answer RRs: 1
    Authority RRs: 0
    Additional RRs: 0
    Queries
        server01.test.local: type A, class IN
            Name: server01.test.local
            [Name Length: 19]
            [Label Count: 3]
            Type: A (Host Address) (1)
            Class: IN (0x0001)
    Answers
        server01.test.local: type A, class IN, addr 192.168.1.201
            Name: server01.test.local
            Type: A (Host Address) (1)
            Class: IN (0x0001)
            Time to live: 3600 (1 hour)
            Data length: 4
            Address: 192.168.1.201
    [Request In: 1]
    [Time: 0.000536000 seconds]

名前解決されたサーバーのアドレスが、NAT変換前(inside local)の”192.168.1.201″となっています。

キャプチャポイント② ※NATルーター通過後
キャプチャポイント② ※NATルーター通過後
詳細テキスト表示(クリックで開く)
Domain Name System (response)
    Transaction ID: 0x9a4b
    Flags: 0x8580 Standard query response, No error
    Questions: 1
    Answer RRs: 1
    Authority RRs: 0
    Additional RRs: 0
    Queries
        server01.test.local: type A, class IN
            Name: server01.test.local
            [Name Length: 19]
            [Label Count: 3]
            Type: A (Host Address) (1)
            Class: IN (0x0001)
    Answers
        server01.test.local: type A, class IN, addr 192.168.2.201
            Name: server01.test.local
            Type: A (Host Address) (1)
            Class: IN (0x0001)
            Time to live: 0 (0 seconds)
            Data length: 4
            Address: 192.168.2.201
    [Request In: 1]
    [Time: 0.013123000 seconds]

名前解決されたサーバーのアドレスが、NAT変換後(outside local)の”192.168.2.201″に書き換えられていることがわかります。

デバッグログ

NATルーターのデバッグログを確認します。

デバッグコマンド

debug ip nat detailed

デバッグコマンドは、機器の負荷が高くなる可能性がありますので、本番環境での利用は基本的に避けるようにしましょう。

STEP
inside側からDNSレスポンスを受信
06:18:35.939: NAT: i: udp (192.168.1.101, 53) -> (192.168.2.1, 56383) [745]
STEP
DNSレスポンスのペイロードを精査
06:18:35.939: NAT (UDP-DNS): Before Translation
06:18:35.939: NAT: Translation of UDP DNS src 192.168.1.101, dst 192.168.2.1
06:18:35.939: NAT: Dns type of Response
06:18:35.939:    : dns len=41, id=39499, aa=1, tc=0, rd=1, ra=1
06:18:35.939:    : opcode=0, rcode=0, qdcount=1
06:18:35.939:    : ancount=1, nscount=0, arcount=0
STEP
DNSレスポンスのペイロードのアドレスを書き換え
06:18:35.939: NAT: DNS resource record 192.168.1.201 -> 192.168.2.201
STEP
DNSサーバーのアドレスをNAT変換
06:18:35.940: NAT: s=192.168.1.101->192.168.2.101, d=192.168.2.1 [745]

ペイロードの書き換えを無効化する方法

DNSペイロードの書き換えは、自動的に内部のIPアドレスが秘匿されるため、セキュリティ面では有効です。しかし、意図しないIPアドレスに名前解決されることで、通信に不具合が出ることもあります。

Cisco機器での無効化設定

Cisco機器の場合は、DNSサーバーに対するNAT設定に”no-payload”オプションを追加することで、ペイロードの書き換えを無効化することができます。

ip nat inside source static 192.168.1.101 192.168.2.101 no-payload

ペイロード書き換え無効化の確認

PC1で名前解決を実行します。(nslookupコマンド)

PC1:~$ nslookup -type=A server01.test.local 192.168.2.101
Server:		192.168.2.101
Address:	192.168.2.101:53

Name:	server01.test.local
Address: 192.168.1.201

名前解決されたアドレスが、”192.168.1.201″となっていることがわかります。

以上で、「NATによるDNSのペイロード書き換え | DNSレスポンスのIPアドレス変換」の説明は完了です!

  • URLをコピーしました!
  • URLをコピーしました!
目次