Mengapa file / etc / hosts tidak berfungsi?

29

Saya telah mengalami masalah dengan ini untuk sementara waktu dan telah mencoba semua yang saya tahu, jadi saya pikir akhirnya saatnya untuk meminta bantuan.

Hasil edit apa pun yang saya buat /etc/hoststidak berfungsi.

Contoh:

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

Dalam contoh di atas, ketika saya mengakses dev.julianfernand.es(ini tidak ada), itu harus memuat dari 192.168.1.100.

Jika saya ping, itu berfungsi dengan baik. Namun ketika saya mengakses dev.julianfernand.esmenggunakan Google Chrome atau Firefox, itu tidak.

Sekarang, setelah saya restart beberapa kali, itu berhasil. Tetapi karena saya bekerja di perusahaan hosting WordPress yang dikelola, saya menghadapi banyak situasi di mana saya harus mengedit file saya untuk melihat situs web pelanggan di server kami.

Saya tidak bisa terus menyalakan komputer saya. Itu sama sekali tidak produktif. Memulai ulang layanan jaringan tidak berfungsi, sama untuk membersihkan cache (bahkan cache DNS Chrome internal).

Adakah yang punya ide di sini? Ini terjadi dengan SDOS (berdasarkan Ubuntu 12,04) dan Ubuntu 13,10 (setiap hari). Belum mencoba dengan versi lain.

PS: jika demikian, saya punya server NGINX yang berjalan di mesin ini dengan PHP-FPM dan MySQL.

Terima kasih sebelumnya :)

Julian Fernandes
sumber
Sulit untuk mengetahui masalahnya. Ketika mengakses situs melalui nama host (dev.julianfernand.es) gagal, dapatkah Anda mengaksesnya melalui alamat ip (192.168.1.100)?
Panther
@ bodhi.zazen Ya, saya bisa. Namun karena perusahaan kami tidak menggunakan ide "akses IP untuk mengakses situs web" default dari host bersama, ini tidak berfungsi.
Julian Fernandes
Saya tidak menyarankan Anda mengakses situs web melalui ip sebagai solusi jangka panjang. Informasi ini membantu debugging karena mengecualikan masalah lain dari firewall ke routing ke masalah sisi server.
Panther
Bagaimana jika Anda mengetik alamat ip di bilah alamat browser Anda?
Sergiy Kolodyazhnyy

Jawaban:

14

Di Ubuntu jika Anda ingin membersihkan cache DNS, Anda perlu me-restart nscddaemon.

Instal nscdmenggunakan perintah berikut:

sudo apt-get install nscd

Flush DNS Cache di Ubuntu Menggunakan perintah berikut:

sudo service nscd restart

ATAU

sudo service dns-clean start

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

Arnold
sumber
Harap periksa juga konfigurasi Nginx Anda dan file log kesalahan. Pasti ada petunjuk di sana saat Anda mengakses situs.
Arnold
7

Berikut ini berfungsi untuk saya: tambahkan

addn-hosts=/etc/hosts

di

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

bunuh dnsmasq dan

service NetworkManager restart
Ruediger
sumber
6

Bagi saya solusinya adalah mengedit /etc/nsswitch.conffile (Anda dapat menggunakan perintah sudo vim /etc/nsswitch.conf). Saya telah mengubah baris:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

untuk:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

dan sekarang berfungsi seperti yang diharapkan!

Jmarceli
sumber
1
Anda mungkin ingin filessebagai entri pertama jika Anda ingin /etc/hostslebih diutamakan daripada hasil dari server DNS.
muru
Itu aneh tapi itu bukan kesalahan, saya harus memiliki perintah ini untuk membuatnya berfungsi.
jmarceli
4

Jawaban yang diterima berfungsi dalam 12,04 hingga 13,04 dengan menonaktifkan dnsmasq, tetapi berhenti bekerja untuk saya di 13,10. Saya menemukan solusi baru berikut untuk 13.10.

Edit / etc / default / dnsmasq Anda dan ubah ENABLED=1menjadi ENABLED=0dan mulai ulang.

Mark E. Haase
sumber
2
saya tidak punya file dnsmasq di jalur yang ditentukan. Saya di linux 15.04
Hiren
Tidak ada jawaban yang diterima lagi. Jawaban mana yang Anda bicarakan?
toon81
3

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

"Fitur" baru di Ubuntu 12.04 edisi desktop akan digunakan dnsmasqsebagai plugin untuk NetworkManager untuk DNS lokal. Dnsmasq dimaksudkan untuk mempercepat layanan DNS dan DHCP tetapi hadir dengan satu efek samping yang tidak menguntungkan: dnsmasqcache DNS lokal dan mengabaikan perubahan /etc/hosts. Saya sering melakukan perubahan pada file host saat bekerja di situs web sehingga "fitur" ini cukup mengganggu.

Solusinya adalah menonaktifkan dnsmasqdi file konfigurasi Networkmanager. Buka /etc/NetworkManager/NetworkManager.confdan komentari baris:

dns=dnsmasq

NetworkManager.confFile saya berisi yang berikut ini:

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

[ifupdown]
managed=false

Lihat juga https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298

Harimau kumbang
sumber
1
Mencoba ini pada 13.10 dan SD, masih tidak ada. Tapi terima kasih atas bantuannya! :)
Julian Fernandes
@JulianFernandes Tampaknya ini tidak berfungsi pada 13.10. Saya mengikuti saran ini dan bekerja kembali pada 12,04, tetapi setelah meningkatkan ke 13,10, dnsmasq kembali dan saya tidak bisa menghilangkannya.
Mark E. Haase
1

Sederhana dan Diperbarui

  1. Buat /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Letakkan garis seperti address=/whatever/1.2.3.4di dalamnya. Lihat dokumen (cari--address ). Wildcard mungkin: address/.whatever./1.2.3.4.
  3. Bunuh dnsmasq( bug ).
  4. Restart: $ service network-manager restart.
perkasa
sumber
0

Sepertinya pengaturan Anda sangat mirip milikku. Saya memiliki kotak yang menjalankan Ubuntu sebagai server kantor dan host pengembangan saya. Di kotak itu, saya menjalankan Nginx, Apache, Tomcat, Rails apps dan apa pun yang saya butuhkan.

Dari Mac saya, saya cukup menambahkan entri host dan memuat server dengan nama apa pun yang saya butuhkan, tetapi dari klien ElementaryOS, itu tidak berfungsi.

Saya mencoba perbaikan di atas, tanpa hasil.

Apa yang saya lakukan adalah menjalankan Squid Proxy Server dan menambahkan nama host ke / etc / hosts di server. (Mengedit membutuhkan restart squid.)

Setelah itu, buat pengaturan proxy yang sesuai di browser Anda atau panel kontrol OS.

Jim O'Connell
sumber
0

Periksa izin pada /etc/hostsfile.

Pada layanan cloud saya setelah kloning server izin pada host file berubah dari 644ke 600sehingga file tidak bisa dibaca oleh apache ( www-data) saya kira. Saya lari sudo chmod 644 hostsdari /etcdan itu memperbaikinya.

Masalahnya dimulai sebagai:

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

Saya melacaknya ke variabel server di MongoClient menunjuk ke localhost. Saya tidak dapat melakukan ping localhost atau nama host.

pengguna228414
sumber
Aku kadang-kadang telah sukses mengubah 'localhost' ke '127.0.0.1' di kasus semacam ini
pbr
0

Edit /etc/nsswitch.conf, beri komentar di bawah baris dengan menambahkan # di depan baris

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

dan tambahkan

hosts:          files mdns4_minimal [NOTFOUND=return] dns

Pada dasarnya, konfigurasi diatur ulang. Sekarang proses pencarian domain akan berkonsultasi file yang pertama /etc/hostsdan kemudian akan berkonsultasi dengan DNS. Dengan konfigurasi default, server akan berkonsultasi dengan DNS terlebih dahulu sebelum layanan atau file lain yang sesuai.

Untuk tes cepat apakah berfungsi atau tidak, Anda dapat menggunakan

sudo python -m SimpleHTTPServer 80

untuk membuat Server HTTP sederhana untuk melayani file dari direktori dan kemudian berkomentar di bawah ini dalam /etc/hostsfile

127.0.0.1      localhost
127.0.1.1      01hw730983

dan tambahkan

127.0.0.1       content

kemudian pergi ke browser dan ketik content/, jika Anda dapat melihat struktur direktori yang berfungsi lain itu bukan.

bot
sumber