14 votes

Comment ajouter des domaines de recherche DNS supplémentaires sans ignorer ceux du DHCP ?

Je veux juste ajouter ma propre liste de domaines de recherche mais sans remplacer ceux qui sont renvoyés par le DHCP ?

Comme tout le monde peut s'en douter, j'ai déjà essayé de les ajouter dans Réseau > Avancé > DNS mais en les ajoutant là, ils remplaceront ceux du DHCP, ce qui n'est pas mon intention.

Ce serait parfait si je pouvais les ajouter après ceux du DHCP, mais j'accepterais aussi une solution qui les ajoute après.

Le deuxième essai serait /etc/resolv.conf mais le message du dossier est aussi clair qu'il peut l'être :

# 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.

Personnellement, j'enverrais le gars qui a écrit ce message faire du support téléphonique pendant deux mois. Ainsi, il apprendrait à ajouter quelques conseils la prochaine fois qu'il documente des choses : où êtes-vous censé régler les paramètres ? ou inclure un lien vers un article de la base de connaissances.

Néanmoins, je ne veux pas que quelque chose soit perdu lors d'une mise à jour mineure d'OS X.

Comment puis-je faire cela pour OS X 10.7 ?

7voto

Yobert Points 161

Mettez simplement un fichier dans /etc/resolver/ avec un nom tel que "searchappend" avec ce contenu :

search example.com

Il suffit de ne pas nommer le fichier "com" ou un autre TLD valide. Cela fonctionne grâce à la magie du résolveur d'OSX. Pour plus d'informations, lisez la documentation sur votre mac avec cette commande :

man 5 resolver

J'y ai un fichier appelé "consul" qui ressemble à ça :

nameserver 127.0.0.1
port 8600
search consul

Comme par magie, .consul est ajouté au chemin de recherche et toute résolution pour les TLD .consul utilise mon serveur de noms local.

3voto

chiggsy Points 2899

Vous pourriez utiliser le networksetup et ajoutez les domaines de recherche supplémentaires dans un tableau sur la ligne de commande : Depuis la page de manuel :

-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

Donc :

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

cette invocation doit avoir le bon ordre.

3voto

alls0rts Points 279

Je voulais faire ça pour une connexion VPN.

Tout d'abord, trouver les clés DNS dans le magasin de données :

echo "list .*/DNS"| scutil

Vous pouvez examiner chaque clé en utilisant show <key> comme dans

> 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
  }
}

Comme je l'ai dit, je changeais pour ma connexion VPN et donc, initialement, je me suis retrouvé avec un script comme ça :

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

Pour compléter l'image, selon la question originale, alors :

#!/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 Points 2869

Ajoutez-les dans Préférences système > Réseau > Avancé > | DNS |.

(Une raison particulière de ce vote négatif ? Elle fait exactement ce que le demandeur demande et ne nécessite pas l'utilisation d'un terminal).

1voto

Darron Points 13196

Essayez peut-être de les ajouter/appliquer à /etc/resolv.conf ? Vous ne pouvez pas les ajouter manuellement à la fin de la liste, en les délimitant par une virgule dans Lion ? Cela semble fonctionner dans 10.6, il les ajoute en plus de ceux fournis par le DHCP, et l'ensemble d'entre eux apparaissent instantanément dans resolv.conf.

Peut-être que cela ne fonctionnera pas dans votre cas, mais pourquoi ne pas ajouter manuellement ceux que le DHCP a fournis et ceux que vous voulez ajouter et les enregistrer dans les Préférences Système ? Ainsi, vous n'aurez pas à vous soucier d'écraser quoi que ce soit puisque vous les ajouterez manuellement. Je ne pense pas que votre domaine va changer de nom très fréquemment.

Je peux vous dire qu'à partir de Snow Leopard, mDNSResponder (Bonjour) gère tous les DNS (pas seulement le Multicast DNS).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X