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


29

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

編集した/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を実行すると、問題なく動作します。ただし、dev.julianfernand.esGoogle ChromeまたはFirefoxを使用してアクセスすると、アクセスできません。

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

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

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

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

前もって感謝します :)


問題を知るのは難しい。ホスト名(dev.julianfernand.es)経由でサイトにアクセスできない場合、IPアドレス(192.168.1.100)経由でアクセスできますか?
パンサー

@ bodhi.zazenはい、できます。しかし、当社は共有ホストからのデフォルトの「ウェブサイトにアクセスするためのアクセスIP」アイデアを使用しないため、これは機能しません。
ジュリアンフェルナンデス

長期的な解決策として、IP経由でWebサイトにアクセスすることはお勧めしませんでした。ただし、この情報は、ファイアウォールからサーバー側へのルーティングに関する他の問題を除外するため、デバッグに役立ちます。
パンサー

ブラウザのアドレスバーにIPアドレスを入力するとどうなりますか?
セルギーKolodyazhnyy

回答:


14

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

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

sudo apt-get install nscd

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

sudo service nscd restart

または

sudo service dns-clean start

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


Nginxの構成とエラーログファイルも確認してください。サイトにアクセスするとき、そこに何らかの手がかりがなければなりません。
アーノルド

7

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

addn-hosts=/etc/hosts

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

dnsmasqを殺し、

service NetworkManager restart

6

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

hosts:          files mdns4_minimal [NOTFOUND=return] dns

に:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

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


1
DNSサーバーからの結果よりも優先するfiles場合は、おそらく最初のエントリとして必要です/etc/hosts
ムル

それは奇妙なことですが、間違いではありません。それを機能させるには、まさにこの順序が必要です。
jmarceli

4

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

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


2
指定したパスにdnsmasqファイルがありません。私はLinux 15.04を使用しています
-Hiren

受け入れられた答えはもうありません。あなたはどの答えについて話しているのですか?
toon81

3

から: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ファイルを頻繁に変更するため、この「機能」は非常に迷惑でした。

解決策はdnsmasq、Networkmanager構成ファイルで無効にすることです。行を開い/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も参照してください


1
13.10とelementaryOSでこれを試しましたが、まだ何もありません。しかし、助けてくれてありがとう!:)
ジュリアンフェルナンデス

@JulianFernandesこれは13.10では動作しないようです。私はこのアドバイスに従い、12.04で機能しましたが、13.10にアップグレードした後、dnsmasqが戻ってきて、それを取り除くことはできません。
マークE.ハーセ14


1

シンプルで更新された

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

0

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

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

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

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

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


0

/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できませんでした。


私は時々例これらの種類に「127.0.0.1」に「localhostの」に変更成功持っていた
PBR

0

編集し/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/ディレクトリ構造が機能していることを確認できる場合はを入力します。

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