Orden de resolución de nombre / león


9

(Este problema desapareció para mí con la actualización 10.7.1 - / etc / hosts ahora funciona como siempre para mí)

He actualizado mi Mac a Lion y ahora me doy cuenta de que / etc / hosts se consulta en último lugar, incluso después de DNS. Esto es muy molesto ya que tengo muchos nombres de host que uso para el desarrollo.

¿Dónde está configurado el orden de resolución de nombres? Puedo verificarlo usando dscacheutil, así que esto es lo que me dice una máquina Snow Leopard:

pilif@tali ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default
    /BSD/local

Settings:
AAAA Queries  - Disabled (link-local IPv6 addresses)
Default TTL   - 3600
Policy Flags  - 0

Y esto es lo que Lion me dice.

pilif@kosmos ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default

Unable to get details from the cache node
Unable to get cache configuration information

Aparte de los dos errores, supongo que / BSD / Local es lo que lo hace leer / etc / hosts antes.

¿Alguien tiene alguna idea de dónde se almacena esta "política de búsqueda de caché" y cómo volver a cambiarla?

Sé que puedo crear entradas de nombre de host usando dcsl, pero realmente me gustaría mantener mi / etc / hosts que uso en varias máquinas.

Actualización: el orden de resolución aparentemente se puede configurar en la utilidad de directorio. Desafortunadamente, esta instalación de Directroy Utility ya no incluye los archivos BSD en la pestaña Servicios.

¿Esta característica se ha ido de Lion? ¿O esta manguera de instalación?

Respuestas:


5

Resolví el problema (y así publiqué como respuesta en lugar de enmendar la pregunta):

De hecho, los archivos BSD ya no figuran en Directory Utility, ni en dscacheutil, pero al menos / etc / hosts todavía se lee, pero existe el problema de que varios nombres de host por dirección IP ya no son compatibles o al menos, no funcionan correctamente en cajeros automáticos.

Cuando su antiguo / etc / hosts podría haber parecido

127.0.0.1 localhost foo foobar

Esto provocaría un tiempo de espera de ~ 10 segundos para resolver cualquiera de estos nombres de host.

Pero si usas

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

La resolución será instantánea.

La respuesta de RedGrittyBrick también es válida, pero específicamente quiero seguir usando el archivo de hosts para modificar el directorio local, ya que se comparte entre varias máquinas de desarrollo mías.

Para responder el resto de mis preguntas también (ahora todo está claro para mí):

  • El orden de resolución de caché que configura en la utilidad de directorio donde puede decirle cuál de los directorios habilitados desea ver en qué orden.
  • Para configurar directorios, también use la utilidad de directorio
  • La utilidad de directorio se inicia yendo a Preferencias del sistema> Cuentas> Opciones de inicio de sesión> Unirse al directorio> Utilidad de directorio
  • En Lion, el "directorio" de archivos BSD ya no está disponible aunque el archivo de ayuda todavía se refiera a él
  • Como dije, / etc / hosts todavía se lee, pero está el error que describí anteriormente.

Poner cada entrada en su propia línea no me resolvió. ¿Puedes visitar "foo" y "foobar" en Chrome y Safari? Para mí, solo funciona en Chrome. ¿Se puede anular un sitio web existente, por ejemplo, "127.0.0.1 www.google.com"? Para mí, eso no funciona ni en Chrome ni en Safari.
richardkmiller

Esto resolvió que los 10 me esperaran. Gracias, eso me estaba volviendo loco.
Josh Bleecher Snyder

¡Lo resolvió para mí el 10.7.3 yay!
EMiller

3

El asunto es que Lion maneja .local TLD de manera diferente porque está reservado para algunas características de DNS de multidifusión (utilizadas por Bonjour). La única forma en que encontré para resolver este problema es usando un TLD diferente para los hosts de desarrollo (es decir: .dev). ¡Funciona bien para mí, espero que sea útil para otros!


Esto era absolutamente lo que estaba sucediendo en mi caja. thx
slf

1

Como espero que sepa, la forma tradicional de Unix de manejar esto es mediante el uso de una directiva hostresordero . OS X lee (o puede hacerse) leer y usar estos archivos, pero OS X tiene un sistema separado administrado a través de las preferencias de red que creo que sobrescribe estos archivos de configuración en el arranque.order/etc/resolv.conf

http://hints.macworld.com/article.php?story=20070223050607406

http://docs.info.apple.com/article.html?path=ServerAdmin/10.6/en/od4939886e.html

https://discussions.apple.com/thread/2493759

http://blog.daemon.com.au/go/blog-post/managing-the-host-file-on-leopard

Esto no responde a su pregunta, pero la información y los enlaces pueden ayudarlo a encontrar uno. Hubiera puesto esto en un comentario si pudiera condensarlo para que encaje.


Sé sobre dscl, pero específicamente quería usar el archivo hosts que ya no se puede activar y desactivar explícitamente en Lion. Siempre se lee, pero con reglas de análisis diferentes a las anteriores, vea mi respuesta a mi pregunta.
pilif

1

Es posible solucionar este problema usando dnsmasq como DNS local y agregando entradas allí, o use dnsmasq para usar /etc/hosts.

Es posible utilizar un script para establecer el orden del servidor DNS:

Filename: setdsn
-------------------------------------------------
#!/bin/bash

# Script is used to set the Nameserver Lookup under Max OS X 10.4 with the Console
# Script by Stephan Oeste

if [ $# -lt 2 ] ; then
echo "Use: $0 [2.Nameserver]"
echo "Example Use: $0 example.tld 1.2.3.4 1.2.3.5"
exit 1
fi

PSID=$( (scutil | grep PrimaryService | sed -e 's/.*PrimaryService : //')<< EOF
open
get State:/Network/Global/IPv4
d.show
quit
EOF
)

scutil << EOF
open
d.init
d.add ServerAddresses * $2 $3
d.add DomainName $1
set State:/Network/Service/$PSID/DNS
quit
EOF
-------------------------------------------------

Crea el archivo:

chmod +x setdns

Y luego use ist con (Ejemplo): setdns domain.com 12.23.34.45
(Publicado por emzy en http://hints.macworld.com/article.php?story=20050621051643993 )

Si desea que el script se cargue automáticamente al cambiar la red, debe crear un .plist, ponerlo /Library/LaunchDaemonsy usar:

sudo launchctl load -w /LibraryLaunchDaemons/name.your.plist

1

Me encontré con este problema en Snow Leopard mientras intentaba configurar un servidor de actualización de software transparente. Ahora también lo tengo trabajando en Lion. El Software Update Server en sí está a medio camino entre un hack y un kludge, pero este problema se resolvió con bastante elegancia. Esto es lo que sé:

  • / etc / hosts existe en Lion y, al igual que las versiones recientes de OS X, está configurado para leerse después de DNS.
  • /etc/resolv.conf existe en Lion pero es un enlace simbólico a /var/run/resolv.conf.
  • /var/run/resolv.conf se reescribe cada vez que se actualiza la configuración de su red. Eso puede deberse a reinicios, renovaciones de arrendamiento de DHCP, etc.

Creé el siguiente script. / usr / local / hostsBind:

mv /var/run/resolv.conf /var/run/resolv.conf.new
echo order hosts, bind > /var/run/resolv.conf
cat /var/run/resolv.conf.new >> /var/run/resolv.conf

esta copia de seguridad del archivo resolv.conf principal actual, crea uno nuevo con el orden deseado de hosts antes de BIND y concatena el archivo anterior hasta el final.

Llamo a este script mirando el archivo resolv.conf principal con el siguiente trabajo lanzado en /Library/LaunchDaemons/com.domain.hostsBind.plist (puede cambiar com.domain a algo que tenga sentido para usted):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.domain.hostsBind</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/hostsBind</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/var/run/resolv.conf</string>
    </array>
</dict>
</plist>

Esto ha estado funcionando para nuestra organización con un servidor Lion Software Update.

Lo último que se debe tener en cuenta es que esto también funciona bien con Snow Leopard si cambia la ruta de resolv.conf a /etc/resolv.conf. Lion acaba de lanzar la bola curva del enlace simbólico a / var / run / en lugar de / etc /.

-si

PD: Fuente del script: http://forums.macrumors.com/showthread.php?p=6742920


cuando intenté esto, el trabajo mantuvo el orden pendiente en el archivo porque al cambiar el archivo se activó una nueva actualización.
harmanjd

1

Hay varias cosas que están mal con el servidor apache que se incluye con OSX Lion.

  1. Muchos módulos se cargan por defecto.
    Abre /etc/apache2/httpd.confy revisa la lista de módulos habilitados (todos ellos están habilitados por defecto). Probablemente pueda desactivar muchos de ellos colocando un #frente de la línea.

    Estos son los que apagué:

#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
#LoadModule authn_default_module libexec/apache2/mod_authn_default.so
#LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
#LoadModule authz_user_module libexec/apache2/mod_authz_user.so
#LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
#LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
#LoadModule authz_default_module libexec/apache2/mod_authz_default.so
#LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
#LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
#LoadModule dbd_module libexec/apache2/mod_dbd.so
#LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
#LoadModule unique_id_module libexec/apache2/mod_unique_id.so
#LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
#LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
#LoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so
#LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
#LoadModule dav_module libexec/apache2/mod_dav.so
#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
#LoadModule bonjour_module libexec/apache2/mod_bonjour.so
#LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so
  1. El archivo hosts no es perfecto.
    Ahora abra su archivo de hosts, ubicado en /etc/hosts. Aquí verá esta línea (y algunos comentarios):

127.0.0.1 macbook-pro-van-bart.local

(otro nombre de computadora fuera de curso). Agregue la siguiente línea (cambie el nombre del equipo):

fe80::1%lo0 macbook-pro-van-bart.local
  1. Eche un vistazo a su configuración de apache
    Asegúrese de vhostsno confiar en las IP. Cámbialos así:

NameVirtualHost 127.0.0.1:80

Se convierte en:

NameVirtualHost *: 80

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.