¿Puedo crear dns de anulación similar a escribir en / etc / hosts sin acceso de root

48

Quiero establecer un registro dns que usará mi navegador, pero no tengo acceso de root, por lo que no puedo modificarlo /etc/hosts. Necesito hacer esto para probar vhosts con apache, cuyo dns aún no se ha configurado. Tengo acceso a Firefox y Chrome, así que si hay un complemento que pueda facilitarlo; u otras opciones son útiles.

actualización: la alternativa a anular el dns probablemente es modificar los encabezados HTTP, si los correctos se envían a apache, se debe devolver el contenido correcto.

xenoterracida
fuente
1
La última línea no está clara. Además, ¿no encajaría esto más en SF?
tshepang
@tshepang ... no porque necesito hacer esto en un escritorio de Linux?
xenoterracide
1
Todavía no está tan claro. ¿Qué significa exactamente "u otras opciones útiles"? No me hagas adivinar.
tshepang
3
@tshepang No sé lo que estoy buscando ... si supiera por qué estaría preguntando. Puede haber opciones que no he considerado. Siento que me está pidiendo que explique cómo los hosts virtuales apache, http y dns funcionan juntos.
xenoterracide
Creo que estás buscando esto: unix.stackexchange.com/a/104511/135943
Wildcard

Respuestas:

65

Estaba buscando una manera de ejecutar un programa con resolución DNS modificada para fines de prueba. Para mí, la solución estaba usando la HOSTALIASESvariable de entorno:

$ echo "foo www.google.com" >> ~/.hosts
$ HOSTALIASES=~/.hosts wget foo

Ver hostname(7).

(Nota al margen: en el ejemplo, la HOSTALIASESvariable de entorno solo afecta el wgetproceso. Por supuesto, puede export HOSTALIASEShacer que surta efecto para todos los subprocesos del shell actual).

matlehmann
fuente
1
realmente esto debería ser como + 10k, desafortunadamente solo puedo darte +1
xenoterracide
¡Estoy de acuerdo! + 10k !!
Anders Hansson
3
¡Muchas gracias! El ejemplo debe anteponer exporten la mayoría de los casos: export HOSTALIASES=~/.hosts.
ezequiel-garzon
8
parece que solo admite hosts para alias de hosts, no IP y los hosts no pueden contener ".".
netawater
¿Existe la misma solución para Windows?
Akceptor
10

Puede escribir un contenedor alrededor de la función libc para resolver nombres de host y buscarlos en un archivo diferente que / etc / hosts. Luego, ejecute cualquier aplicación con la que desee usar su archivo de hosts

LD_PRELOAD=wrapper.so firefox
Chris
fuente
44
Más útil, hacer su envoltorio redirección de la apertura de /etc/nsswitch.confa ~/.nsswitch.conf, y hacer una ~/.nsswitch.confque consulta a sus bases de datos de DNS.
Gilles 'SO- deja de ser malvado'
6

Creo que la mejor manera de hacer esto sería configurar un proxy SOCKS5 y decirle a Firefox que envíe las solicitudes DNS a través del proxy SOCKS5 (network.proxy.socks_remote_dns). Puede configurar un proxy socks5 con openssh con bastante facilidad (la opción -D) y ejecutar un host remoto con un / etc / hosts personalizado, o algo así como DNSMasq para configuraciones DNS más complejas. Sin embargo, efectivamente, esto está empujando la configuración de la configuración de DNS a un sistema en el que puede realizar cambios en todo el sistema.

jsbillings
fuente
más fácil decirlo que hacerlo, teniendo en cuenta el gran cortafuegos que se ha erigido para impedirnos ssh-ción a cabo ...
xenoterracide
5

Echa un vistazo a la siguiente pregunta en el superusuario:

https://superuser.com/questions/184643/override-dns-in-firefox

Si las opciones discutidas y el enlace SO no son soluciones viables, consulte:

https://superuser.com/questions/100239/hostname-override-in-firefox

Especialmente echa un vistazo:

https://addons.mozilla.org/en-US/firefox/addon/redirector/

Parece que este complemento podría ayudar, pero depende de su implementación real.

maxschlepzig
fuente
desafortunadamente, al igual que la operación en esa pregunta, ninguno de estos parece viable.
xenoterracide
@xenoterracide: actualicé mi respuesta. ¿Quizás el complemento redirector es una opción?
maxschlepzig
No lo creo por la forma en que está redactado ... lo que realmente necesito hacer es modificar los encabezados HTTP que se envían ... como una opción alternativa para hackear usando hosts
xenoterracide
Busqué la solución SO (TamperData) pero no vi cómo modificar el host en eso. Me pregunto si lo de los encabezados http en vivo realmente me permite modificar los encabezados, dice que es un visor.
xenoterracide
Creo que la extensión Modificar encabezados enumerados un poco en el SO uno funciona ... si usa el nombre de host del host ... en él ... aún no probado ... fuera de los sitios de ruptura que lo usan.
xenoterracide
2

Para probar vhosts, puede configurar el servidor Apache como proxy en Firefox. El nombre que ingresó será enviado a Apache. Esto interrumpirá la exploración de otros sitios, por lo tanto, vuelva a configurar el proxy cuando haya terminado.

BillThor
fuente
0

Necesitaba algo similar para ssh, scp, etc. para un servidor que cambia de IP cada dos semanas (y nuestro departamento de TI tiene un par de semanas de retraso para configurar el host). Lo resolví usando una variable especial para este servidor: export FOO='131.227.aaa.bbby luego puedo hacer solo ssh bar@$FOOy cambiar la IP en ~/.bashrccualquier momento que cambie ...

BIOStheZerg
fuente
-2

Desafortunadamente no, no puedes, excepto que escribes tu propio navegador de internet.

Si tiene que hacer algunas pruebas, necesita una máquina de prueba, cualquiera que sea una máquina virtual o real, por lo que debe preguntarle a su administrador de Unix (o proveedor de alojamiento) cómo puede establecer un entorno de desarrollo.

También puede instalar una VM en su PC, instalar una distribución de Linux, Apache y probar sus cambios (no es tan difícil como parece)

Actualizar

Para explicar mejor, cada aplicación se escribe utilizando las bibliotecas estándar, de esta manera nadie tiene que reescribir la biblioteca de bajo nivel y funciona como gethostbyname ().

Estas funciones normalmente están configuradas para usar archivos (/ etc / hosts) y DNS, por lo que, desafortunadamente, si necesita que su navegador resuelva un nombre que el que está configurado en / etc / hosts, no tiene demasiadas alternativas .

  1. Puede configurar su propio servidor DNS y preguntar quién tiene derechos de root para cambiar /etc/resolve.conf
  2. Puede instalar un servidor proxy como DeleGate y establecer algunas reglas para su VirtualHost
  3. Solicitar derechos de sudo en el host de ese cliente
  4. Cambie el comportamiento de la aplicación que está utilizando para probar la conexión (supongo que el navegador), por ejemplo https://addons.mozilla.org/en-US/firefox/addon/switchhosts/
tmow
fuente
44
-1 redactado mal y condescendiente. SOY el proveedor de alojamiento, y es el maldito sitio de clientes en nuestro servidor el que necesito probar. Tenemos un linux de arranque de red al que no tengo acceso de administrador, y no creo que pueda arrancar una VM en él.
xenoterracide
@xenoterracide no hay mucho que decir. Realmente no es factible lo que está pidiendo, excepto que cambia la forma en que se crea un SOCKET.
hasta
1
@xenoterracide Por cierto, no hubo ninguna intención de ofender.
hasta
así como el proveedor de alojamiento ... Tengo "derechos de sudo" en realidad, tengo root real en cada cuadro y acceso completo a todo ... excepto mi escritorio (eyeroll) pero si aún no han querido cambiar sus servidores de nombres .. No puedo evitar eso ...
xenoterracide
1
con LD_PRELOAD puede 'anular' funciones específicas de 'bajo nivel' y hacer lo que quiera, por ejemplo. informarle al programa sobre su propio '/ etc / hosts' open()y cualquier otra llamada de bajo nivel ... siempre que se invoque la carga dinámica de código (.so)
akira