/ etc / hosts est écrasé

14

Quelle est la bonne façon d'éditer /etc/hosts? Je veux y ajouter des adresses IP et des noms d'hôtes. Cela fonctionne pendant un certain temps (quelques heures), puis il revient à la version d'origine. Existe-t-il un processus qui vérifie l'état /etc/hostset le rétablit?

Je suis sur mon MBA avec Mountain Lion.

Mohammad Moghimi
la source
FWIW, cela ne m'arrive pas. J'ai une entrée dans / etc / hosts sur un ordinateur de mon réseau privé (adresse 10.0.0.2) qui n'a jamais été supprimé par le système. Mais peut-être qu'il laisse les adresses dans les réseaux locaux (10/8, 172.16 / 12 et 192.168 / 16 - voir RFC 1918 ) et supprime les adresses pointant vers des adresses IPv4 globales? </speculation>
Harald Hanche-Olsen
En fait, j'ai ajouté quelques entrées il y a quelque temps et elles sont restées. Les nouveaux sont supprimés. Les deux sont dans des sous-réseaux similaires.
Mohammad Moghimi
Avez-vous pu déterminer quel processus modifie le fichier? Un outil comme fseventer peut vous aider à comprendre ce qui modifie le fichier. Comme il appartient normalement à root: wheel - la liste des programmes qui peuvent éditer le fichier devrait être assez petite. Vous pouvez également simplement définir l'indicateur immuable sur le fichier et éviter d'avoir à annuler les modifications.
bmike

Réponses:

10

Comme outil pour vous aider à trouver le coupable, voici un onliner dtrace qui imprime le pid et le nom de tout processus qui ouvre un fichier pour l'écriture, ainsi que le nom du fichier:

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

Il doit être exécuté en tant que root (par exemple, avec sudo). Canalisez-le grep hostspour éviter de vous noyer dans la sortie et de manquer ce que vous recherchez:

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

J'espère que cela vous indiquera quel processus écrase le fichier. Laissez-le simplement s'exécuter dans une fenêtre de terminal jusqu'à ce qu'il se déclenche.

Harald Hanche-Olsen
la source
12

Si vous utilisez un client VPN Juno Pulse, /etc/hostsest remplacé par/etc/jnpr-pulse-hosts.bak

SkP
la source
8

Utilisez-vous le client VPN AnyConnect de Cisco? Si c'est le cas, vous devez modifier /etc/hosts.ac à la place et le laisser le copier dans le fichier en direct. Consultez cet article MacOSXHints et ces questions précédentes .

EDIT: Je ne trouve rien de particulier à propos de Janos Pulse, mais Juniper Network Connect joue avec / etc / hosts, et je pense que Pulse peut faire la même chose. Selon ce billet de blog , si vous apportez des modifications pendant la connexion, elles seront annulées lorsque vous vous déconnecterez, mais les modifications apportées pendant la déconnexion resteront en place.

Gordon Davisson
la source
Non, je n'utilise pas AnyConnect, il n'y a pas non plus /etc/hosts.ac. Cependant, j'utilise un autre logiciel proxy: Junos Pulse
Mohammad Moghimi
1
Je peux confirmer ce comportement avec Junos Pulse 5.1.8. Les modifications /etc/hostsdoivent être apportées lorsque vous êtes déconnecté, sinon vous les perdrez.
MisterEd
8

Pour moi c'est dans le dossier

/etc/pulse-hosts.bak

Vous devez éditer ce fichier pour personnaliser vos directives hôtes

Lorsque vous allez vous reconnecter / vous connecter à l'aide du VPN Pulse Secure, cela va fusionner les directives du

/etc/pulse-hosts.bak

avec le contenu des directives Pulse et crée le

/etc/hosts

Mise à jour 2018

Avec la nouvelle version de Pulse Secure, vous devez d'abord quitter le programme (vérifiez votre processus actif).

Modifiez votre hôte (/ etc / hosts) puis redémarrez Pulse Secure.

Stanislas Nichini
la source
-1

Je n'ai pas pu utiliser Quickstart cloudera VM après être entré dans VPN. Pour résoudre ce problème, j'ai suivi les étapes ci-dessous.

Étape 1: ajouter une entrée /private/etc/hostspour par exemple

127.0.0.1 quickstart.cloudera

Étape 2: Entrez dans le VPN pour, par exemple, j'utilise le VPN F5

Étape 3: Vérifiez l'entrée mentionnée ci-dessus en /etc/hostsutilisant la commande ci-dessous

chat / etc / hosts

J'espère que ce sera utile.

Shreyash Limbhetwala
la source
Comment cela résout-il le problème décrit dans la question, à savoir l'écrasement de «quelque chose» /etc/hosts?
nohillside
Salut @nohillside, j'ai ajouté une 127.0.0.1 quickstart.clouderaentrée dans mon /etc/hostsfichier mais elle a été effacée / remplacée lorsque je me connectais au VPN. Pour ajouter une 127.0.0.1 quickstart.clouderaentrée de façon permanente, je l'ai ajoutée dans un /private/etc/hostsfichier. En interne, chaque fois que vous essayez de vous connecter au VPN, il copie toutes les entrées de /private/etc/hostsà /etc/hosts. J'espère que cela a du sens maintenant.
Shreyash Limbhetwala
Salut @nohillside, Just FYI ... j'utilise le client F5 Big-IP Edge et j'ai Mac OS.
Shreyash Limbhetwala
Sur macOS /etcest un lien symbolique vers private/etcso /etc/hostset /private/etc/hostssont en fait le même fichier (exécutez ls -li /etc/hosts /private/etc/hostspour vérifier).
nohillside
1
Vous avez raison @nohillside, mais après avoir ajouté une entrée dans /private/etc/hostsmon problème, le problème a été résolu et après la connexion au VPN, mon entrée n'est pas effacée / remplacée.
Shreyash Limbhetwala
-1

Lorsque vous modifiez le fichier / etc / hosts, assurez-vous que vous n'êtes PAS connecté au VPN (au moins si vous utilisez Network Connect par Juniper Networks.)

Comme décrit dans https://mcphersonz.wordpress.com/2009/11/12/etchosts-file-is-reverting-to-a-previous-state-in-os-x/

Michel
la source
1
Cette question a une réponse acceptée d'il y a six ans. Le message d'origine ne mentionne pas de VPN en cours d'utilisation. Bien que votre question puisse être utile pour d'autres utilisateurs qui rencontrent ce problème lors de l'utilisation d'un VPN (en particulier celui de Jupiter Networks), elle n'a que peu de pertinence pour la publication d'origine.
IconDaemon
@IconDaemon Merci pour votre accueil chaleureux. Que ce soit il y a 6 ans est sans importance, car la page est toujours le premier hit dans le moteur de recherche. De plus, 4 autres réponses mentionnent déjà qu'un VPN peut causer exactement le même problème (comme dans mon cas), même si la réponse acceptée semble avoir résolu le problème pour l'OP. Cependant, même il reconnaît dans un commentaire à Gordon qu'il a utilisé un VPN (Junos Pulse). Vous avez peut-être eu raison de voter contre ma réponse, car la désactivation du VPN a déjà été mentionnée dans la mise à jour de la réponse de Stanislas (mais ce n'est pas ce que vous dites).
Michel