ネットワークの基礎から実務まで、順番に学べるメニューです。
DNS名前解決を確認する
「名前」から「IPアドレス」を導き出せるか、VBAで診断してみましょう
DNSは、人間が覚えやすいドメイン名を、コンピュータ用のIPアドレスへ変換する「電話帳」のような仕組みです。
今回は VBA から Windows 標準の nslookup コマンドを呼び出し、名前解決が正しく行われているかを自動でチェックします。
このVBAでできること
名前解決の成否判定
指定したドメイン名(例: google.com)に対応するIPアドレスが正しく返ってくるかを確認します。
参照DNSサーバーの特定
自分のPCがいま「どのDNSサーバー」に問い合わせを行っているのかを表示します。
障害箇所の切り分け
ネットが繋がらない原因が、回線自体なのかDNSの設定ミスなのかを判断する材料になります。
sequenceDiagram
participant PC as 自分のPC (VBA)
participant DNS as DNSサーバー (電話帳)
participant Target as 接続先サーバー
Note over PC, DNS: nslookup実行
PC->>DNS: "www.google.com" のIPは?
DNS-->>PC: "142.250.xxx.xxx" です
Note over PC, Target: 名前解決成功
PC->>Target: 取得したIPアドレスへ通信開始
VBAコード
Sub CheckDnsLookup()
Dim objShell As Object
Dim objExec As Object
Dim domainName As String
Dim strCmd As String
Dim strResult As String
' 確認したいドメイン名やサーバー名を指定
domainName = "www.google.com"
Set objShell = CreateObject("WScript.Shell")
' Windowsのnslookupコマンドを組み立て
strCmd = "cmd /c nslookup " & domainName
' コマンドを実行し、結果を取得
Set objExec = objShell.Exec(strCmd)
strResult = objExec.StdOut.ReadAll
' 結果を画面に表示
MsgBox strResult, vbInformation, "DNS名前解決結果"
End Sub
コード解説
① domainName の設定
調査したいドメインを指定します。社内システムなら filesrv01 のようなサーバー名を入れることで、社内名前解決の確認も可能です。
② nslookup コマンドの活用
nslookup はDNSの稼働状況を調べるための定番コマンドです。VBA経由で動かすことで、Excelでの自動管理に繋げられます。
③ 実行結果の読み取り
StdOut.ReadAll を使うことで、黒い画面(コマンドプロンプト)に出るはずの結果を、VBA内の文字列として取り込みます。
実行結果の見方
サーバー: dns.google <-- 問い合わせ先のDNSサーバー名
Address: 8.8.8.8 <-- そのサーバーのIPアドレス
名前: www.google.com
Addresses: 2404:6800:400a:xxxx::xxxx <-- 取得したIPv6アドレス
142.250.xxx.xxx <-- 取得したIPv4アドレス
実務ポイント
「IP直打ち」との比較
IPアドレスなら繋がるのにドメイン名で繋がらない場合は、ほぼ確実にDNSのトラブルです。
社内名前解決の重要性
社内サーバーに名前でアクセスできない場合、PCが参照しているDNSサーバーが社内用になっていない可能性があります。
自動監視への応用
このコードをループ処理(For文)に組み込めば、社内にある数十台のサーバーの名前解決を一瞬でチェックできます。
よくあるトラブル
- 「Non-existent domain」と出る
- そのドメイン名が存在しない、あるいはスペルミスです。社内サーバーの場合は、DNSサーバー側に登録がない可能性があります。
- 「DNS request timed out」と出る
- DNSサーバーまで通信が届いていないか、サーバーがダウンしています。インターネット接続自体を確認してください。
- 古いIPアドレスが返ってくる
- DNSの更新情報がまだ行き渡っていない(反映待ち)か、自分のPCに古いキャッシュが残っています。
まとめ
nslookupをVBAで動かせば、名前解決の状況を自動で取得できます- Webサイトや社内システムに「名前で繋がらない」時の強力な調査手段です
- 取得した情報をExcelに蓄積すれば、ネットワークの健全性を可視化できます
ネットワーク設計・トラブル対応でお困りではありませんか?
株式会社リアライズがサポートいたします。
- ネットワーク設計・構築
- トラブル調査・改善
- 業務効率化・自動化