/usr/bin/host は、再起動後も /etc/hosts に対する変更を選択しません。

/usr/bin/host は、再起動後も /etc/hosts に対する変更を選択しません。

Ubuntu Server 12.04( amd64) システムがあり、変更すると、/etc/hosts再起動後も変更は適用されません。これをテストするために使用していますが、/usr/bin/host他のプログラムでも認識していないようです。

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

hosts:          files dns

だから私はそれがうまくいくことを願っています。また、mtime編集によって変更が行われたかどうかを確認しservice networking restart(非常に難しいですが)実行も試みましたresolvconf -u

すべてのコマンドはroot必要に応じて実行されます。コンピュータには、/etc/network/interfacesNetwork Manager(インストールされていない)を介さずに手動で設定されたネットワークがあります。

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

私は何を見逃していますか?

メモ:ローカルで実行されているDNSサーバーはなく、nameserverの行/etc/resolv.conf(およびその対応する行interfaces)は間違ったIPを提供するDNSサーバーを指します。

また注:オンラインで検索して「似たような質問」を読んだが、私の出来事は扱われていないようだ。

/etc/host.conf例:

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

答え1

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

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    

答え2

この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

答え3

dig、クエリhostなどのプログラムnslookupドメイン名システムただ。/etc/hostsNISやLDAPなどの他のホスト名ソースには問い合わせません。

ほとんどの設定でホスト名をローカルに正常に追加する最も簡単な方法は、DNSサーバーを実行することです。それにもかかわらず、DNSキャッシュを実行することはパフォーマンスの面で良い考えです。つまり、ローカルで実行されているDNSサーバーがないという事実は、解決すべき問題ではなく、解決すべき問題ではありません。

DNS広く使用され、サイズが小さく(多くのLinuxベースのルータで使用されている)、設定が簡単です。 DnsmasqはDNS要求をキャッシュし、ホストファイルに追加の名前を提供できます。小規模ネットワークに適したネイティブDHCPサーバーも提供していますが、その部分を必ず使用する必要はありません。隔離されたマシンがある場合は、そのマシンでDnsmasqを実行してください。ローカルネットワークがある場合は、ルーターでDnsmasq(またはすでに持っている他の同等のソフトウェア)を実行してください。バラよりホスト名を使用してLANからコンピュータにアクセスする方法Dnsmasqの設定方法など、詳細をご覧ください。

関連情報