web-dev-qa-db-ja.com

/ usr / bin / Hostは、再起動後も/ etc / hostsへの変更を取得しません

Ubuntu Server 12.04(AMD64)マシンを使用していますが、/etc/hostsを変更すると、再起動しても変更が反映されません。 /usr/bin/Hostを使用してテストしていますが、他のプログラムもそれを取得していないようです。

これはサーバーであり、nscddnsmasqはインストールされていません。また、ファイル/etc/nsswitch.confには次の行が含まれています。

hosts:          files dns

私はそれが機能することを期待するように。また、ファイルのmtimeが編集によって変化することを確認し、service networking restart(すべての確率に対して)とresolvconf -uを実行してみました。

必要に応じてrootとして実行されるすべてのコマンド。マシンのネットワークは、Network Managerを介さずに/etc/network/interfacesで手動で構成されています(どちらもインストールされていません)。

基本的に私が達成したいのは、いくつかのホストのIPを操作できることです。その理由は、ネットワーク内でルートのないIPを取得していますが、HTTPSを介してそのサービスの外部IPを使用できるためです。

何が足りないのですか?

注:ローカルで実行されているDNSサーバーはなく、/etc/resolv.confnameserver行(およびinterfacesのそれぞれの行)は、次のDNSサーバーを指しています。私は間違ったIPです。

注: Webで検索し、「同様の質問」を読みましたが、私のケースはカバーされていないようです。

/etc/Host.confは:

# The "order" line is only used by old versions of the C library.
order hosts,bind
multi on
4
0xC0000022L

Hostコマンドはhostsファイルをチェックしません。マンページから:

Host is a simple utility for performing DNS lookups.

ホストファイルを尊重しながらルックアップをテストする場合は、pingまたはgetentを使用します。

$ tail -1 /etc/hosts
127.0.0.1   google.com
$ ping -c1 google.com | head -1
PING google.com (127.0.0.1) 56(84) bytes of data.
$ getent ahosts google.com
127.0.0.1       STREAM google.com
127.0.0.1       DGRAM  
127.0.0.1       RAW    
8
carlwgeorge

HostユーティリティはDNSルックアップに使用されます。ホストファイルやホスト名を解決するDNS以外の方法は関係ありません。システムが通常の状況(nsswitch.confを考慮に入れる)でホスト名をどのように解決するかを確認したい場合は、getentを使用できます。 Hostユーティリティは、DNSテスト用に予約する必要があります。次に例を示します。

$ Host foobar.com
foobar.com has address 69.89.31.56
foobar.com mail is handled by 0 foobar.com.
$ getent hosts foobar.com
10.188.14.16    foobar.com
2
jordanm

DigHostnslookupなどのプログラムは、 [〜#〜] dns [〜#〜] のみをクエリします。 /etc/hosts、NIS、LDAPなどの他のホスト名のソースを照会しません。

ほとんどのセットアップでは、ホスト名をローカルにスムーズに追加する最も簡単な方法は、DNSサーバーを実行することです。とにかくパフォーマンスのためにDNSキャッシュを実行することは良い考えです。つまり、DNSサーバーがローカルで実行されていないという事実は、回避するものではなく、修正するものです。

Dnsmasq は一般的な選択です。広く利用可能で、小さく(多くのLinuxベースのルーターで使用されています)、構成が簡単です。 DnsmasqはDNS要求をキャッシュし、hostsファイルから追加の名前を提供できます。また、小規模なネットワークに適した基本的なDHCPサーバーも提供しますが、その部分を使用する必要はありません。分離されたマシンがある場合は、そのマシンでDnsmasqを実行します。ローカルネットワークがある場合は、ルーターでDnsmasq(またはすでに存在する他の同等のソフトウェア)を実行します。 Dnsmasqの設定方法などの詳細については、 ホスト名を使用してLANからマシンにアクセスできるようにする方法 を参照してください。