/ etc / hosts zostaje nadpisany

14

Jaki jest prawidłowy sposób edycji /etc/hosts? Chcę dodać do niego adresy IP i nazwy hostów. Działa przez chwilę (kilka godzin), a następnie wraca do pierwotnej wersji. Czy istnieje proces sprawdzający status /etc/hostsi przywracający go z powrotem?

Jestem na moim MBA z Mountain Lion.

Mohammad Moghimi
źródło
FWIW, to mi się nie zdarza. Mam wpis w / etc / hosts na komputerze w mojej prywatnej sieci (adres 10.0.0.2), który nigdy nie został usunięty przez system. Ale może pozostawia adresy w sieciach lokalnych (10/8, 172.16 / 12 i 192.168 / 16 - patrz RFC 1918 ) i usuwa adresy wskazujące na globalne adresy IPv4? </speculation>
Harald Hanche-Olsen
Właściwie jakiś czas temu dodałem kilka wpisów i zostały. Nowe są usuwane. Oba są w podobnych podsieciach.
Mohammad Moghimi,
Czy udało Ci się ustalić, który proces zmienia plik? Narzędzie takie jak fseventer może pomóc ci zrozumieć, co edytuje plik. Ponieważ zwykle jest własnością root: wheel - lista programów, które mogą edytować plik, powinna być dość mała. Możesz także ustawić niezmienną flagę w pliku i uniknąć konieczności cofania zmian.
bmike

Odpowiedzi:

10

Jako narzędzie, które pomoże ci znaleźć winowajcę, oto narzędzie on-line dtrace, które drukuje pid i nazwę każdego procesu, który otwiera plik do zapisu, wraz z nazwą pliku:

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

Musi być uruchomiony jako root (np. Z sudo). Wklej go, grep hostsaby uniknąć zatopienia wyjścia i pominięcia tego, czego szukasz:

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

Mamy nadzieję, że powie ci to, jaki proces zastępuje plik. Po prostu pozwól mu działać w oknie terminala, aż się uruchomi.

Harald Hanche-Olsen
źródło
13

Jeśli używasz klienta Juno Pulse VPN, /etc/hostszostanie nadpisany przez/etc/jnpr-pulse-hosts.bak

SKP
źródło
11

Dla mnie to jest w pliku

/etc/pulse-hosts.bak

Musisz edytować ten plik, aby dostosować dyrektywy hostów

Jeśli zamierzasz połączyć się ponownie / połączyć za pomocą Pulse Secure VPN, połączenie instrukcji z

/etc/pulse-hosts.bak

z zawartością dyrektyw Pulse i tworzy

/etc/hosts

Aktualizacja 2018

W nowszej wersji Pulse Secure musisz najpierw wyjść z programu (sprawdź swój aktywny proces).

Zmodyfikuj hosta (/ etc / hosts), a następnie uruchom ponownie Pulse Secure.

Stanislas Nichini
źródło
8

Czy korzystasz z klienta Cisco AnyConnect VPN? Jeśli tak, musisz edytować plik /etc/hosts.ac i pozwolić mu skopiować go do pliku na żywo. Zobacz ten artykuł MacOSXHints i poprzednie pytania .

EDYCJA: Nie mogę znaleźć niczego konkretnego na temat Janos Pulse, ale sieć Juniper Network Connect działa z / etc / hosts i podejrzewam, że Pulse może zrobić to samo. Zgodnie z tym postem na blogu , jeśli dokonasz zmian podczas połączenia, zostaną one cofnięte po rozłączeniu, ale zmiany dokonane po rozłączeniu pozostaną.

Gordon Davisson
źródło
Nie, nie używam AnyConnect, nie ma też /etc/hosts.ac. Używam jednak innego oprogramowania proxy:
Junos
1
Mogę potwierdzić to zachowanie za pomocą Junos Pulse 5.1.8. Zmiany /etc/hostsnależy wprowadzać po odłączeniu, inaczej stracisz je.
MisterEd 20.04.16
-1

Po wejściu w VPN nie mogłem korzystać z szybkiego uruchamiania maszyny Wirtualnej cloudera. Aby rozwiązać ten problem, wykonałem poniższe kroki.

Krok 1: Dodaj wpis /private/etc/hostsdla np

127.0.0.1 Quickstart.cloudera

Krok 2: Wpisz VPN, np. Korzystam z F5 VPN

Krok 3: Zweryfikuj wyżej wspomniany wpis /etc/hostsza pomocą poniższego polecenia

cat / etc / hosts

Mam nadzieję, że się przyda.

Shreyash Limbhetwala
źródło
Jak rozwiązuje to problem opisany w pytaniu, a mianowicie nadpisywanie „czegoś” /etc/hosts?
nohillside
Cześć @nohillside, dodałem 127.0.0.1 quickstart.clouderawpis do mojego /etc/hostspliku, ale został on usunięty / zastąpiony, gdy łączyłem się z VPN. Aby dodać 127.0.0.1 quickstart.clouderawpis na stałe, dodałem go do /private/etc/hostspliku. Wewnętrznie za każdym razem, gdy próbujesz połączyć się z VPN, kopiuje wszystkie wpisy od /private/etc/hostsdo /etc/hosts. Mam nadzieję, że teraz ma to sens.
Shreyash Limbhetwala
Cześć @nohillside, Just FYI ... używam klienta F5 Big-IP Edge i mam system operacyjny Mac.
Shreyash Limbhetwala
Na macOS /etcjest do tego dowiązanie symboliczne i private/etctak naprawdę jest to ten sam plik (uruchom, aby sprawdzić). /etc/hosts/private/etc/hostsls -li /etc/hosts /private/etc/hosts
nohillside
1
Masz rację @nohillside, ale po dodaniu wpisu /private/etc/hostsmój problem został rozwiązany i po połączeniu z VPN również mój wpis nie jest usuwany / zastępowany.
Shreyash Limbhetwala
-1

Zmieniając plik / etc / hosts, upewnij się, że NIE masz połączenia z VPN (przynajmniej jeśli używasz Network Connect przez Juniper Networks).

Jak opisano w https://mcphersonz.wordpress.com/2009/11/12/etchosts-file-is-reverting-to-a-previous-state-in-os-x/

Michel
źródło
1
To pytanie ma przyjętą odpowiedź sprzed sześciu lat. Oryginalny post nie wspomina o używanej sieci VPN. Chociaż twoje pytanie może być pomocne dla innych użytkowników, którzy doświadczają tego problemu podczas korzystania z VPN (szczególnie z Jupiter Networks), ma on niewielkie znaczenie dla oryginalnego postu.
IconDaemon,
@IconDaemon Dziękujemy za ciepłe powitanie. To, że to było 6 lat temu, nie ma znaczenia, ponieważ strona jest nadal pierwszym hitem w wyszukiwarce. Również 4 inne odpowiedzi już wspominają, że VPN może powodować dokładnie ten sam problem (jak w moim przypadku), nawet jeśli zaakceptowana odpowiedź rozwiązała problem PO. Jednak nawet on przyznaje w komentarzu do Gordona, że ​​korzystał z VPN (Junos Pulse). Może miałeś rację, głosując za odrzuceniem mojej odpowiedzi, ponieważ wyłączenie VPN było już wspomniane w aktualizacji odpowiedzi Stanisława (ale nie tak mówisz).
Michel