localhostが特定のポートで127.0.0.1として解決されないのはなぜですか?

localhostが特定のポートで127.0.0.1として解決されないのはなぜですか?

ポート80で実行されているhttpdサーバーがあります光沢のあるサーバーポート3838で実行されます。試してみるとcurl 127.0.0.1:3838SHINeeサーバーに提供されるインデックスファイルが出ましたね。しかし、カールしようとすると、curl localhost:3838何も検索せずにタイムアウトします。なぜ?

私の/etc/hostsファイルの内容は次のとおりです。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
<my-ipv4-address> www.<mywebsite>.com <mywebsite>.com
<my-ipv6-address> www.<mywebsite>.com <mywebsite>.com

そして結果getent ahosts localhost

::1             STREAM localhost
::1             DGRAM  
::1             RAW    
127.0.0.1       STREAM 
127.0.0.1       DGRAM  
127.0.0.1       RAW    

ベストアンサー1

ご覧のとおりgetent ahosts localhost、localhostのIPv6エントリはIPv4エントリよりも優先されます。 (このコマンドが有用な理由を知りたい場合は、man getentおよびを参照してください。)man nss

Curlはデュアルスタックであり、IPv6アドレスとIPv4アドレスの両方を確認できるため、IPv6アドレスを使用します。ただし、シャイニーサーバーはIPv6をサポートしていないため、IPv6アドレスを直接使用するとタイムアウトが発生します。 OTOHでは127.0.0.1IPv4アドレスなので成功します。

おすすめ記事