Windows名前解決の全て!DNSエラーやネットワーク接続問題を解決する方法

Windows

「このサイトにアクセスできません」 「DNSサーバーが応答していません」 「ネットワーク上のコンピューターが見つからない」 「pingは通るのにブラウザでアクセスできない」

こんなエラーに遭遇したことはありませんか?これらの問題の多くは、**名前解決(Name Resolution)**が原因です。

名前解決とは、「google.com」のような人間が読める名前を、「142.250.196.110」のようなIPアドレスに変換する仕組み。この変換がうまくいかないと、インターネットやネットワークに接続できなくなります。

この記事では、Windowsの名前解決の仕組みから、トラブルシューティング、高度な設定まで、ネットワーク問題を解決するために必要な知識をすべて解説します。


スポンサーリンク
  1. 名前解決とは?基本を理解しよう
    1. なぜ名前解決が必要なのか
    2. Windowsの名前解決の種類
    3. 名前解決の流れ
  2. DNSの仕組みと設定方法
    1. DNSサーバーとは?
    2. WindowsのDNS設定を確認・変更
    3. DNSサーバーを変更する方法
    4. PowerShellでDNS設定を変更
  3. hostsファイルの活用方法
    1. hostsファイルとは?
    2. hostsファイルの編集方法
    3. hostsファイルの記述例
    4. hostsファイルの活用例
  4. DNSキャッシュの管理
    1. DNSキャッシュとは?
    2. DNSキャッシュを確認する
    3. DNSキャッシュをクリアする
    4. 自動クリアスクリプト
  5. NetBIOS名前解決
    1. NetBIOSとは?
    2. NetBIOS名前解決の順序
    3. NetBIOS名前を確認・管理
    4. lmhostsファイルの設定
  6. 名前解決のトラブルシューティング
    1. 基本的な診断コマンド
    2. よくある問題と解決方法
  7. 高度な設定とテクニック
    1. 複数DNSサーバーの優先順位設定
    2. 条件付きDNS転送
    3. DNS over HTTPS (DoH) の設定
    4. 名前解決の優先順位を変更
  8. パフォーマンス最適化
    1. DNSベンチマークツール
    2. DNSプリフェッチの設定
    3. DNSキャッシュサイズの調整
  9. セキュリティ対策
    1. DNSハイジャック対策
    2. DNSキャッシュポイズニング対策
  10. よくある質問と回答
    1. Q1:IPv4とIPv6で名前解決の違いはある?
    2. Q2:VPN接続時に名前解決がうまくいかない
    3. Q3:hostsファイルの変更が反映されない
    4. Q4:社内と社外で異なるDNS設定を使いたい
    5. Q5:名前解決が遅い原因は?
  11. まとめ:名前解決をマスターしてネットワークトラブルを解決

名前解決とは?基本を理解しよう

なぜ名前解決が必要なのか

コンピューターが通信するには、必ずIPアドレスが必要です。でも、人間にとってIPアドレスは覚えにくい。

例えば:

覚えやすい:www.google.com
覚えにくい:142.250.196.110

覚えやすい:FileServer
覚えにくい:192.168.1.100

名前解決は、この人間向けの名前コンピューター向けのIPアドレスに変換する橋渡し役です。

Windowsの名前解決の種類

Windowsは複数の名前解決方法を使います:

方法用途優先度特徴
DNSキャッシュ全般1番目高速、一時保存
hostsファイル手動設定2番目ローカル優先
DNSインターネット3番目標準的
NetBIOSWindows網4番目古いが現役
LLMNRローカル網5番目Windows Vista以降

名前解決の流れ

ユーザーが「www.example.com」にアクセス
      ↓
1. DNSキャッシュを確認
  (以前アクセスした記録があるか?)
      ↓
2. hostsファイルを確認
  (手動設定があるか?)
      ↓
3. DNSサーバーに問い合わせ
  (インターネット上で調べる)
      ↓
4. IPアドレスを取得
  (192.0.2.1など)
      ↓
5. 実際に接続

DNSの仕組みと設定方法

DNSサーバーとは?

DNS(Domain Name System)サーバーは、インターネットの電話帳のような存在です。

DNSの階層構造:

. (ルート)
├── com
│   ├── google.com
│   └── microsoft.com
├── jp
│   ├── co.jp
│   └── ac.jp
└── org
    └── wikipedia.org

WindowsのDNS設定を確認・変更

現在のDNS設定を確認:

方法1:コマンドプロンプト

# DNS設定を表示
ipconfig /all

# 特定のネットワークアダプタのみ
ipconfig /all | findstr "DNS"

方法2:設定アプリ(Windows 11/10)

  1. 設定ネットワークとインターネット
  2. イーサネットまたはWi-Fi
  3. ハードウェアのプロパティ
  4. DNS サーバーの割り当てを確認

DNSサーバーを変更する方法

GUI での変更手順:

  1. ネットワーク接続を開く
    • Windows + R → ncpa.cpl
  2. アダプターのプロパティ
    • 該当接続を右クリック → プロパティ
  3. IPv4プロパティ
    • 「インターネットプロトコルバージョン4」を選択
    • プロパティをクリック
  4. DNSサーバーを手動設定
    • 「次のDNSサーバーのアドレスを使う」を選択
    • 優先/代替DNSサーバーを入力

推奨DNSサーバー:

プロバイダ優先DNS代替DNS特徴
Google8.8.8.88.8.4.4高速、安定
Cloudflare1.1.1.11.0.0.1最速、プライバシー重視
OpenDNS208.67.222.222208.67.220.220セキュリティ機能
Quad99.9.9.9149.112.112.112マルウェアブロック

PowerShellでDNS設定を変更

# 現在のDNS設定を確認
Get-DnsClientServerAddress

# DNSサーバーを変更(管理者権限必要)
Set-DnsClientServerAddress -InterfaceAlias "Wi-Fi" -ServerAddresses 8.8.8.8, 8.8.4.4

# すべてのインターフェースで変更
Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses 1.1.1.1, 1.0.0.1

hostsファイルの活用方法

hostsファイルとは?

hostsファイルは、ローカルの名前解決テーブルです。DNSより優先されるため、強制的に特定の名前解決を設定できます。

場所:

C:\Windows\System32\drivers\etc\hosts

hostsファイルの編集方法

管理者権限でメモ帳を開く:

  1. スタートメニューで「メモ帳」を検索
  2. 右クリック管理者として実行
  3. ファイル開く
  4. ファイル名に以下を入力: C:\Windows\System32\drivers\etc\hosts
  5. ファイルの種類を「すべてのファイル」に変更
  6. hostsファイルを開く

hostsファイルの記述例

# 基本的な書式
# IPアドレス ホスト名

# ローカルホスト(デフォルト)
127.0.0.1       localhost
::1             localhost

# カスタム設定例
192.168.1.100   fileserver
192.168.1.200   printer

# ウェブサイトのブロック
0.0.0.0         unwanted-site.com
0.0.0.0         ads.example.com

# 開発環境
127.0.0.1       dev.myapp.local
192.168.1.50    test.server

hostsファイルの活用例

1. 広告ブロック

0.0.0.0    doubleclick.net
0.0.0.0    googleadservices.com

2. 開発環境の設定

127.0.0.1    myproject.local
127.0.0.1    api.myproject.local

3. アクセス制限

0.0.0.0    facebook.com
0.0.0.0    twitter.com

4. サーバー移行時のテスト

203.0.113.10    www.mysite.com  # 新サーバー

DNSキャッシュの管理

DNSキャッシュとは?

一度解決した名前とIPアドレスの対応を一時的に保存する仕組みです。

メリット:

  • 高速な名前解決
  • ネットワーク負荷の軽減
  • DNSサーバー障害時の一時的な動作継続

デメリット:

  • 古い情報が残る可能性
  • DNS変更が反映されない

DNSキャッシュを確認する

# DNSキャッシュの内容を表示
ipconfig /displaydns

# 特定のドメインのみ表示
ipconfig /displaydns | findstr google.com

# PowerShellでより詳細に確認
Get-DnsClientCache

# 特定のエントリーのみ
Get-DnsClientCache -Name "*google*"

DNSキャッシュをクリアする

方法1:コマンドプロンプト(管理者)

ipconfig /flushdns

方法2:PowerShell(管理者)

Clear-DnsClientCache

方法3:サービスの再起動

# DNS Client サービスを再起動
net stop dnscache
net start dnscache

自動クリアスクリプト

@echo off
echo DNSキャッシュをクリアしています...
ipconfig /flushdns
echo.
echo DNSキャッシュがクリアされました。
pause

NetBIOS名前解決

NetBIOSとは?

NetBIOS(Network Basic Input/Output System)は、Windows独自の古い名前解決方式です。主にローカルネットワークで使用されます。

特徴:

  • コンピューター名で直接アクセス可能
  • ワークグループ/ドメイン環境で使用
  • 15文字までの制限

NetBIOS名前解決の順序

  1. NetBIOSキャッシュ
  2. WINSサーバー(設定されている場合)
  3. ブロードキャスト(同一サブネット)
  4. lmhostsファイル

NetBIOS名前を確認・管理

# NetBIOS名前テーブルを表示
nbtstat -n

# NetBIOSキャッシュを表示
nbtstat -c

# リモートコンピューターのNetBIOS名を確認
nbtstat -a コンピューター名

# NetBIOSキャッシュをクリア
nbtstat -R

lmhostsファイルの設定

場所:

C:\Windows\System32\drivers\etc\lmhosts

記述例:

# IPアドレス NetBIOS名 #タグ
192.168.1.10    SERVER1         #PRE
192.168.1.20    PRINTER1        #PRE
192.168.1.30    FILESERVER      #PRE #DOM:MYDOMAIN

# #PRE: 起動時にキャッシュに読み込み
# #DOM: ドメインコントローラー

名前解決のトラブルシューティング

基本的な診断コマンド

1. ping – 基本的な接続確認

# ホスト名で確認
ping google.com

# IPアドレスで確認
ping 8.8.8.8

# 継続的にping
ping -t google.com

2. nslookup – DNS解決の詳細確認

# 基本的な名前解決
nslookup google.com

# 特定のDNSサーバーを使用
nslookup google.com 8.8.8.8

# 逆引き(IPからホスト名)
nslookup 142.250.196.110

# 対話モード
nslookup
> set type=MX  # MXレコードを調べる
> google.com

3. tracert – 経路確認

# 経路を追跡
tracert google.com

# ホップ数を制限
tracert -h 10 google.com

よくある問題と解決方法

問題1:特定のサイトにアクセスできない

診断手順:

# 1. pingで確認
ping target-site.com

# 2. nslookupで名前解決確認
nslookup target-site.com

# 3. 別のDNSで試す
nslookup target-site.com 8.8.8.8

# 4. IPアドレスで直接アクセス

解決策:

  • DNSキャッシュをクリア
  • DNSサーバーを変更
  • hostsファイルを確認

問題2:「DNSサーバーが応答していません」

解決手順:

  1. ネットワーク診断を実行 # Windows ネットワーク診断 msdt.exe /id NetworkDiagnosticsNetworkAdapter
  2. DNS設定をリセット netsh winsock reset netsh int ip reset ipconfig /release ipconfig /renew ipconfig /flushdns
  3. DNSサーバーを変更
    • Google DNS(8.8.8.8)に変更
    • または自動取得に戻す

問題3:社内ネットワークのコンピューターが見つからない

確認事項:

# NetBIOS名で確認
nbtstat -a COMPUTER-NAME

# IPアドレスで確認
ping 192.168.1.100

# ネットワーク探索の確認
# 設定 → ネットワークとインターネット → 
# ネットワークと共有センター → 
# 共有の詳細設定 → ネットワーク探索を有効

高度な設定とテクニック

複数DNSサーバーの優先順位設定

# インターフェースごとにDNS優先順位を設定
$adapters = Get-NetAdapter | Where-Object {$_.Status -eq "Up"}

foreach ($adapter in $adapters) {
    Set-DnsClientServerAddress -InterfaceIndex $adapter.ifIndex `
        -ServerAddresses ("8.8.8.8","8.8.4.4","1.1.1.1","1.0.0.1")
}

条件付きDNS転送

特定のドメインだけ別のDNSサーバーを使用:

# 社内ドメインは社内DNSサーバーへ
Add-DnsClientNrptRule -Namespace ".company.local" `
    -NameServers "192.168.1.1"

DNS over HTTPS (DoH) の設定

Windows 11/10でプライバシー強化:

  1. 設定ネットワークとインターネット
  2. イーサネット/Wi-Fiハードウェアのプロパティ
  3. DNS設定の編集
  4. DNS over HTTPS をオン

レジストリで設定:

# DoHを有効化
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" `
    -Name "EnableAutoDoh" -Value 2 -PropertyType DWord

名前解決の優先順位を変更

レジストリ編集:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\ServiceProvider

HostsPriority: 200 (小さいほど優先)
DnsPriority: 300
LocalPriority: 499
NetbtPriority: 500

パフォーマンス最適化

DNSベンチマークツール

最速のDNSサーバーを見つける:

DNS Benchmark(無料ツール):

  1. GRC.comからダウンロード
  2. 「Nameservers」タブで「Run Benchmark」
  3. 結果を確認して最速サーバーを選択

DNSプリフェッチの設定

ブラウザでDNS解決を先読み:

Microsoft Edge:

edge://settings/privacy
「プリロードページを使用して、閲覧速度とネットワーク速度を高速化する」をオン

Chrome:

chrome://settings/privacy
「ページをプリロード」をオン

DNSキャッシュサイズの調整

# レジストリでキャッシュサイズを増やす
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" `
    -Name "MaxCacheEntryTtlLimit" -Value 86400
    
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" `
    -Name "MaxSOACacheEntryTtlLimit" -Value 300

セキュリティ対策

DNSハイジャック対策

確認方法:

# 正しいDNSサーバーか確認
nslookup google.com
nslookup google.com 8.8.8.8

# 結果が異なる場合は要注意

対策:

  1. 信頼できるDNSサーバーを使用
  2. DNS over HTTPS(DoH)を有効化
  3. ルーターのDNS設定も確認

DNSキャッシュポイズニング対策

# DNSSECを有効化(Windows Server)
Set-DnsServerCache -EnablePollutionProtection $true

# クライアント側でDNSSEC検証
Set-DnsClientNrptGlobal -EnableDnsSecValidation $true

よくある質問と回答

Q1:IPv4とIPv6で名前解決の違いはある?

A: 基本的な仕組みは同じですが、IPv6では「AAAA」レコードを使用します。Windows は IPv6を優先する設定になっており、IPv6が利用可能な場合はそちらを使います。無効化したい場合は、ネットワークアダプターのプロパティでIPv6のチェックを外してください。

Q2:VPN接続時に名前解決がうまくいかない

A: VPN接続時は、VPNサーバーが提供するDNSサーバーが優先されることがあります。VPNクライアントの設定で、DNSリークを防ぐオプションを確認し、必要に応じて手動でDNSサーバーを指定してください。

Q3:hostsファイルの変更が反映されない

A:

  1. 管理者権限で編集したか確認
  2. ファイルの拡張子が「.txt」になっていないか確認
  3. DNSキャッシュをクリア(ipconfig /flushdns
  4. ブラウザのキャッシュもクリア
  5. Windows Defenderなどがブロックしていないか確認

Q4:社内と社外で異なるDNS設定を使いたい

A: ネットワークプロファイルごとに設定するか、PowerShellスクリプトで自動切り替えを設定できます。また、企業環境では、Active DirectoryのグループポリシーでDNS設定を管理することも可能です。

Q5:名前解決が遅い原因は?

A:

  1. DNSサーバーの応答が遅い → 別のDNSサーバーに変更
  2. ネットワークの遅延 → tracertで経路確認
  3. DNSキャッシュの問題 → キャッシュをクリア
  4. マルウェアの影響 → セキュリティスキャン実行

まとめ:名前解決をマスターしてネットワークトラブルを解決

Windowsの名前解決を理解することで、多くのネットワーク問題を自力で解決できるようになります。

重要ポイントのおさらい:

  1. 名前解決の優先順位を理解
    • DNSキャッシュ → hosts → DNS → NetBIOS
    • それぞれの役割と特徴を把握
  2. 基本的なトラブルシューティング
    • ipconfig /flushdns でキャッシュクリア
    • nslookup で名前解決を確認
    • DNSサーバーを 8.8.8.8 に変更してテスト
  3. 高度な活用法
    • hostsファイルで開発環境構築
    • DNS over HTTPSでセキュリティ強化
    • 複数DNSサーバーで冗長性確保
  4. 定期的なメンテナンス
    • DNSキャッシュの定期クリア
    • hostsファイルの整理
    • DNSサーバーの応答速度確認

ネットワークトラブルの8割は名前解決が原因と言われています。この記事で学んだ知識を活用して、快適なネットワーク環境を構築しましょう!

コメント

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