なぜ私のIPがネットワーク上のIPの代わりに127.0.0.1として解決されるのですか?

なぜ私のIPがネットワーク上のIPの代わりに127.0.0.1として解決されるのですか?

Linuxシステムでは、IP検証がどのように機能するのか理解できません。私の問題を説明するために、WindowsとLinuxの例を見てみましょう。

Windows: Windowshostsファイルが空です。コメントのみが含まれています。

Pythonシェルで次のコマンドを実行します。

socket.gethostbyname(socket.gethostname())

192.168.10.105私のネットワークには現在IPがあります。私が期待したように。

Linux:Linuxの外観は次のとおりです/etc/hosts

127.0.0.1       localhost.localdomain           localhost

同じPythonコマンドを使用すると、リソースを一時的に使用できないというエラーが発生します。私はこれが私の現在のホスト名が不足していることに関連していると思います/etc/hosts。手動で追加すると

127.0.0.1       localhost.localdomain           localhost    MyHostName

pythonコマンドが返されます127.0.0.1。これはまだ私が予想したものとは異なります。ただし、IPとホスト名をファイルに追加できます。

127.0.0.1       localhost.localdomain           localhost
192.168.10.115  MyHostName 

しかし、これは確かに正しいアプローチではありません。 DHCPを使用すると、このIPが変更されます。

LinuxでWindowsと同じ結果を得るにはどうすればよいですか?私の構成(または私の考え)にはどんな問題がありますか?

答え1

ネットワークカードにIPを割り当てるときに実行する指示を含むファイル(/etc/udhcpc/default.script)を編集できます。

変更できる内容は次のとおりです。更新|ifconfig ディレクティブの下にセクションを追加します。

echo "127.0.0.1 localhost.localdomain localhost"> /etc/hosts
echo "$i myHostName" > /etc/hosts

関連情報