/ etc / hosts dapat menulis

14

Apa cara pengeditan yang benar /etc/hosts? Saya ingin menambahkan beberapa alamat IP dan nama host ke dalamnya. Ini berfungsi untuk sementara waktu (beberapa jam) dan kemudian dikembalikan ke versi aslinya. Apakah ada proses memeriksa status /etc/hostsdan mengembalikannya kembali?

Saya di MBA saya dengan Mountain Lion.

Mohammad Moghimi
sumber
FWIW, ini tidak terjadi pada saya. Saya memiliki entri di / etc / hosts ke komputer di jaringan pribadi saya (alamat 10.0.0.2) yang tidak pernah dihapus oleh sistem. Tapi mungkin ia meninggalkan alamat di jaringan lokal (10/8, 172.16 / 12 dan 192.168 / 16 - lihat RFC 1918 ) sendirian, dan menghapus alamat yang menunjuk ke alamat IPv4 global? </speculation>
Harald Hanche-Olsen
Sebenarnya, saya telah menambahkan beberapa entri beberapa waktu lalu dan mereka tinggal. Yang baru dihapus. Keduanya dalam subnet yang sama.
Mohammad Moghimi
Apakah Anda dapat menentukan proses mana yang mengubah file? Alat seperti fseventer mungkin membantu Anda memahami apa yang mengedit file. Karena biasanya dimiliki oleh root: wheel - daftar program yang dapat mengedit file harus cukup kecil. Anda juga bisa mengatur flag yang tidak dapat diubah pada file dan menghindari keharusan untuk mengembalikan perubahan.
bmike

Jawaban:

10

Sebagai alat untuk membantu Anda menemukan pelakunya, berikut adalah ontriner dtrace yang mencetak pid dan nama setiap proses yang membuka file untuk ditulis, bersama dengan nama file:

dtrace -qn 'syscall::open*:entry /arg1&3/ { printf("%d %s %s\n", pid, execname, copyinstr(arg0)); }'

Itu perlu dijalankan sebagai root (misalnya, dengan sudo). Pipa ke dalam grep hostsuntuk menghindari tenggelam dalam output dan kehilangan apa yang Anda cari:

sudo dtrace -qn 'syscall::open*:entry /arg1&3/ { printf("%d %s %s\n", pid, execname, copyinstr(arg0)); }' | grep hosts

Semoga, ini akan memberi tahu Anda proses apa yang menimpa file. Biarkan berjalan di jendela terminal sampai terpicu.

Harald Hanche-Olsen
sumber
12

Jika Anda menggunakan klien VPN Juno Pulse, /etc/hoststerlalu banyak ditulis oleh/etc/jnpr-pulse-hosts.bak

SkP
sumber
8

Apakah Anda menggunakan klien VPN AnyConnect Cisco? Jika demikian, Anda perlu mengedit /etc/hosts.ac, dan membiarkannya menyalinnya ke file langsung. Lihat artikel MacOSXHints ini , dan pertanyaan - pertanyaan sebelumnya .

EDIT: Saya tidak dapat menemukan apa pun secara spesifik tentang Janos Pulse, tetapi Network Connect Juniper mengacaukan / etc / hosts, dan saya menduga Pulse mungkin melakukan hal yang sama. Menurut posting blog ini , jika Anda membuat perubahan saat terhubung, mereka akan dikembalikan ketika Anda memutuskan sambungan, tetapi perubahan yang dilakukan saat terputus akan tetap.

Gordon Davisson
sumber
Tidak, saya tidak menggunakan AnyConnect, juga tidak ada /etc/hosts.ac. Namun, saya menggunakan perangkat lunak proxy lain: Junos Pulse
Mohammad Moghimi
1
Saya dapat mengkonfirmasi perilaku ini dengan Junos Pulse 5.1.8. Perubahan /etc/hostsharus dilakukan saat terputus atau Anda akan kehilangan mereka.
MisterEd
8

Bagi saya itu ada dalam file

/etc/pulse-hosts.bak

Anda harus mengedit file ini untuk menyesuaikan arahan host Anda

Ketika Anda akan menyambungkan kembali / menghubungkan menggunakan Pulse Secure VPN, itu akan menggabungkan arahan dari

/etc/pulse-hosts.bak

dengan konten dari arahan Pulse dan membuat

/etc/hosts

Pembaruan 2018

Dengan versi terbaru dari Pulse Secure Anda harus keluar dari program terlebih dahulu (periksa proses aktif Anda).

Ubah host Anda (/ etc / hosts) lalu mulai kembali Pulse Secure.

Stanislas Nichini
sumber
-1

Saya tidak dapat menggunakan VM cloudera quickstart setelah masuk ke VPN. Untuk mengatasi masalah ini, saya mengikuti langkah-langkah di bawah ini.

Langkah-1: Tambahkan entri /private/etc/hostsuntuk misalnya

127.0.0.1 quickstart.cloudera

Langkah-2: Masuk ke VPN untuk misalnya saya menggunakan F5 VPN

Langkah-3: Verifikasi entri yang disebutkan di atas /etc/hostsmenggunakan perintah di bawah ini

cat / etc / hosts

Saya harap ini bermanfaat.

Shreyash Limbhetwala
sumber
Bagaimana ini mengatasi masalah yang dijelaskan dalam pertanyaan, yaitu "sesuatu" yang ditimpa /etc/hosts?
nohillside
Hai @nohillside, saya menambahkan 127.0.0.1 quickstart.clouderaentri dalam /etc/hostsfile saya tetapi terhapus / diganti ketika saya terhubung ke VPN. Untuk menambahkan 127.0.0.1 quickstart.clouderaentri secara permanen, saya menambahkannya dalam /private/etc/hostsfile. Secara internal setiap kali Anda mencoba terhubung ke VPN, ia menyalin semua entri dari /private/etc/hostske /etc/hosts. Saya harap itu masuk akal sekarang.
Shreyash Limbhetwala
Hai @nohillside, Hanya FYI ... saya menggunakan klien F5 Big-IP Edge dan saya memiliki mac OS.
Shreyash Limbhetwala
Pada macOS /etcadalah symlink untuk private/etcjadi /etc/hostsdan /private/etc/hostssebenarnya file yang sama (jalankan ls -li /etc/hosts /private/etc/hostsuntuk memeriksa).
nohillside
1
Anda benar @nohillside, tetapi setelah menambahkan entri dalam /private/etc/hostsmasalah saya terselesaikan dan setelah terhubung ke VPN juga entri saya tidak terhapus / diganti.
Shreyash Limbhetwala
-1

Saat mengubah file / etc / hosts, pastikan Anda TIDAK terhubung ke VPN (setidaknya jika Anda menggunakan Network Connect oleh Juniper Networks.)

Seperti dijelaskan dalam https://mcphersonz.wordpress.com/2009/11/12/etchosts-file-is-reverting-to-a-previous-state-in-os-x/

Michel
sumber
1
Pertanyaan ini memiliki jawaban yang diterima dari enam tahun yang lalu. Posting asli tidak menyebutkan VPN yang digunakan. Meskipun pertanyaan Anda mungkin bermanfaat bagi pengguna lain yang mengalami masalah ini saat menggunakan VPN (terutama yang dari Jupiter Networks), ia memiliki sedikit relevansi dengan posting asli.
IconDaemon
@IconDaemon Terima kasih atas sambutan hangat Anda. Itu 6 tahun yang lalu tidak relevan, karena halaman tersebut masih menjadi hit pertama di mesin pencari. Juga, 4 jawaban lain sudah menyebutkan bahwa VPN dapat menyebabkan masalah yang sama persis (seperti dalam kasus saya sendiri), bahkan jika jawaban yang diterima tampaknya telah memecahkan masalah untuk OP. Namun, bahkan dia mengakui dalam komentar kepada Gordon bahwa dia menggunakan VPN (Junos Pulse). Mungkin Anda benar untuk memilih jawaban saya, karena menonaktifkan VPN sudah disebutkan dalam pembaruan jawaban Stanislas (tapi bukan itu yang Anda katakan).
Michel