「このIPアドレスは、どのFQDNで使われているのか?」
Windowsの nslookup を使って調査してみました。
ネットワークのトラブルシューティングをしていると、
「このIPアドレスは、いったいどのサービスで使われているんだろう?」
と思うことがあります。
今回は、調査対象だった 210.57.49.14 というIPアドレスを例に、
Windows PowerShellの nslookup を使って逆引きDNSを調べてみました。
- 210.57.49.14 のPTRレコード
- 逆引きDNSを管理しているDNSサーバー
- PTRで得られたFQDNを正引きできるか
- BGPで見えているネットワーク情報との関係
逆引きは成功した。しかし、そのFQDNを正引きすると存在しなかった。
210.57.49.14 のPTRレコードは存在し、
unknown.telstraglobal.net が返ってきました。
ところが、この名前をDNSで正引きすると
「Non-existent domain」 となりました。
1.まず普通に逆引きしてみる
PowerShellで次のコマンドを実行します。
すると、次のような結果が返ってきました。
Address: 240b:10:3a40:c900:569b:49ff:fe7d:33b8
Name: unknown.telstraglobal.net
Address: 210.57.49.14
つまり、このIPアドレスにはPTRレコード(逆引きDNS)が設定されています。
ここは少し紛らわしいところです。
Server: UnKnown は、DNSサーバー自身の名前を表示できなかったという意味です。
210.57.49.14の逆引きに失敗したわけではありません。
2.PTRレコードを明示的に確認する
次に、PTRレコードを明示して問い合わせます。
結果は次の通りでした。
14.49.57.210.in-addr.arpa
name = unknown.telstraglobal.net
IPv4の逆引きでは、IPアドレスを逆順にして
in-addr.arpa ドメインを使います。
3.ところが、そのFQDNを正引きすると……
ここで疑問が生まれます。
そこで正引きを実行します。
ところが……。
Non-existent domain
210.57.49.14
unknown.telstraglobal.net
“`
unknown.telstraglobal.net
210.57.49.14
“`
4.これはDNSの矛盾ではない
一見すると矛盾しているように見えますが、
PTRレコードとAレコードは別々のDNSレコードです。
“`
example.com → 1.2.3.4
4.3.2.1.in-addr.arpa → example.com
これらは独立しているため、
Aレコードがなく、PTRレコードだけが存在することも技術的には可能です。
“`
5.逆引きDNSを誰が管理しているのか?
次に、このIPアドレスの逆引きDNSを管理しているDNSサーバーを調べました。
nslookup -type=NS 49.57.210.in-addr.arpa
nameserver = ns03.telstraglobal.net
49.57.210.in-addr.arpa
nameserver = ns04.telstraglobal.net
ns04.telstraglobal.net
さらにSOAレコードも確認
responsible mail addr = ipnoc.reach.com
serial = 2017084765
refresh = 43200 (12 hours)
retry = 3600 (1 hour)
expire = 2419200 (28 days)
default TTL = 86400 (1 day)
6.Telstra GlobalのDNSに直接聞いてみる
「もしかすると、自分のISPのDNSが変な回答を返しているのでは?」
という可能性も考えられます。
そこで、Telstra Global側のDNSサーバーに直接問い合わせます。
結果:
name = unknown.telstraglobal.net
Telstra GlobalのDNSサーバーに直接問い合わせても同じPTRが返ってきました。
したがって、今回確認した範囲では、ISP側DNSが勝手に作った結果ではありません。
7.そして最後に正引きを直接確認
Non-existent domain
つまり、Telstra GlobalのDNSに直接問い合わせても、
PTRは存在するが、その名前の正引きレコードは存在しない
という結果になりました。
8.ここでBGPの情報とつながってくる
今回調査しているIPレンジについては、BGPの調査も行っていました。
ここで大切なのは、BGPとDNSは別の情報だということです。
“`
210.57.49.0/24
↓
AS6220
210.57.49.14
↓ PTR
unknown.telstraglobal.net
“`
BGPは、
「このネットワークへの経路をどのASが広告しているか」
を示す情報です。
DNSは、
「この名前とIPアドレスをどう対応付けるか」
を示す情報です。
したがって、BGPではAS6220から広告されているネットワークでも、
逆引きDNSの名前が telstraglobal.net になっていること自体は、
必ずしも矛盾ではありません。
「PTR = サービスのFQDN」ではない
今回の調査で特に重要だと感じたのがこの点です。
IPアドレスからPTRを引いて出てきた名前が、
そのIPを利用しているサービスの正式なFQDNとは限りません。
例えば、こんな構成も可能
“`
service.example.com
“`
このように、
サービス側のFQDNとPTRの名前が一致しないケースは考えられます。
まとめ
“`
210.57.49.14 → unknown.telstraglobal.net
ns03.telstraglobal.net / ns04.telstraglobal.net
unknown.telstraglobal.net → Non-existent domain
「逆引きできる」ことと「その名前を正引きできる」ことは別問題
BGPのAS情報だけからDNS名を決めることはできない
“`
今回使ったコマンド一覧
| コマンド | 目的 |
|---|---|
| nslookup 210.57.49.14 | 通常の逆引き |
| nslookup -type=PTR 210.57.49.14 | PTRレコードを明示して確認 |
| nslookup -type=NS 49.57.210.in-addr.arpa | 逆引きDNSのネームサーバー確認 |
| nslookup -type=SOA 49.57.210.in-addr.arpa | ゾーンの管理情報確認 |
| nslookup -type=PTR 14.49.57.210.in-addr.arpa ns03.telstraglobal.net | 権威DNSへ直接PTR問い合わせ |
| nslookup unknown.telstraglobal.net ns03.telstraglobal.net | 権威DNSへ直接正引き問い合わせ |
IPアドレスを調べるときは、
DNS(A/PTR/NS/SOA)・BGP・TCP/443
などを組み合わせて確認すると、単純なIP検索だけでは見えてこないネットワーク構成が見えてきます。
