Contents
ループバックアドレスとは
ループバックアドレスとはネットワーク上において、自分自身を指す仮想的なアドレスのことです。
IPv4では「127.0.0.1」が、IPv6では「::1」がループバックアドレスになります。
ホスト名としては「localhost」が一般的に使われています。
本題
Windows上においては以下の「hosts」ファイルにてIPアドレスとホスト名のヒモ付が行われています。
「C:\Windows\System32\drivers\etc\hosts」
# Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost
「#」が先頭についている行はコメント行になります。
上記の状態でコマンドプロンプトで「ping」を打ってみます。
何故かホスト名「localhost」が認識されてIPv6[::1]にpingが送信されます。
つまり「localhost」に関しては「C:\Windows\System32\drivers\etc\hosts」以外に設定がある?
いろいろ調べたけど答えが無いので質問してみた
困ったときの知恵袋
質問してみた。
「C:\Windows\System32\drivers\etc\hosts」の以下の行をコメントアウトしています。
# 127.0.0.1 localhost
# ::1 localhost
ホスト名「localhost」だけはpingやブラウザでアクセスしても認識されるのは何故ですか?
別のファイルか、PC内のどこかでデフォルト設定みたいなのがあるのでしょうか?のは何故ですか?https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14202073429
そして回答もらえました。
DNSが有効ならDNSで解決されているのではないでしょうか。
例えばCloudflareのDNSはlocalhostを解決できるようです。
なるほど。DNS(Domain Name System)のことは忘れていました。
ローカルPC内でDNS設定している覚えはないので、DNS設定されていそうなルータと切り離すため、とりあえずLAN線を抜いてスタンドアロンにして「ping localhost」を実行しました。
特に結果は変わらずですね。つまりPC内だけで「localhost=127.0.0.1[::1]」と解釈されているようです。
netsh(ネットシェル)コマンドの切口から調査してみる
「netsh interface ip show config」コマンド
実行することで現在設定されているインターフェース・パラメータが一覧確認できます。
“ローカル エリア接続”
“VMware Network Adapter VMnet1”
“VMware Network Adapter VMnet8”
“Loopback Pseudo-Interface 1”
上記の4つのインターフェースが表示されました。
“Loopback Pseudo-Interface 1”・・・なんともループバック設定をやっていそうな名前だ
ネットワーク接続設定でインターフェースを無効にする
まずは上の3つを除外してみる
「コントロールパネル」>「ネトワークとインターネット」>「ネットワーク接続」
から各接続設定を右クリックし、「無効にする」を選択する
この状態で「netsh interface ip show config」コマンドを実行する
無効にした3つのインターフェースは一覧に表示されなくなりました。
あとはこの”Loopback Pseudo-Interface 1″を設定する方法が分かれば、もしかしたらlocalhostの設定場所が分かるかもしれない??と行ったところで今回はここまでになります。
追記(2019/01/23)
「Loopback Pseudo-Interface 1」は無効にすることが出来ないようです。でも調べてみたところ名前の通りループバックアドレス用のインターフェースのようで、やっぱりこのインターフェースのおかげで「localhost」は「127.0.0.1[::1]」となるんだろうなあと思った次第です。