/ etc / hosts wird überschrieben

14

Was ist die richtige Art zu bearbeiten /etc/hosts? Ich möchte einige IP-Adressen und Hostnamen hinzufügen. Es funktioniert eine Weile (einige Stunden) und wird dann auf die ursprüngliche Version zurückgesetzt. Gibt es einen Prozess, der den Status überprüft /etc/hostsund ihn zurücksetzt?

Ich habe einen MBA bei Mountain Lion.

Mohammad Moghimi
quelle
FWIW, das passiert mir nicht. Ich habe in / etc / hosts einen Eintrag für einen Computer in meinem privaten Netzwerk (Adresse 10.0.0.2), der vom System nie entfernt wurde. Aber vielleicht werden nur Adressen in lokalen Netzwerken (10/8, 172.16 / 12 und 192.168 / 16 - siehe RFC 1918 ) belassen und Adressen entfernt, die auf globale IPv4-Adressen verweisen? </speculation>
Harald Hanche-Olsen
Eigentlich habe ich vor einiger Zeit einige Einträge hinzugefügt und sie sind geblieben. Die neuen werden entfernt. Beide befinden sich in ähnlichen Subnetzen.
Mohammad Moghimi
Konnten Sie feststellen, welcher Prozess die Datei ändert? Ein Tool wie fseventer kann Ihnen dabei helfen, die Bearbeitung der Datei zu verstehen. Da es normalerweise im Besitz von root: wheel ist, sollte die Liste der Programme, die die Datei bearbeiten können, recht klein sein. Sie können auch einfach das unveränderliche Flag für die Datei setzen und vermeiden, dass Änderungen rückgängig gemacht werden müssen.
bmike

Antworten:

10

Als Hilfsmittel, um den Täter zu finden, finden Sie hier einen Dtrace-Oneliner, der die PID und den Namen aller Prozesse ausgibt, die eine Datei zum Schreiben öffnen, zusammen mit dem Dateinamen:

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

Es muss als root ausgeführt werden (zB mit sudo). Leiten Sie es ein grep hosts, um zu vermeiden, dass die Ausgabe ertrinkt und das, wonach Sie suchen, fehlt:

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

Hoffentlich erfahren Sie, bei welchem ​​Vorgang die Datei überschrieben wird. Lass es einfach in einem Terminalfenster laufen, bis es auslöst.

Harald Hanche-Olsen
quelle
12

Wenn Sie den Juno Pulse VPN-Client verwenden, /etc/hostswird dies von überschrieben/etc/jnpr-pulse-hosts.bak

SkP
quelle
8

Verwenden Sie den AnyConnect VPN-Client von Cisco? In diesem Fall müssen Sie stattdessen /etc/hosts.ac bearbeiten und in die Live-Datei kopieren. Lesen Sie diesen MacOSXHints-Artikel und diese vorherigen Fragen .

BEARBEITEN: Ich kann nichts spezielles über Janos Pulse finden, aber Junipers Network Connect macht Fehler mit / etc / hosts, und ich vermute, dass Pulse dasselbe tut. Laut diesem Blog-Beitrag werden Änderungen, die Sie vornehmen, während Sie verbunden sind, beim Trennen der Verbindung zurückgesetzt. Änderungen, die Sie vornehmen, während Sie die Verbindung trennen, bleiben jedoch erhalten.

Gordon Davisson
quelle
Nein, ich verwende AnyConnect nicht, es gibt auch keine /etc/hosts.ac. Ich verwende jedoch eine andere Proxy-Software: Junos Pulse
Mohammad Moghimi
1
Ich kann dieses Verhalten mit Junos Pulse 5.1.8 bestätigen. Änderungen an /etc/hostsmüssen vorgenommen werden, während die Verbindung getrennt ist, sonst verlieren Sie sie.
MisterEd
8

Für mich ist es in der Akte

/etc/pulse-hosts.bak

Sie müssen diese Datei bearbeiten, um Ihre Host-Anweisungen anzupassen

Wenn Sie über das Pulse Secure VPN erneut eine Verbindung herstellen / herstellen, werden die Anweisungen aus dem zusammengeführt

/etc/pulse-hosts.bak

mit dem Inhalt von Pulse-Direktiven und erstellt die

/etc/hosts

Update 2018

Bei der neueren Version von Pulse Secure müssen Sie zuerst das Programm beenden (überprüfen Sie Ihren aktiven Prozess).

Ändern Sie Ihren Host (/ etc / hosts) und starten Sie Pulse Secure neu.

Stanislas Nichini
quelle
-1

Ich konnte Quickstart Cloudera VM nach dem Eintritt in VPN nicht verwenden. Um dieses Problem zu beheben, habe ich die folgenden Schritte ausgeführt.

Schritt-1: Eintrag hinzufügen /private/etc/hostsfür zB

127.0.0.1 quickstart.cloudera

Schritt 2: Geben Sie VPN ein, z. B. wenn Sie F5 VPN verwenden

Schritt-3: Überprüfen Sie den oben genannten Eintrag /etc/hostsmit dem folgenden Befehl

cat / etc / hosts

Ich hoffe, dass es nützlich sein wird.

Shreyash Limbhetwala
quelle
Wie wird das in der Frage beschriebene Problem behoben, nämlich "etwas" zu überschreiben /etc/hosts?
Nohillside
Hallo @nohillside, ich habe einen 127.0.0.1 quickstart.clouderaEintrag in meine /etc/hostsDatei eingefügt, der jedoch gelöscht / überschrieben wurde, als ich mich mit VPN verband. Um einen 127.0.0.1 quickstart.clouderaEintrag dauerhaft hinzuzufügen , habe ich ihn in die /private/etc/hostsDatei eingefügt . Intern werden bei jedem Versuch, eine Verbindung zu VPN herzustellen, alle Einträge von /private/etc/hostsnach kopiert /etc/hosts. Ich hoffe, dass es jetzt Sinn macht.
Shreyash Limbhetwala
Hi @nohillside, nur zu Ihrer Information ... Ich verwende den F5 Big-IP Edge-Client und habe ein Mac OS.
Shreyash Limbhetwala
Auf macOS /etcist ein symbolischer Link auf private/etcso /etc/hostsund /private/etc/hostssind eigentlich die gleiche Datei (laufen ls -li /etc/hosts /private/etc/hostszu überprüfen).
Nohillside
1
Sie haben Recht, @nohillside, aber nach dem Hinzufügen eines Eintrags in /private/etc/hostsmeinem Problem wurde es behoben und nach dem Herstellen einer VPN-Verbindung wird mein Eintrag nicht gelöscht / überschrieben.
Shreyash Limbhetwala
-1

Stellen Sie beim Ändern der Datei / etc / hosts sicher, dass Sie NICHT mit dem VPN verbunden sind (zumindest, wenn Sie Network Connect von Juniper Networks verwenden).

Wie unter https://mcphersonz.wordpress.com/2009/11/12/etchosts-file-is-reverting-to-a-previous-state-in-os-x/ beschrieben

Michel
quelle
1
Diese Frage hat eine akzeptierte Antwort von vor sechs Jahren. Der ursprüngliche Beitrag erwähnt kein verwendetes VPN. Obwohl Ihre Frage für andere Benutzer hilfreich sein kann, bei denen dieses Problem bei Verwendung eines VPN auftritt (insbesondere eines von Jupiter Networks), hat sie für den ursprünglichen Beitrag nur geringe Relevanz.
IconDaemon
@IconDaemon Vielen Dank für Ihren herzlichen Empfang. Dass es vor 6 Jahren war, ist irrelevant, denn die Seite ist immer noch der erste Treffer in der Suchmaschine. In 4 weiteren Antworten wird bereits erwähnt, dass ein VPN genau dasselbe Problem verursachen kann (wie in meinem Fall), auch wenn die akzeptierte Antwort das Problem für das OP gelöst zu haben scheint. Sogar er gibt in einem Kommentar an Gordon zu, dass er ein VPN (Junos Pulse) verwendet hat. Vielleicht haben Sie zu Recht meine Antwort abgelehnt, weil die Deaktivierung des VPN bereits in der Aktualisierung von Stanislas 'Antwort erwähnt wurde (aber das sagen Sie nicht).
Michel