/ etc / hosts переписується


14

Який правильний спосіб редагування /etc/hosts? Я хочу додати до нього кілька IP-адрес та імен хостів. Він працює деякий час (кілька годин), а потім повертається до початкової версії. Чи є якийсь процес перевірки стану /etc/hostsта повернення його назад?

Я на своєму MBA з Mountain Lion.


FWIW, у мене цього не відбувається. У мене є запис у / etc / hosts на комп'ютері в моїй приватній мережі (адреса 10.0.0.2), який ніколи не видалявся системою. Але, можливо, він залишає адреси в локальних мережах (10/8, 172.16 / 12 та 192.168 / 16 - див. RFC 1918 ) поодинці і видаляє адреси, що вказують на глобальні адреси IPv4? </speculation>
Харальд Ханш-Олсен

Насправді я ще раз додав записи, і вони залишилися. Нові знімаються. Обидва знаходяться в подібних підмережах.
Мохаммед Могімі

Ви змогли визначити, який процес змінює файл? Такий інструмент, як fseventer, може допомогти вам зрозуміти, що редагувати файл. Оскільки він зазвичай належить root: wheel - перелік програм, які можуть редагувати файл, повинен бути досить малим. Ви також можете просто встановити прапор непорушного файлу та уникнути необхідності повернення змін.
bmike

Відповіді:


10

Як інструмент, який допоможе вам знайти винуватця, ось dtrace oneliner, який друкує pid та ім’я будь-якого процесу, який відкриває файл для запису, а також ім'я файлу:

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

Його потрібно запускати як root (наприклад, з sudo). Вставте його, grep hostsщоб уникнути потоплення у виробництві та не пропустити те, що шукаєте:

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

Сподіваємось, це підкаже вам, який процес перезаписує файл. Просто нехай він працює в термінальному вікні, поки воно не спрацьовує.


13

Якщо ви використовуєте Juno Pulse VPN - клієнт, /etc/hostsотримує перезаписан/etc/jnpr-pulse-hosts.bak


11

Для мене це у файлі

/etc/pulse-hosts.bak

Вам потрібно відредагувати цей файл, щоб налаштувати директиви ваших хостів

Коли ви збираєтеся знову підключитися / підключитися за допомогою Pulse Secure VPN, він об'єднає директиви з

/etc/pulse-hosts.bak

із вмістом директив Pulse і створює

/etc/hosts

Оновлення 2018 року

З новою версією Pulse Secure потрібно спочатку вийти з програми (перевірити ваш активний процес).

Змініть свій хост (/ etc / hosts), а потім перезапустіть Pulse Secure.


8

Чи використовуєте ви VPN-клієнт Cisco AnyConnect? Якщо це так, вам потрібно відредагувати /etc/hosts.ac замість цього і дозволити йому скопіювати це у файл живого перегляду. Дивіться цю статтю MacOSXHints та ці попередні питання .

EDIT: Я не можу знайти нічого конкретно про Janos Pulse, але Juniper's Network Connect меси з / etc / hosts, і я підозрюю, що Pulse може зробити те саме. Відповідно до цієї публікації в блозі , якщо ви внесете зміни під час підключення, вони будуть повернені, коли ви від'єднаєтесь, але зміни, внесені під час відключення, залишатимуться.


Ні, я не використовую AnyConnect, також немає /etc/hosts.ac. Однак я використовую інше програмне забезпечення проксі: Junos Pulse
Mohammad Moghimi

1
Я можу підтвердити цю поведінку за допомогою Junos Pulse 5.1.8. Зміни /etc/hostsповинні бути зроблені при відключенні або ви втратите їх.
MisterEd

-1

Мені не вдалося скористатися функцією швидкого запуску cloudera VM після входу в VPN. Щоб вирішити цю проблему, я дотримувався нижче кроків.

Крок 1: Додайте запис, /private/etc/hostsнаприклад

127.0.0.1 quickstart.cloudera

Крок 2: Введіть VPN, наприклад, я використовую F5 VPN

Крок 3: Перевірте вищезазначений запис у /etc/hostsкоманді нижче

кішка / тощо / господарі

Сподіваюся, що це стане в нагоді.


Як це вирішує проблему, описану у питанні, а саме "щось" перезаписування /etc/hosts?
nohillside

Привіт @nohillside, я додав 127.0.0.1 quickstart.clouderaзапис у свій /etc/hostsфайл, але його видалили / змінили, коли я підключався до VPN. Щоб додати 127.0.0.1 quickstart.clouderaзапис назавжди, я додав його у /private/etc/hostsфайл. Внутрішньо кожен раз , коли ви намагаєтеся підключитися до VPN, він копіює всі записи з /private/etc/hostsдо /etc/hosts. Я сподіваюся, що це має сенс зараз.
Шреяш Лімбетвала

Привіт @nohillside, просто FYI ... я використовую клієнт F5 Big-IP Edge, і у мене є Mac OS.
Шреяш Лімбетвала

На macOS /etcє символьним посиланням на private/etcтак /etc/hostsі /private/etc/hostsє фактично тим самим файлом (запустіть, ls -li /etc/hosts /private/etc/hostsщоб перевірити).
nohillside

1
Ви маєте рацію @nohillside, але після додавання запису в /private/etc/hostsмоїй проблемі було вирішено і після підключення до VPN також мій запис не стирається / не змінюється.
Шреяш Лімбетвала

-1

Змінюючи файл / etc / hosts, переконайтеся, що ви НЕ підключені до VPN (принаймні, якщо ви використовуєте Network Connect Juniper Networks.)

Як описано в https://mcphersonz.wordpress.com/2009/11/12/etchosts-file-is-reverting-to-a-previous-state-in-os-x/


1
На це запитання прийнято відповідь від шести років тому. Оригінальна публікація не згадує VPN, який використовується. Хоча ваше запитання може бути корисним для інших користувачів, які відчувають цю проблему під час використання VPN (особливо одного з мереж Jupiter Networks), воно мало стосується початкової публікації.
IconDaemon

@IconDaemon Дякую за теплий прийом Те, що це було 6 років тому, не має значення, адже сторінка все ще є першим хітом у пошуковій системі. Також у 4 інших відповідях уже згадується, що VPN може викликати таку саму проблему (як у моєму власному випадку), навіть якщо прийнята відповідь, здавалося, вирішила проблему для ОП. Однак навіть він визнає у коментарі Гордону, що він використовував VPN (Junos Pulse). Можливо, ви мали рацію проголосувати мою відповідь, бо відключення VPN вже згадувалося в оновленнях відповіді Станісласа (але це не те, що ви говорите).
Мішель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.