Windows名前解決コマンド完全ガイド:DNS確認からトラブル解決まで

Windows

Webサイトにアクセスできない、社内システムにつながらない、メールが送れない…

こんな時、**「DNSエラー」「名前解決できません」**というエラーメッセージを見たことはありませんか?

実は、Windowsには名前解決(ドメイン名→IPアドレス変換)を確認・診断できるコマンドが豊富に用意されています。これらを使いこなせば、ネットワークトラブルの原因を特定し、自力で解決できるようになります。

今回は、Windows標準の名前解決コマンドを、実践的な使い方から応用テクニックまで完全解説します!


スポンサーリンク

名前解決とは?基本を3分で理解

名前解決の仕組み

人間が理解しやすい名前をコンピュータが理解できるアドレスに変換:

例:google.com を入力
    ↓
DNSサーバーに問い合わせ
    ↓
IPアドレス 142.250.196.110 を取得
    ↓
そのIPアドレスに接続

Windowsの名前解決の優先順位

Windowsは以下の順番で名前を解決:

優先順位解決方法ファイル/場所
1DNSキャッシュメモリ内
2hostsファイルC:\Windows\System32\drivers\etc\hosts
3DNSサーバーネットワーク設定で指定
4NetBIOSWindows独自(古い)

主要コマンド一覧:目的別に使い分けよう

コマンド早見表

用途別の最適なコマンド:

コマンド主な用途難易度詳細度
nslookupDNS問い合わせ★★☆★★★
ping疎通確認+名前解決★☆☆★☆☆
ipconfigDNS設定確認・キャッシュ操作★☆☆★★☆
Resolve-DnsNamePowerShell版(高機能)★★★★★★
arpARPテーブル確認★★☆★★☆
getmacMACアドレス確認★☆☆★☆☆
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.comIPが返ってくるか
メールが送れないnslookup -type=MX domain.comMXレコード確認
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 /flushdnshostsファイル変更を反映
ネットワーク変更後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 /flushdnsDNSSEC対応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サーバーの設定で可能

まとめ:名前解決コマンドを使いこなそう

用途別コマンド選択ガイド:

目的第一選択代替
単純な名前解決確認nslookupResolve-DnsName
疎通確認込みpingTest-NetConnection
キャッシュ管理ipconfig /flushdnsClear-DnsClientCache
詳細な診断Resolve-DnsNamenslookup -debug
設定確認ipconfig /allGet-DnsClient

トラブル時の基本手順:

  1. 🔍 nslookup で名前解決を確認
  2. 📡 ping で疎通確認
  3. 🗑️ ipconfig /flushdns でキャッシュクリア
  4. 🔧 解決しなければ詳細診断

名前解決のトラブルは、これらのコマンドを組み合わせることで、ほとんど解決できます。ぜひ実践で活用してください!

コメント

タイトルとURLをコピーしました