Kenapa pengalihan file host gagal?

12

Saya mencoba mengarahkan google.com ke mesin lokal saya untuk bersenang-senang dan belajar dengan file / etc / hosts ini di Mac saya.

127.0.0.1 www.google.com

Namun, www.google.com masih memetakan ke beranda Google ketika saya mengunjunginya di Chrome di Mac saya. Mengapa?

Pada dasarnya, ini yang saya lakukan:

  1. Ketikkan sudo vim /etc/hoststerminal.
  2. Dimasukkan 127.0.0.1 www.google.comke dalam file host.
  3. Disimpan dan keluar dari vim.
David Faux
sumber

Jawaban:

10

The hostsfile tidak bekerja dengan cara ini. Anda hanya dapat menggunakannya untuk memetakan nama host ke alamat IP, bukan ke localhost.

Untuk kasus Anda, Anda akan menggunakan 127.0.0.1 www.google.com, yaitu peta www.google.com ke 127.0.0.1.

Jika Anda ingin memetakan lebih banyak nama host ke IP menghanguskan, Anda cukup menambahkan nama host itu di baris yang sama, misalnya 127.0.0.1 www.a.com www.b.com.

Renan
sumber
1
Terima kasih. Saya baru saja mengubah file / etc / hosts di Mac saya menjadi 127.0.0.1 www.google.com. Namun, google.com masih mengarah ke beranda Google. Apakah saya perlu menyegarkan sesuatu? Haruskah saya me-restart komputer saya?
David Faux
Anda seharusnya tidak perlu. Coba tambahkan 127.0.0.1 google.com(tanpa www) setelah baris ini dan periksa apakah itu berfungsi.
Renan
127.0.0.1 google.comjuga tidak bekerja. Saya tidak yakin apa yang terjadi ... Saya tahu itu /etc/hoststautan lunak ke /private/etc/hostsMac, tapi saya pikir itu tidak membantu sama sekali.
David Faux
1
Teknisnya: hostsmemetakan nama host ke alamat IP, bukan sebaliknya.
Dennis
1
@ Dennis, itulah yang akan saya katakan, tetapi sekali lagi, itu benar-benar bekerja dua arah ketika Anda memikirkannya, karena itu menciptakan hubungan antara dua item.
Synetech
9

Peramban web bukan cara terbaik untuk memeriksa apakah hostssintaks Anda benar. Coba jalankan

ping www.google.com

dan verifikasi itu ping 127.0.0.1.

Alasan mengapa Chrome tampaknya mengabaikan hostsfile Anda adalah caching:

Jika Chrome telah menanyakan IP akhir-akhir ini (definisi akhir-akhir ini kemungkinan besar tergantung pada waktu untuk hidup (TTL) yang dikembalikan oleh server DNS), ia akan memotong hostsfile, karena sudah mengetahui IP yang benar. Ini dilakukan untuk mempercepat penelusuran web.

Untuk membuat Chrome menghargai entri baru, lakukan follwing:

  1. Sunting /etc/hostsseperti dijelaskan olehRenan.

  2. Pergi ke chrome://chrome/settings/clearBrowserData.

  3. Pilih since the beginning of time.

  4. Periksa Empty the cache, tetapi hapus centang semua yang lain.

  5. Klik Clear browsing datadan tunggu sampai selesai.

  6. Mulai ulang Chrome.

Chrome harus menghargai hostsfile Anda sekarang.

Dennis
sumber
2
Saya belajar ini sejak lama dengan IE6. Jika saya membuat perubahan pada file HOSTS sementara IE masih terbuka, saya harus secara khusus menutupnya dan menjalankannya lagi untuk mengambil perubahan. Ini berlaku untuk sebagian besar program. Namun beberapa program (seperti versi Chrome dari satu atau dua tahun terakhir) akan benar-benar membaca kembali file HOSTS secara berkala, jadi jika Anda melakukan perubahan, cukup tunggu satu atau dua menit, lalu segarkan (tidak perlu menghapus cache). (Kebijakan membaca ulang ini kadang-kadang berguna seperti ini, tetapi biasanya cukup buruk pada kenyataannya karena boros, dan khususnya buruk jika file HOSTS besar.)
Synetech
@Synetech: Chrome mengambil perubahan secara hostsinstan, selama entri tersebut bukan nama host yang sudah di-cache. Saya berasumsi bahwa ini hostshanya memeriksa jika TTL telah lewat. Dengan situs web besar , itu bisa memakan waktu cukup lama.
Dennis
Saya tidak tahu secara spesifik tentang bagaimana versi yang berbeda tentang membaca kembali file HOSTS, tetapi Anda dapat menggunakan Filemon / ProcMon untuk melihatnya beraksi; chrome.exeterkadang akan membaca seluruh file.
Synetech
2
Ada cara yang lebih brutal flushing cache DNS chrome ini superuser.com/questions/203674/...
hakunin
@akunin: Rapi. Pada Chromium 25.0.1364.160 Ubuntu 12.04, ini bahkan tidak diperlukan lagi. Saya check-in net-internals/#dns, dan cache host dibersihkan secara otomatis ketika /etc/hostsdiubah.
Dennis
1

Jawaban saya adalah kombinasi dari yang di atas karena saya terhubung ke kantor saya melalui Fortinet SSL VPN untuk Ubuntu 16.04.

Hal pertama yang harus saya lakukan adalah membuka konsol terminal saya dan menjalankan perintah berikut:

sudo nano /etc/resolvconf/resolv.conf.d/base

Saya menambahkan contoh berikut:

searchdomain domain.local
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

Kemudian saya menyimpan file dengan menekan CTRL-Odan menutup nano dengan menekan CTRL-X.

Saya kemudian melakukan yang berikut ini dan bekerja dengan sempurna:

Untuk membuat Chrome menghargai entri baru, lakukan follwing:

Sunting /etc/hostsseperti dijelaskan olehRenan.

  1. Pergi ke chrome://chrome/settings/clearBrowserData.
  2. Pilih sejak awal waktu.
  3. Centang Kosongkan cache, tetapi hapus centang semua yang lain.
  4. Klik Bersihkan data penelusuran dan tunggu sampai selesai.
  5. Mulai ulang Chrome.

Chrome harus menghormati file host Anda sekarang.

pengguna712460
sumber