/ etc / hosts se sobreescribe

14

¿Cuál es la forma correcta de editar /etc/hosts? Quiero agregarle algunas direcciones IP y nombres de host. Funciona durante un tiempo (unas pocas horas) y luego vuelve a la versión original. ¿Hay algún proceso que verifique el estado /etc/hostsy lo revierta?

Estoy en mi MBA con Mountain Lion.

Mohammad Moghimi
fuente
FWIW, esto no me pasa a mí. Tengo una entrada en / etc / hosts a una computadora en mi red privada (dirección 10.0.0.2) que el sistema nunca ha eliminado. ¿Pero tal vez deja solo las direcciones en las redes locales (10/8, 172.16 / 12 y 192.168 / 16 - vea RFC 1918 ) y elimina las direcciones que apuntan a direcciones IPv4 globales? </speculation>
Harald Hanche-Olsen
En realidad, agregué algunas entradas hace un tiempo y se quedaron. Los nuevos se están eliminando. Ambos están en subredes similares.
Mohammad Moghimi
¿Ha podido determinar qué proceso está cambiando el archivo? Una herramienta como fseventer podría ayudarlo a comprender qué está editando el archivo. Como normalmente es propiedad de root: wheel, la lista de programas que pueden editar el archivo debe ser bastante pequeña. También puede simplemente establecer la marca inmutable en el archivo y evitar tener que revertir los cambios.
bmike

Respuestas:

10

Como una herramienta para ayudarlo a encontrar al culpable, aquí hay un dtrace oneliner que imprime el pid y el nombre de cualquier proceso que abre un archivo para escribir, junto con el nombre del archivo:

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

Debe ejecutarse como root (por ejemplo, con sudo). Conéctelo grep hostspara evitar ahogarse en la salida y perder lo que está buscando:

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

Con suerte, esto le dirá qué proceso está sobrescribiendo el archivo. Simplemente déjelo correr en una ventana de terminal hasta que se active.

Harald Hanche-Olsen
fuente
12

Si está utilizando el cliente Juno Pulse VPN, /etc/hostsse sobrescribe por/etc/jnpr-pulse-hosts.bak

SkP
fuente
8

¿Utiliza el cliente VPN AnyConnect de Cisco? Si es así, debe editar /etc/hosts.ac en su lugar y dejar que copie eso en el archivo en vivo. Consulte este artículo de MacOSXHints y estas preguntas anteriores .

EDITAR: No puedo encontrar nada específicamente sobre Janos Pulse, pero Juniper's Network Connect se mete con / etc / hosts, y sospecho que Pulse puede hacer lo mismo. Según esta publicación de blog , si realiza cambios mientras está conectado, se revertirán cuando se desconecte, pero los cambios realizados mientras esté desconectado se mantendrán.

Gordon Davisson
fuente
No, no estoy usando AnyConnect, tampoco hay /etc/hosts.ac. Sin embargo, estoy usando otro software proxy: Junos Pulse
Mohammad Moghimi
1
Puedo confirmar este comportamiento con Junos Pulse 5.1.8. Los cambios /etc/hostsdeben realizarse mientras está desconectado o los perderá.
MisterEd
8

Para mi esta en el archivo

/etc/pulse-hosts.bak

Tienes que editar este archivo para personalizar tus directivas de hosts

Cuando va a reconectarse / conectarse usando Pulse Secure VPN, fusionará las directivas del

/etc/pulse-hosts.bak

con el contenido de las directivas de Pulse y crea el

/etc/hosts

Actualización 2018

Con la versión más reciente de Pulse Secure, primero debe salir del programa (verifique su proceso activo).

Modifique su host (/ etc / hosts) y luego reinicie Pulse Secure.

Stanislas Nichini
fuente
-1

No pude usar la máquina de inicio rápido cloudera VM después de ingresar a VPN. Para resolver este problema, seguí los pasos a continuación.

Paso-1: Agregar entrada /private/etc/hostspara, por ejemplo

127.0.0.1 quickstart.cloudera

Paso 2: Ingrese a VPN por ejemplo, estoy usando F5 VPN

Paso 3: Verifique la entrada mencionada anteriormente /etc/hostsusando el siguiente comando

gato / etc / hosts

Espero que te sea útil.

Shreyash Limbhetwala
fuente
¿Cómo aborda esto el problema descrito en la pregunta, es decir, la sobrescritura de "algo" /etc/hosts?
nohillside
Hola @nohillside, agregué una 127.0.0.1 quickstart.clouderaentrada en mi /etc/hostsarchivo, pero se borró / anuló cuando me conecté a VPN. Para agregar una 127.0.0.1 quickstart.clouderaentrada permanentemente, la agregué en el /private/etc/hostsarchivo. Internamente cada vez que intentas conectarte a VPN, copia todas las entradas de /private/etc/hostsa /etc/hosts. Espero que tenga sentido ahora.
Shreyash Limbhetwala
Hola @nohillside, solo para tu información ... estoy usando el cliente F5 Big-IP Edge y tengo Mac OS.
Shreyash Limbhetwala
En MacOS /etces un enlace simbólico a private/etcmodo /etc/hostsy /private/etc/hostsen realidad son el mismo archivo (ejecutar ls -li /etc/hosts /private/etc/hostspara comprobar).
nohillside
1
Tienes razón @nohillside, pero después de agregar la entrada en /private/etc/hostsmi problema se resolvió y después de conectarme a VPN, mi entrada no se borra / anula.
Shreyash Limbhetwala
-1

Al cambiar el archivo / etc / hosts, asegúrese de que NO esté conectado a la VPN (al menos si está utilizando Network Connect de Juniper Networks).

Como se describe en https://mcphersonz.wordpress.com/2009/11/12/etchosts-file-is-reverting-to-a-previous-state-in-os-x/

Michel
fuente
1
Esta pregunta tiene una respuesta aceptada de hace seis años. La publicación original no menciona una VPN en uso. Aunque su pregunta puede ser útil para otros usuarios que experimentan este problema mientras usan una VPN (especialmente una de Jupiter Networks) tiene poca relevancia para la publicación original.
IconDaemon
@IconDaemon Gracias por su cálida bienvenida. Que fue hace 6 años es irrelevante, porque la página sigue siendo el primer éxito en el motor de búsqueda. Además, otras 4 respuestas ya mencionan que una VPN puede causar exactamente el mismo problema (como en mi propio caso), incluso si la respuesta aceptada parece haber resuelto el problema para el OP. Sin embargo, incluso él reconoce en un comentario a Gordon que usó una VPN (Junos Pulse). Tal vez tenías razón al rechazar mi respuesta, porque deshabilitar la VPN ya se mencionó en la actualización de la respuesta de Stanislas (pero eso no es lo que dices).
Michel