
AMIタイプを使用してAWS EC2インスタンスを作成しましたAmazon Linux AMI 2018.03.0.20190514 x86_64 HVM
。
インスタンスの起動後、ソフトウェアは無効なIPアドレスを印刷します。コマンドを実行しようとしたときにhostname -i
コマンドが返されましたhostname: Unknown host
。
コマンドhostname
自体は正しいホスト名を返し、コマンドに正しいIPアドレスがあるようですifconfig
。eth0
私たちの/etc/hosts
ファイルは次のとおりです。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost6 localhost6.localdomain6
最終的には以下を含めるように変更しました。
<ip address> localhost <hostname>
::1 localhost6 localhost6.localdomain6
これにより、IPアドレスがhostname -i
返されます。ただし、/etc/hosts
まったく同じAMIタイプを実行している他のチームのEC2インスタンスとそのファイル/etc/hosts
には次のものが含まれているため、変更する必要はありません。
127.0.0.1 localhost localhost.localdomain
そのインスタンスで実行すると正しいIPアドレスが返され、ファイルをhostname -i
編集する必要はないようです。/etc/hosts
インスタンスhostname -i
が返されるのはなぜですか?Unknown host
答え1
hostname -i
DNS検証を使用してIPを取得します。このエラーが発生した場合は、コンピュータのホスト名が正しく設定されていないことを意味します。デフォルトでは、コンピュータはVPCのDHCPサービスからホスト名とプライベートIPアドレスを取得します。 Amazon Linux でデフォルト設定に戻すには、次の点を確認します。
- あなたの
/etc/sysconfig/network
外観は次のようになります(これはあなたの問題かもしれません):
NETWORKING=yes
HOSTNAME=localhost.localdomain
NOZEROCONF=yes
- あなたは
/etc/hosts
次のようにする必要があります:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost6 localhost6.localdomain6
これらの変更を適用するには、サーバーを再起動する必要があります。カスタムホスト名を使用する場合は、インスタンスの静的ホスト名を設定する必要があります。これは次のようにできます(ドメインが「example.com」で、マシンのホストが「server」であると仮定)。
- あなたは
/etc/sysconfig/network
次のようにする必要があります:
NETWORKING=yes
HOSTNAME=server.example.com
NOZEROCONF=yes
- あなたは
/etc/hosts
次のようにする必要があります:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost6 localhost6.localdomain6
<instance-private-ip> server server.example.com
サーバーを再起動したことを確認し、コマンドを実行するとその内容が印刷され、hostname
コマンドをserver.example.com
実行したときにプライベートIPを取得する必要がありますhostname -i
。
DHCP と DHCP が VPC で動作する方法の詳細については、次を参照してください。この文書。