お目にかかった動作は、確かに興味深いものでした。なぜループバックアドレスの 127.0.0.1
を localhost
に置き換えると、異なる動作になるのか説明させていただきます。
ネットワークアドレッシングの文脈において、127.0.0.1
はループバックアドレスであり、ローカルマシン自体を表します。BINDがこのアドレス(127.0.0.1)での接続を受け入れるように設定されている場合、それはローカルマシンからの接続のみを受け付けます。
一方、localhost
は通常、ループバックアドレスに関連付けられたホスト名です。これはローカルマシンを指すより一般的な方法です。'listen-on'ディレクティブで 127.0.0.1
を localhost
に置き換えた場合、BINDは異なる解釈を行います。
設定で localhost
を指定すると、BINDはそれを実際の localhost
に関連付けられたIPアドレスに解決します。通常、そのIPアドレスは 127.0.0.1
です。この場合、BINDは 'localhost' をループバックアドレスと認識するため、外部のクエリを許可します。
異なる動作が観察された原因は、おそらくBINDが 'listen-on' ディレクティブで提供された値を解釈する方法に起因するものです。直接 127.0.0.1
を使用する場合、BINDは接続をローカルマシンに制限します。しかし、localhost
を使用すると、BINDはそれをループバックアドレスに解決し、外部のクエリを許可します。