はじめに
ネットワークの仕組みを学んでいると、ドメイン名をIPアドレスに変換するプロセスに socket ライブラリや OS の設定ファイルが関与することがわかります。しかし、Windows と Linux では設定ファイルの場所や動作が異なります。
この記事では、
- WindowsとLinuxでの名前解決の違い
-
/etc/hostsやC:\Windows\System32\drivers\etc\hostsの役割 -
nsswitch.confやresolv.confのWindowsにおける対応 - Windows で DNS を設定する方法
を詳しく解説します!
WindowsとLinuxの名前解決の違い
| 機能 | Linux/macOS | Windows |
|---|---|---|
| ローカルの名前解決ファイル | /etc/hosts |
C:\Windows\System32\drivers\etc\hosts |
| DNSの設定ファイル | /etc/resolv.conf |
GUIの「ネットワークとインターネットの設定」から変更 |
| 優先順位を決める設定 | /etc/nsswitch.conf |
Windows には直接対応する設定なし |
| ターミナルでの確認コマンド |
ping example.com、nslookup example.com
|
ping example.com、nslookup example.com
|
| 設定ファイルの編集方法 |
nano や vim で編集 |
notepad で管理者権限で編集 |
Windows では /etc/nsswitch.conf に相当する仕組みがなく、基本的に hosts ファイルよりも DNS サーバーが優先される場合があります。
Windows の hosts ファイルを編集する方法
Windows では /etc/hosts の代わりに C:\Windows\System32\drivers\etc\hosts を編集することで、特定のドメインの名前解決を制御できます。
① hosts ファイルを開く
方法1: コマンドプロンプトで開く(おすすめ)
- Windowsキーを押して「cmd」と検索
- 「管理者として実行」 を選ぶ
- 以下のコマンドを実行:
これで
notepad C:\Windows\System32\drivers\etc\hostshostsファイルがメモ帳で開く。
方法2: エクスプローラーで開く
-
C:\Windows\System32\drivers\etc\hostsに移動 -
hostsファイルを右クリック → 「管理者として実行」 でメモ帳で開く - 必要な変更をして保存
② 例えばこんな設定を追加
93.184.216.34 example.com
これを追加すると、Windows では example.com へのアクセス時に DNS を使わず、直接 93.184.216.34 に接続する。
③ 動作確認
コマンドプロンプト(cmd)で ping してみる:
ping example.com
→ /etc/hosts に設定した IP アドレスに直接アクセスしているか確認!
Windows で /etc/resolv.conf に相当するものは?
Linux では DNS サーバーの設定を /etc/resolv.conf で管理しますが、Windows では GUI から設定するのが一般的です。
Windows でDNSサーバーを設定する方法
- 「ネットワークとインターネットの設定」を開く
- 「アダプターのオプションを変更する」をクリック
- 使用中のネットワーク(Wi-Fi または イーサネット)を右クリック → 「プロパティ」
- 「インターネット プロトコル バージョン4(TCP/IPv4)」を選択して「プロパティ」
-
「次のDNSサーバーのアドレスを使う」を選択して、DNSを手動設定
- GoogleのDNS:
8.8.8.8、8.8.4.4 - CloudflareのDNS:
1.1.1.1、1.0.0.1 - OpenDNS:
208.67.222.222、208.67.220.220
- GoogleのDNS:
設定後に ipconfig /flushdns を実行すれば、変更が即時反映されます。
まとめ
- Windows では
/etc/hostsではなくC:\Windows\System32\drivers\etc\hostsを編集する - Linux の
/etc/resolv.confの代わりに、Windows ではGUIでDNSを設定する - 名前解決の仕組みは似ているが、設定場所や動作が異なる