Windows上でhostsファイルを活用する
ASCII.jp / 2024年11月17日 10時0分
今のWindowsでも使うことができるhostsファイル
80年代後半、TCP/IPを使うコンピュータでは、LAN内のマシンのIPアドレスとホスト名を記述したhostsファイルを使って、LAN内のホストの「名前解決」をしていた。ドメイン名システムは存在していたが、インターネット側に公開するホストの名前解決のみをして、LAN内でのみ使われるホストの名前解決には使われていなかった。
実用面から言えば、追加されるホストが必ずしも何らかのサービスを提供しているわけではないので、1週間程度の周期でhostsファイルを更新しても大きな問題は無かった。
このhostsファイルは、現在のWindows 11でも有効である。hostsファイルを使うことで、起動直後から名前解決ができるなどのメリットがあるからだ。
なぜ今更hostsファイルなのかというと、IPoEで割り当てられたグローバルアドレスを、外出先で名前解決するのにhostsファイルが利用できるからだ。更新の頻度が高くないので、hostsファイルを作って、各マシンにコピーすれば、外出先からOpenSSHなどを使って、自宅マシンにアクセスできる。今回はこの利用方法に即してhostsファイルを解説する。
hostsファイルを編集する
hostsファイルは、Windows 11では「c:\windows\System32\drivers\etc\」にある。デフォルトでは、localhostぐらいしか登録されていないが、Docker Desktopをインストールすると、関連のホストが登録されることがある。ここにLAN内のホストのIPv6アドレスを登録しておく。ホスト名はWindowsと同じものにせず、後ろに「v6」を付けるなど、対象ホスト名から容易に推測できるものにしておく。
Windowsと同じホスト名を付けてしまうと、LAN内でのWindowsの名前解決が混乱してしまう。hostsファイルの目的は、外出先など、自宅のLANに接続していないときに、OpenSSHなどの宛先ホストの名前解決をするためだ。なので、覚えやすい名前であれば構わない。なお、hostsファイルでは、1つのIPアドレスに複数のホスト名(ホスト名のエイリアス)をつけて構わない。
hostsファイルでは、1行で1つのIPアドレスとホスト名を対応させる。具体的には、
IPアドレス␣ホスト名
という行を追加することでホスト名とIPアドレスが登録できる。IPv6アドレスを使うなら、
2001:0db8:c4aa:c86:2180:97a9:10ba:8596 myhostv6 myhostaliasv6
などとする。IPアドレスの後ろは、スペースでホスト名を区切るが、タブでも複数のスペースでも構わない。また、ホスト名の後ろにスペースで区切って、ホストの別名(エイリアス)を定義することもできる。どちらの名前でも指定したIPアドレスで名前解決がされる。
なお、PowerToysには、hostsファイルエディターがある。入力の手間は普通に入力するのと大きく違うわけではないが、トグルスイッチを使ってのエントリの無効化(注釈化)ができるなどのメリットがある。
各ホストでのIPv6アドレスを調べる方法は、ipconfig.exeの出力を見るか、過去記事(「Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法」)を参考にしてほしい。
Windowsでのhostsファイルの扱い
hostsファイルは、起動時に読み込まれて、WindowsのDNSキャッシュに入る。これにより、Windows内での名前解決にhostsの情報が使われる。その状態を見るには、
ipconfig /displaydns
とする。
hostsファイルを書き換えたあとは、Windowsを再起動してもいいが、DNSキャッシュをフラッシュして、再度登録することもできる。その場合は
ipconfig.exe /flush ipconfig.exe /registerdns
とする。
hostsファイルで発生するトラブル
前述したように、hostsファイルは、DNSキャッシュに読み込まれてWindowsの名前解決に使われるため、名前解決が可能なホスト、たとえばルーターのDHCPで固定割り当てしたようなホスト名は、hostsファイルには含めない。hostsファイルを使うと、IPv4でアクセスができないアプリが出てきたなどのトラブル原因は大抵これである。
また、IPv6アドレスがグローバルであっても、一般的にはルーター側のパケットフィルタを解除しないと、インターネット側からのアクセスは不可能である。解除方法は、ルーターのメーカー・機種ごとに異なるが、最近の製品であれば、管理用Webページから「パケットフィルタ」などの名称で、特定のポートに対してのパケット通過ルールを定義できるはずだ。
たとえばssh(ポート番号は22)に対して、パケットの通過を定義するなら、プロトコルとしては「TCP」、送信元アドレス、送信元ポートは「任意/Any」、宛先アドレスも「任意/Any」として、宛先ポートとして「22」を指定したフィルタを追加する。
これで、外出先からhostsファイルに定義したホスト名を使って自宅マシンへのssh接続などが可能になるはずだ。ただし、外出先で接続したネットワークがIPv6をサポートしていないと、接続は不可能だ。
スマートフォンのテザリング経由で接続した場合はIPv6をサポートしていることが多い(MVNOでは非対応のサービスもある)。しかし、Wi-Fiホットスポットなどのサービスでは、IPv4のみということも少なくない。あらかじめIPv6での接続ができるか確認しておくといいだろう。
hostsファイルによる名前解決は簡単に定義でき、変更もファイルを編集するだけだ。利用のポイントは、ホスト名などをLAN内と同じにしないこと。hostsファイルによる名前解決は、あくまでもIPv6の長いアドレスを名前(文字列)で扱えるようにするものだ。
通常、Windowsとルーターで、LAN内で必要な名前解決ができる。しかし、異なるホスト名をhostsファイル内で使うことで、LAN内の名前解決に影響せず、外出先で利用できるIPv6アドレスの名前を使うことが可能だ。
この記事に関連するニュース
ランキング
-
1「怒らないから名乗り出なさい」 軟膏と一緒にしまわれていたのは…… “一歩間違えれば大惨事”のミスに背筋が凍る 「これはヤバい」
ねとらぼ / 2024年11月16日 20時0分
-
2不具合続いた『Wizardry Variants Daphne』実装予定機能を時期未定に―開発・運用体制の大幅増強を宣言
Game*Spark / 2024年11月16日 14時57分
-
3Bluesky、1日で100万人以上増加、エンゲージメントはXの10倍以上という調査報告も
マイナビニュース / 2024年11月15日 15時46分
-
4吉野家の出前、ロボットで配送 出前館・パナと実証実験
ITmedia NEWS / 2024年11月15日 17時15分
-
5Amazonブラックフライデーで出品されたら即ポチ必至「PC&スマホ・タブレット」5選【ネット通販傑作遊びモノ】
&GP / 2024年11月16日 20時0分
記事ミッション中・・・
記事にリアクションする
記事ミッション中・・・
記事にリアクションする
エラーが発生しました
ページを再読み込みして
ください