「ホスト名--fqdn」がUbuntuコンピュータで機能しないのはなぜですか?


10

Ubuntu 10.04 LTSを使用しhostname --fqdnていますhostname: Name or service not known。コマンドを入力すると、次のメッセージが表示されます。

このため、global正常にインストールできず、試行すると次のエラーが発生します。

Setting up global (5.7.1-1) ...
hostname: Name or service not known
dpkg: error processing global (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 global
E: Sub-process /usr/bin/dpkg returned an error code (1)

/etc/nsswitch.confは下です。

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

これが何を意味し、これをどのように修正できるかについて誰かが何か考えを持っていますか?


1
なぜFQDNが必要なのですか?質問する必要がある場合は、おそらく1つは必要ないか、1つまたは両方を使用することはできません。
msw 2010

回答:


11

内容を教えて頂けます/etc/nsswitch.confか?

/etc/nsswitch.confの「hosts」行に不適切な値があるようです。「ファイル」で始まりますか?

それ以外の場合、FQDNは/ etc / hostsを編集し、ホスト名が表示される行にFQDNを置くことによって設定されます。ホスト名「foo」があり、次の行を見つけたとします。

127.0.0.1 foo

次のように編集します。

127.0.0.1 foo.localdomain foo

foo.localdomain 新しいFQDNになります。


あなたが尋ねたように私はそのファイルの内容を含めました!返信いただきありがとうございます!!:)
RadiantHex

@Rapael / etc / hostsファイルを変更しましたが、名前解決で一時的なエラーが発生し始めました。なぜそれが起こっているのですか?
Muhammad Adeel Zahid 2017年

6

/ etc / hostsを編集してFQDNを追加します

ここにある構文に関する情報:http : //www.faqs.org/docs/securing/chap9sec95.html

更新:もう一度質問を読み直すと、パスが正しく設定されていないか、ホスト名プログラムに問題があるように思われます。

「どのホスト名」を実行する

パス '/ bin / hostname'を返します。

それが機能する場合は、次のようにコマンドを再試行してください。

'/ bin / hostname --fqdn'


ありがとう!!! これを聞いたら申し訳ありませんが、どうすれば私のFQDNを見つけることができますか?
RadiantHex

1
これは「完全修飾ドメイン名」の略です。superuser.comはFQDNです。ドメインを所有している場合はそれを使用できますが、それ以外の場合は、内部ネットワーク上にある場合は、何かを構成できます。
Mudfly

1
@Mudflyに感謝!私はあなたの指示を試しました、最後のコマンドは再び「ホスト名:名前またはサービスが不明です」を返します!
RadiantHex

より多くの情報がなければ、問題の状態を知ることは困難です。EG:これはローカルインストールですか、ssh経由でログインしていますか、ユーザーアカウントを使用していますか、それともrootでログインしていますか?ubuntuforums.orgにアクセスして、同様の問題を解決した他のユーザーを検索することをお勧めします。
Mudfly

1
これはここで大きなジャンプを取っていますが、Ubuntuはrootの使用よりもsudoの使用を支持しています。シェルが正しく設定されていない可能性があります。これをテストするのはとても簡単です。最初に、「ls -al / root /」を実行して、.bashrcが表示されるかどうかを確認できます。次に、.bashrcがない場合は、skel 'cp /etc/skel/.bashrcからコピーします。これは、すでにファイルがある場合でも可能です。3番目に「/ bin / bash」を実行して、bashが実行されていることを確認します。最後に、元のコマンドを再試行してください。完全に構成されたbashシェルで実行されているはずです。
Mudfly

0

単純なhostnameコマンド呼び出しとは異なり、呼び出しhostname --fqdnはいくつかのことを実行しようとしますが、その結果、DNSルックアップが発生することがよくあります。

たとえば、次の(成功した)呼び出しを見てみましょう(これはRed Hatボックスからですが、Ubuntuでも同じであると想像します)。

# hostname --fqdn --verbose
gethostname()=`myserver.example.com'
Resolving `myserver.example.com' ...
Result: h_name=`myserver.example.com'
Result: h_addr_list=`10.1.2.3'
myserver.example.com

非常に役立つ--verboseオプションに注意してください。

簡単に言うhostnameと、単純なもの以外はおそらくあなたが期待する以上のことをしているでしょう。次に別の例を示します。

# hostname --ip --verbose
gethostname()=`myserver.example.com'
Resolving `myserver.example.com' ...
Result: h_name=`myserver.example.com'
Result: h_addr_list=`10.1.2.3'
10.1.2.3

そしてそれを四捨五入するには:

# hostname --verbose
gethostname()=`myserver.example.com'
myserver.example.com

システムのホスト名(gethostnameによって返される)は、「myserver」などの非修飾ホスト名になる可能性があることに注意してください。これが、インストールするプログラムがhostname --fqdn代わりに使用している理由です。

エラーメッセージhostname: Name or service not knownリゾルバー関数から発生します。これらは、名前とアドレス(通常はDNS名とIPアドレス)の間で変換されるシステムライブラリの一部です。

実際、リゾルバはDNSだけでなく(ホスト名とIPアドレス間の変換以上のもの)、その動作はファイルによって部分的に設定されており/etc/nsswitch.conf、通常、この順序で以下を調べます。

  • 'hosts'(Linuxでは/ etc / hostsを意味します)
  • (時々)nscd(ネームサービスキャッシングデーモン)
  • 「dns」

(注意:dnsmasqdなどのキャッシュDNSサーバーを使用することもできます---上記の点については、まだ「dns」メカニズムの下にあります)。

dighost、由緒あるnslookupなどのツールはこの順序に従っていないことを指摘しておく必要があります。これらは明示的にDNSクエリツールです。つまり、スクリプトなどを使用すると、通常のクライアントプログラム(システムリゾルバを使用)とは異なる結果が得られる可能性があります。このため、特にnscdなどのキャッシュコンポーネントを実行している場合は、スクリプトでgetentプログラムを使用してください

# getent hosts myserver.example.com
10.1.2.3    myserver.example.com

したがって、ここで重要なポイントは、a)自分のマシンのエントリで/ etc / hostsが適切に構成されている場合、およびb)/etc/nsswitch.confが通常の構成hosts: files dnsである場合、c)であってもご使用の環境でDNSが適切に構成されていない場合は、機能するhostname --fqdnはずです。

適切に構成されたDNSでは、サーバーの「正規の」名前を提供する1つの「逆」アドレス(「PTRレコード」)があり、その名前も検索できるはずです(「 IPv4のレコード」)。

ショートバージョン:追加--verbose; それはあなたが欠けているものをあなたに指し示すでしょう。

何が起こっているのかを理解するのに役立つことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.