CiscoルーターのNATによるDNSペイロードの書き換えについて説明します。
NATの概要については、下記を参照してください。
NATによるDNSのペイロード書き換えの概要
NATによるDNSのペイロード書き換えは、DNSトラフィックを検査して、DNSレスポンスの中のIPアドレスを書き換えるプロセスを指します。これは主にセキュリティ等の目的で行われることがあります。
以下は、NATによるDNSのペイロード書き換えの一般的なプロセスです。
NAT機器が、DNSリクエスト/レスポンスを受信すると、このトラフィックを検査します。
DNSリクエスト/レスポンスのペイロード(データ部分)を解析して、IPアドレスなど情報を取得します。
NATテーブルの情報を参照し、ペイロード内のIPアドレスを書き換えます。
ペイロード内の情報を書き換えた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レコード
FQDN | IPアドレス |
---|---|
server1.test.local | 192.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ルーター通過前
詳細テキスト表示(クリックで開く)
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ルーター通過後
詳細テキスト表示(クリックで開く)
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
デバッグコマンドは、機器の負荷が高くなる可能性がありますので、本番環境での利用は基本的に避けるようにしましょう。
06:18:35.939: NAT: i: udp (192.168.1.101, 53) -> (192.168.2.1, 56383) [745]
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
06:18:35.939: NAT: DNS resource record 192.168.1.201 -> 192.168.2.201
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アドレス変換」の説明は完了です!