Webサイトにアクセスできない、社内システムにつながらない、メールが送れない…
こんな時、**「DNSエラー」「名前解決できません」**というエラーメッセージを見たことはありませんか?
実は、Windowsには名前解決(ドメイン名→IPアドレス変換)を確認・診断できるコマンドが豊富に用意されています。これらを使いこなせば、ネットワークトラブルの原因を特定し、自力で解決できるようになります。
今回は、Windows標準の名前解決コマンドを、実践的な使い方から応用テクニックまで完全解説します!
名前解決とは?基本を3分で理解

名前解決の仕組み
人間が理解しやすい名前をコンピュータが理解できるアドレスに変換:
例:google.com を入力
↓
DNSサーバーに問い合わせ
↓
IPアドレス 142.250.196.110 を取得
↓
そのIPアドレスに接続
Windowsの名前解決の優先順位
Windowsは以下の順番で名前を解決:
優先順位 | 解決方法 | ファイル/場所 |
---|---|---|
1 | DNSキャッシュ | メモリ内 |
2 | hostsファイル | C:\Windows\System32\drivers\etc\hosts |
3 | DNSサーバー | ネットワーク設定で指定 |
4 | NetBIOS | Windows独自(古い) |
主要コマンド一覧:目的別に使い分けよう
コマンド早見表
用途別の最適なコマンド:
コマンド | 主な用途 | 難易度 | 詳細度 |
---|---|---|---|
nslookup | DNS問い合わせ | ★★☆ | ★★★ |
ping | 疎通確認+名前解決 | ★☆☆ | ★☆☆ |
ipconfig | DNS設定確認・キャッシュ操作 | ★☆☆ | ★★☆ |
Resolve-DnsName | PowerShell版(高機能) | ★★★ | ★★★ |
arp | ARPテーブル確認 | ★★☆ | ★★☆ |
getmac | MACアドレス確認 | ★☆☆ | ★☆☆ |
tracert | 経路確認+名前解決 | ★★☆ | ★★☆ |
pathping | 詳細な経路診断 | ★★★ | ★★★ |
nslookup:DNS問い合わせの定番ツール
基本的な使い方
最もシンプルな使用方法:
# 基本形:ドメイン名のIPアドレスを調べる
nslookup google.com
# 結果例:
サーバー: dns.example.com
Address: 192.168.1.1
権限のない回答:
名前: google.com
Addresses: 142.250.196.110
2404:6800:4004:826::200e
nslookupの詳細オプション
よく使うオプションと実例:
# 特定のDNSサーバーを指定して問い合わせ
nslookup google.com 8.8.8.8
# レコードタイプを指定
nslookup -type=MX gmail.com # メールサーバー
nslookup -type=NS google.com # ネームサーバー
nslookup -type=A google.com # IPv4アドレス
nslookup -type=AAAA google.com # IPv6アドレス
nslookup -type=TXT google.com # TXTレコード(SPFなど)
nslookup -type=CNAME www.google.com # エイリアス
# 逆引き(IPアドレスからドメイン名)
nslookup 8.8.8.8
# デバッグモードで詳細表示
nslookup -debug google.com
インタラクティブモード
対話式で複数の問い合わせ:
# インタラクティブモード起動
nslookup
> server 8.8.8.8 # DNSサーバー変更
> set type=MX # レコードタイプ設定
> gmail.com # 問い合わせ実行
> set type=A # タイプ変更
> google.com
> exit # 終了
nslookupのトラブルシューティング活用
実践的な診断方法:
症状 | 確認コマンド | 判定方法 |
---|---|---|
サイトにアクセスできない | nslookup site.com | IPが返ってくるか |
メールが送れない | nslookup -type=MX domain.com | MXレコード確認 |
DNSサーバーが応答しない | nslookup google.com 8.8.8.8 | 外部DNS で試す |
内部サーバーが見つからない | nslookup server.local | 内部DNSの確認 |
ping:疎通確認と名前解決を同時に
基本的な使い方
名前解決と疎通確認を一度に:
# 基本形
ping google.com
# 結果例:
google.com [142.250.196.110]に ping を送信しています 32 バイトのデータ:
142.250.196.110 からの応答: バイト数 =32 時間 =15ms TTL=115
pingの便利なオプション
実用的なオプション:
# 連続ping(Ctrl+Cで停止)
ping -t google.com
# 回数指定
ping -n 10 google.com
# パケットサイズ変更(MTU確認)
ping -l 1500 google.com
# タイムアウト設定(ミリ秒)
ping -w 1000 google.com
# IPv4を強制
ping -4 google.com
# IPv6を強制
ping -6 google.com
# 名前解決のみ(実際にpingは送らない)
ping -n 1 -w 1 google.com
pingで分かること
pingの結果から読み取れる情報:
情報 | 意味 | 正常値の目安 |
---|---|---|
名前解決 | []内のIPアドレス | IPが表示される |
応答時間 | レイテンシ | 国内:20ms以下 |
TTL | 経由ホップ数の推定 | 64〜128が一般的 |
パケットロス | 損失率 | 0%が理想 |
ipconfig:DNS設定とキャッシュ管理

DNS関連の表示オプション
現在のDNS設定を確認:
# DNS設定を含む詳細表示
ipconfig /all
# 重要な確認ポイント:
# - DNSサーバー: 使用中のDNSサーバーアドレス
# - DNS サフィックス: ドメイン名の補完設定
# - 接続固有のDNSサフィックス: ネットワーク別の設定
DNSキャッシュの操作
キャッシュ関連の重要コマンド:
# DNSキャッシュの内容を表示
ipconfig /displaydns
# 表示例:
Windows IP 構成
google.com
----------------------------------------
レコード名 . . . . . : google.com
レコードの種類 . . . : 1
Time To Live . . . : 86
データの長さ . . . . : 4
セクション . . . . . : 回答
A (ホスト) レコード . : 142.250.196.110
# DNSキャッシュをクリア(管理者権限必要)
ipconfig /flushdns
# DNS登録を更新
ipconfig /registerdns
# DHCP設定を解放
ipconfig /release
# DHCP設定を更新
ipconfig /renew
DNSキャッシュクリアが必要な場面
こんな時はキャッシュクリア:
状況 | コマンド | 効果 |
---|---|---|
DNSレコード変更直後 | ipconfig /flushdns | 新しい設定を即反映 |
サイトにアクセスできない | ipconfig /flushdns | 古いキャッシュを削除 |
開発環境の切り替え | ipconfig /flushdns | hostsファイル変更を反映 |
ネットワーク変更後 | ipconfig /renew + /flushdns | 完全リフレッシュ |
PowerShellコマンド:より強力な名前解決
Resolve-DnsName(推奨)
nslookupより高機能:
# 基本的な使い方
Resolve-DnsName google.com
# レコードタイプ指定
Resolve-DnsName google.com -Type MX
Resolve-DnsName google.com -Type AAAA
Resolve-DnsName google.com -Type TXT
# 特定のDNSサーバー使用
Resolve-DnsName google.com -Server 8.8.8.8
# 詳細情報表示
Resolve-DnsName google.com -DnsOnly -NoHostsFile
# キャッシュを使わない
Resolve-DnsName google.com -NoCache
# すべてのレコードタイプを取得
Resolve-DnsName google.com -Type ALL
Test-NetConnection
pingの強化版:
# 基本的な接続テスト
Test-NetConnection google.com
# ポート指定
Test-NetConnection google.com -Port 443
# 詳細情報
Test-NetConnection google.com -InformationLevel Detailed
# トレースルート付き
Test-NetConnection google.com -TraceRoute
Get-DnsClientCache
DNSキャッシュの詳細管理:
# キャッシュ一覧表示
Get-DnsClientCache
# 特定のエントリのみ表示
Get-DnsClientCache -Name "*google*"
# キャッシュクリア
Clear-DnsClientCache
# 統計情報
Get-DnsClientCache | Group-Object Type | Select Count, Name
hostsファイルの確認と編集
hostsファイルの場所と役割
DNSより優先される名前解決:
場所:C:\Windows\System32\drivers\etc\hosts
形式:
IPアドレス ホスト名 [エイリアス]
例:
127.0.0.1 localhost
192.168.1.100 myserver.local
hostsファイルの確認コマンド
# 内容表示
type C:\Windows\System32\drivers\etc\hosts
# メモ帳で開く(管理者権限)
notepad C:\Windows\System32\drivers\etc\hosts
# PowerShellで確認
Get-Content C:\Windows\System32\drivers\etc\hosts | Select-String -NotMatch "^#"
hostsファイル活用例
実用的な使い方:
用途 | 設定例 | 効果 |
---|---|---|
開発環境 | 127.0.0.1 dev.mysite.com | ローカル開発 |
広告ブロック | 0.0.0.0 ads.example.com | 広告サーバー遮断 |
内部サーバー | 192.168.1.10 gitlab.local | 内部DNS不要 |
テスト環境 | 203.0.113.1 staging.site.com | 本番前テスト |
トラブルシューティング実践
よくある問題と診断手順
問題1:特定のサイトにアクセスできない
診断フロー:
# 1. 名前解決の確認
nslookup target-site.com
# 2. 別のDNSサーバーで試す
nslookup target-site.com 8.8.8.8
# 3. pingで疎通確認
ping target-site.com
# 4. キャッシュクリア
ipconfig /flushdns
# 5. hostsファイル確認
type C:\Windows\System32\drivers\etc\hosts | findstr target-site
問題2:社内システムが名前解決できない
# 1. DNS設定確認
ipconfig /all | findstr DNS
# 2. 内部DNSサーバーに問い合わせ
nslookup internal-server.local [内部DNSサーバーIP]
# 3. DNSサフィックス確認
ipconfig /all | findstr サフィックス
# 4. NetBIOS名前解決を試す
nbtstat -a internal-server
問題3:DNSが遅い
# 1. 複数のDNSサーバーの応答時間測定
Measure-Command {Resolve-DnsName google.com -Server 8.8.8.8}
Measure-Command {Resolve-DnsName google.com -Server 1.1.1.1}
# 2. キャッシュ状況確認
Get-DnsClientCache | Measure-Object
# 3. DNS統計情報
Get-DnsClientStatistics
応用テクニック集

バッチファイルで自動診断
DNS診断スクリプト:
@echo off
echo === DNS診断ツール ===
echo.
echo [1] 名前解決テスト
nslookup %1
echo.
echo [2] ping テスト
ping -n 4 %1
echo.
echo [3] 別DNSでテスト
nslookup %1 8.8.8.8
echo.
echo [4] トレースルート
tracert %1
pause
PowerShellで一括チェック
# 複数サイトの名前解決を一括チェック
$sites = @("google.com", "microsoft.com", "github.com")
$sites | ForEach-Object {
$result = Resolve-DnsName $_ -ErrorAction SilentlyContinue
if ($result) {
Write-Host "$_ : OK - $($result[0].IPAddress)" -ForegroundColor Green
} else {
Write-Host "$_ : NG - 名前解決失敗" -ForegroundColor Red
}
}
DNSベンチマーク
# 複数DNSサーバーの速度比較
$dnsServers = @("8.8.8.8", "1.1.1.1", "9.9.9.9")
$testDomain = "google.com"
foreach ($dns in $dnsServers) {
$time = Measure-Command {
Resolve-DnsName $testDomain -Server $dns -ErrorAction SilentlyContinue
}
Write-Host "$dns : $($time.TotalMilliseconds)ms"
}
セキュリティ考慮事項
DNSに関するセキュリティリスク
注意すべきポイント:
リスク | 確認方法 | 対策 |
---|---|---|
DNSハイジャック | nslookup で正しいIPか確認 | 信頼できるDNS使用 |
キャッシュポイズニング | 定期的な ipconfig /flushdns | DNSSEC対応DNS |
不正なhostsファイル | hostsファイルの定期確認 | 編集権限の制限 |
DNS漏洩 | VPN使用時のDNS確認 | VPN内DNSの強制 |
よくある質問(FAQ)
Q1:nslookupとpingの違いは?
A:目的が異なります
- nslookup:純粋な名前解決(DNSのみ)
- ping:名前解決+疎通確認(ICMP)
- pingがブロックされていてもnslookupは動作
Q2:「権限のない回答」とは?
A:キャッシュからの回答という意味
- 問い合わせたDNSサーバーが権威サーバーではない
- 通常は問題なし
- より正確な情報が必要なら権威サーバーに直接問い合わせ
Q3:IPv6アドレスが表示されるのを止めたい
A:IPv4を優先する設定
# pingの場合
ping -4 google.com
# システム全体で優先度変更
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 precedence=46 label=4
Q4:社内DNSと外部DNSを使い分けたい
A:条件付きフォワーダーを設定
- 社内ドメイン:社内DNS
- 外部ドメイン:外部DNS
- Windows DNSサーバーの設定で可能
まとめ:名前解決コマンドを使いこなそう
用途別コマンド選択ガイド:
目的 | 第一選択 | 代替 |
---|---|---|
単純な名前解決確認 | nslookup | Resolve-DnsName |
疎通確認込み | ping | Test-NetConnection |
キャッシュ管理 | ipconfig /flushdns | Clear-DnsClientCache |
詳細な診断 | Resolve-DnsName | nslookup -debug |
設定確認 | ipconfig /all | Get-DnsClient |
トラブル時の基本手順:
- 🔍
nslookup
で名前解決を確認 - 📡
ping
で疎通確認 - 🗑️
ipconfig /flushdns
でキャッシュクリア - 🔧 解決しなければ詳細診断
名前解決のトラブルは、これらのコマンドを組み合わせることで、ほとんど解決できます。ぜひ実践で活用してください!
コメント