14 votos

¿Cómo añadir algunos dominios de búsqueda DNS adicionales sin ignorar los del DHCP?

Sólo quiero añadir mi propia lista de dominios de búsqueda pero sin anular los devueltos por el DHCP

Como cualquiera podría imaginar, ya intenté añadirlos a Red > Avanzado > DNS pero al añadirlos allí anulará los del DHCP, lo cual no es mi intención.

Sería perfecto si pudiera añadirlos después de los que forman el DHCP, pero también aceptaría una solución que los añada después.

El segundo intento sería /etc/resolv.conf pero el mensaje del archivo es tan claro como puede ser:

# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.

Personalmente, enviaría al tipo que escribió este mensaje a hacer algo de apoyo telefónico durante dos meses. Así que aprendería a añadir algunas pistas la próxima vez que documente las cosas: ¿dónde se supone que debe afinar los ajustes? o incluir un enlace a un artículo de la base de conocimientos.

Aún así, no quiero algo que se pierda en una actualización menor de OS X.

¿Cómo puedo hacer esto para OS X 10.7?

1 votos

Podrías explicar un poco más lo que has probado y por qué introducir los dominios de búsqueda en el lugar normal no es lo que quieres. En concreto, ¿quieres que tus dominios de búsqueda se busquen antes de los de DHCP o después de los suministrados?

8voto

Pow-Ian Puntos 245

Basta con poner un archivo en /etc/resolver/ con un nombre como "searchappend" con estos contenidos:

search example.com

Simplemente no nombres el archivo como "com" o algún otro TLD válido. Esto funciona gracias a la magia de resolución de OSX. Para más información, lee la documentación de tu mac con este comando:

man 5 resolver

Tengo un archivo allí llamado "cónsul" que se parece a esto:

nameserver 127.0.0.1
port 8600
search consul

Eso hace que mágicamente el .consul se añada a la ruta de búsqueda, y cualquier resolución para los TLDs .consul utiliza mi servidor de nombres local.

0 votos

Enlaces rotos, no se puede encontrar un reemplazo.

0 votos

Estoy de acuerdo en que los enlaces están rotos, pero esto funcionó para mí en 10.13.6. Tuve que crear /etc/resolver primero. El archivo que creé contenía sólo search mydomain.com . El dominio de búsqueda adicional se aplica a todos los adaptadores de red y se añade a los dominios de búsqueda DHCP existentes.

1 votos

Esto ya no me funciona en Mojave :(

3voto

Paul Puntos 170

Podrías usar el networksetup y añadir los dominios de búsqueda adicionales en una matriz en la línea de comandos: Desde la página del hombre:

-setsearchdomains networkservice domain1 [domain2] [...]

Use this command to designate the search domain for the specified
<networkservice>. You can list any number of search domains
(replace domain1, domain2, and so on with the name of a local
domain). If you want to clear all search domain entries for the
specified network service, type aemptya in place of the domain

Así que..:

sudo networksetup -setsearchdomains Wi-Fi legacydomain.com secondlegacydomain.com additionaldomain.org evenmoresearchdomain.net

esta invocación debería tener el orden adecuado.

4 votos

Aunque me encanta el enfoque de la línea de comandos, tengo que decir que ejecutar esto anula los dominios DNS recibidos del servidor DHCP, por lo que no es una solución adecuada. Todavía quiero ser capaz de utilizarlos, sólo para añadir el mío en la parte superior o inferior de la lista. Necesito una solución automatizada.

3voto

alls0rts Puntos 26

Quería hacer esto para una conexión VPN.

En primer lugar, encontrar las claves DNS en el almacén de datos:

echo "list .*/DNS"| scutil

Puede consultar cada tecla con show <key> como en

> show State:/Network/Global/DNS
<dictionary> {
  DomainName : example.com
  SearchDomains : <array> {
    0 : my.example.com
    1 : your.example.com
  }
  ServerAddresses : <array> {
    0 : 8.8.8.8
    1 : 4.4.4.4
  }
}

Como dije, estaba cambiando para mi conexión VPN y por eso inicialmente terminé con un script así:

sudo scutil <<HERE
get State:/Network/Service/com.cisco.anyconnect/DNS
d.show
d.remove SearchDomains
d.add SearchDomains my.example.com your.example.com new.example.com 
set State:/Network/Service/com.cisco.anyconnect/DNS
show State:/Network/Service/com.cisco.anyconnect/DNS
exit
HERE

Para completar el cuadro, según la pregunta original entonces:

#!/bin/ksh
KEYS="State:/Network/Service/utun1/DNS State:/Network/Service/com.cisco.anyconnect/DNS"
append_domains="fake.example.com"

# Check for known keys in database
for DNS in $KEYS; do
    key=$(echo list $DNS | scutil)
    if [[ $key != "  No such key" ]]; then
       break
    fi
    found=$DNS
done
if [[ -z $found ]]; then
    print -u2 "unable to find DNS key!"
    exit
fi

# Read current settings from key
typeset -A data
thistype="unknown"
print "get $DNS\nd.show" | scutil | while read type colon value rest; do
     case $type in
     (DomainName)   data[$type]=$value;;
     (SearchDomains|ServerAddresses)    thistype="$type";;
     ([0-9])        data[$thistype]="${data[$thistype]}$value ";;
     (*)        thistype="unknown";;
     esac
done

# Check to see if the domains are already listed
domains=${data[SearchDomains]%% }
for domain in $append_domains; do
    found=""
    for current in $domains; do
        if [[ $domain == $current ]]; then
       found=$domain
    fi
    done
    if [[ -z $found ]]; then
        add="${add}${domain} "
    fi
done

# If there is nothing to add then we are done.
if [[ -z $add ]]; then
    exit
fi

DOMAINS="$domains ${add%% }"
echo Replacing SearchDomains with $DOMAINS
echo on service $DNS

sudo scutil <<HERE
get $DNS
d.remove SearchDomains
d.add SearchDomains $DOMAINS
set $DNS
show $DNS
exit
HERE

MacOS Mojave - 10.14.6

1voto

Stephen C. Steel Puntos 2869

Añádelos a Preferencias del Sistema > Red > Avanzado > | DNS |

(¿Alguna razón en particular para que esto sea rechazado? Hace exactamente lo que el solicitante está pidiendo y no requiere el uso de una Terminal.)

2 votos

Porque escribió que no quería anular las entradas DNS del DHCP. Además tendría que añadirlas a cada interfaz.

1voto

Darron Puntos 13196

Tal vez intente añadirlos o añadirlos a /etc/resolv.conf ? ¿No puedes añadirlos al final de la lista manualmente, delimitándolos con una coma en Lion? Parece funcionar en 10.6, lo añade además de los suministrados por el DHCP, y el lote completo de ellos aparece en resolv.conf instantáneamente.

Tal vez esto no funcione para sus propósitos, pero ¿por qué no añadir manualmente los que el DHCP suministró y los que quiere añadir y guardarlos en las Preferencias del Sistema? Entonces no tendrá que preocuparse de sobrescribir nada ya que los añadirá manualmente. Supongo que tu dominio no va a cambiar de nombre con mucha frecuencia.

Puedo decirte que a partir de Snow Leopard MDNSResponder (Bonjour) maneja todos los DNS (no sólo los MDNS).

1 votos

resolve.conf está obsoleto, siendo documentado dentro del archivo.

2 votos

Esto no funciona y no debería ser la respuesta aceptada. La respuesta de @Yobert funciona muy bien y hace exactamente lo que el solicitante quería.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X