web-dev-qa-db-ja.com

/ etc / hostsファイルが機能しないのはなぜですか?

私はしばらくの間これで問題を抱えていて、私が知っているすべてを試しましたので、ついに助けを求める時が来たと思いました。

/etc/hostsを編集しても機能しません。

例:

julian@ifrit:~$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   ifrit
192.168.1.100   dev.julianfernand.es

上記の例では、dev.julianfernand.es(これは存在しません)にアクセスすると、192.168.1.100からロードされます。

Pingを実行すると、問題なく動作します。ただし、Google ChromeまたはFirefoxを使用してdev.julianfernand.esにアクセスすると、アクセスできません。

今、数回再起動した後、動作します。しかし、私はマネージドWordPressホスティング会社で働いているため、サーバーで顧客のWebサイトを表示するためにファイルを編集する必要がある多くの状況に対処しています。

コンピューターを再起動し続けることができません。まったく生産的ではありません。キャッシュをクリアする場合と同じように、ネットワークサービスの再起動は機能しません(内部Chrome DNSキャッシュも)。

誰もがここにアイデアを持っていますか?これは、elementaryOS(Ubuntu 12.04ベース)およびUbuntu 13.10(毎日)で発生します。他のバージョンではまだ試していません。

PS:この問題の場合、PHP-FPMとMySQLを使用してこのマシンで実行しているNGINXサーバーがあります。

前もって感謝します :)

28

UbuntuでDNSキャッシュをフラッシュする場合は、nscdデーモンを再起動する必要があります。

次のコマンドを使用してnscdをインストールします。

Sudo apt-get install nscd

次のコマンドを使用して、UbuntuでDNSキャッシュをフラッシュします。

Sudo service nscd restart

OR

Sudo service dns-clean start

参照: http://www.upubuntu.com/2012/05/how-to-flush-clear-dns-cache-under.html

14
Arnold

次は私のために働いた:追加

addn-hosts=/etc/hosts

/etc/NetworkManager/dnsmasq.d/hosts.conf

dnsmasqを殺し、

service NetworkManager restart
6
Ruediger

私にとっての解決策は、/etc/nsswitch.confファイルを編集することでした(コマンドSudo vim /etc/nsswitch.confを使用できます)。行を変更しました:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

に:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

そして今、それは期待通りに機能しています!

6
jmarceli

受け入れられた回答は、12.04〜13.04でdnsmasqを無効にすることで機能しますが、13.10で機能しなくなりました。 13.10の次の新しいソリューションを見つけました。

/ etc/default/dnsmasqを編集し、ENABLED=1ENABLED=0に変更して再起動します。

4
Mark E. Haase

From: http://blog.calebthorne.com/2012/08/broken-etchosts-in-ubuntu-1204.html

Ubuntu 12.04デスクトップエディションの新しい「機能」は、dnsmasqをローカルDNSのNetworkManagerのプラグインとして使用することです。 DnsmasqはDNSおよびDHCPサービスを高速化することを目的としていますが、1つの不幸な副作用があります。dnsmasqはローカルDNSをキャッシュし、/etc/hostsへの変更を無視します。ウェブサイトでの作業中にhostsファイルを頻繁に変更するため、この「機能」は非常に迷惑でした。

解決策は、Networkmanager構成ファイルでdnsmasqを無効にすることです。 /etc/NetworkManager/NetworkManager.confを開き、次の行をコメントアウトします。

dns=dnsmasq

私のNetworkManager.confファイルには次のものが含まれています。

[main]
plugins=ifupdown,keyfile
# dns=dnsmasq

[ifupdown]
managed=false

https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298 も参照してください

3
Panther

シンプルで更新された

  1. /etc/NetworkManager/dnsmasq.d/hosts.confを作成します。
  2. その中にaddress=/whatever/1.2.3.4のような行を入れます。 ドキュメント--addressを探してください)を参照してください。ワイルドカードが可能です:address/.whatever./1.2.3.4
  3. Kill dnsmasqbug )。
  4. 再起動します:$ service network-manager restart
1
mightyiam

/etc/hostsファイルの権限を確認してください。

サーバーを複製した後のクラウドサービスでは、hostsファイルのアクセス許可が644から600に変更されたため、Apache(www-data)がファイルを読み取ることができませんでした。 Sudo chmod 644 hostsから/etcを実行しましたが、修正しました。

問題は次のように始まりました。

MongoConnectionException Failed to connect to: localhost:27017: Previous connection attempts failed, server blacklisted. 

Localhostを指すMongoClientのサーバー変数まで追跡しました。 localhostまたはホスト名にpingできませんでした。

0
user228414

/etc/nsswitch.confを編集し、行の前に#を追加して行の下にコメントアウトします

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

そして追加

hosts:          files mdns4_minimal [NOTFOUND=return] dns

基本的に、構成は並べ替えられます。ドメインルックアッププロセスは、最初に/etc/hostsであるファイルを参照し、次にDNSを参照します。デフォルト設定では、他の適切なサービスまたはファイルの前に、最初にDNSを調べます。

使用できるかどうかを簡単にテストするために

Sudo python -m SimpleHTTPServer 80

ディレクトリからファイルを提供する単純なHTTPサーバーを作成し、/etc/hostsファイルの行の下にコメントする

127.0.0.1      localhost
127.0.1.1      01hw730983

そして追加

127.0.0.1       content

次に、ブラウザに移動して、content/と入力します(ディレクトリ構造が機能していることを確認できる場合はそうではありません)。

0
bot

あなたの設定は私のものに非常に似ているようです。 Ubuntuをオフィスサーバーおよび開発ホストとして実行しているボックスがあります。そのボックスで、Nginx、Apache、Tomcat、Railsアプリなど、必要なものをすべて実行します。

Macから、hostsエントリを追加して、必要な名前でサーバーをロードできますが、ElementaryOSクライアントからは機能しません。

上記の修正を試みましたが、成功しませんでした。

私がやったのは、Squid Proxy Serverを実行し、サーバー上の/ etc/hostsにホスト名を追加することでした。 (編集するには、squidを再起動する必要があります。)

その後、ブラウザまたはOSのコントロールパネルで適切なプロキシ設定を行います。

0
Jim O'Connell