Nine DNS est un serveur DNS flexible qui offre une résolution DNS basée sur la source de la question.
NineDNS vise à fournir un moyen flexible de résoudre les enregistrements DNS.
Vous pouvez faire correspondre différentes sources de questions par cidr, port, protocole, etc.
Les clients peuvent utiliser différentes résolutions DNS en fonction de leur environnement réseau.
Par exemple, vous pouvez filtrer les clients par cidr et résoudre différents enregistrements DNS pour eux.
De plus, NineDNS prend en charge la récupération d'enregistrements DNS à partir de bases de données distantes telles que MySQL ou PostgreSQL.
Il est facile de gérer les enregistrements DNS de manière centralisée.
NineDNS peut s'intégrer dans le cadre de composants cloud natifs. Il prend en charge le partage de cache, l'équilibrage de charge et le traçage des journaux.
La raison pour laquelle nous créons NineDNS est de fournir un moyen flexible de résoudre les enregistrements DNS en fonction de la source de la question.
Par exemple, vous pouvez faire correspondre différentes sources de questions par cidr, port, protocole, etc.
Les clients peuvent utiliser différentes résolutions DNS en fonction de leur environnement réseau.
Votre serveur est déployé sur un intranet et un port de serveur exposé via un serveur de saut ou un tunnel.
Et vous souhaitez résoudre le domaine du serveur en adresse IP intranet lorsque les clients sont dans l'intranet et résoudre en adresse IP publique lorsque les clients sont à l'extérieur.
Il s'agit d'un cas d'utilisation typique de NineDNS . Il vous suffit NS votre domaine au serveur NineDNS et de configurer NineDNS pour résoudre le domaine en fonction de l'environnement réseau du client, cidr par exemple. 
Pour être un serveur DNS complet, NineDNS prend en charge la récupération d'enregistrements DNS à partir de bases de données distantes telles que MySQL, des fichiers, Lark, etc.
Comme n’importe quel fournisseur Cloud DNS, vous pouvez gérer facilement les enregistrements DNS de manière centralisée.
Définissez une configuration :
{
"addr" : " :53 " , // listen address
"debug" : true , // debug mode
"domains" : { // dns resolve domain key-value pairs. domain <===> resolve config
"example.com" : {
"authoritative" : true , // authoritative mode
"recursion" : false , // recursion mode
"upstream" : " 223.5.5.5:53 " , // upstream dns server, only works in recursion mode
"ttl" : 600 , // default ttl, attention: ttl is server level, not record level. server re-fetch record source ttl
"providers" : { // record source providers. Read [Record Provider](#record-provider) for more details
"mysql" : " root:123456@tcp(localhost:3306)/dns " ,
"sqlite" : " dns.db "
},
"rules" : { // dns resolve match rules. name <===> rule. Name is also used as table name in mysql record source
"all" : {
"cidrs" : [ // cidr match
" 0.0.0.0/0 "
],
"ports" : [
" 1-65535 " // port match
]
}
}
}
},
"redis" : { // redis config
"addr" : " localhost:6379 " ,
"db" : 8
}
}Lorsqu'une question DNS arrive,
NineDNStrouvera une règle définie qui correspond à la fois au nom de domaine et aux règles. Recherchez ensuite les enregistrements dans la source d'enregistrement définie dans la règle.
Lisez Record Provider pour plus de détails sur providers .
Et c'est tout ! Exécutez NineDNS avec le fichier de configuration maintenant :
$ ninedns -c config.json
NineDNScharge automatiquementninedns.jsondans le répertoire actuel si-cn'est pas spécifié.
Télécharger à partir de la page des versions.
| Nom | Description |
|---|---|
ninedns-mini | Binaire NineDNS sans la plupart des fournisseurs. |
ninedns | Binaire NineDNS avec fournisseur MySQL et fournisseurs de fichiers |
ninedns-full | Binaire NineDNS avec tous les fournisseurs. |
Un merci tout spécial à la bibliothèque go DNS gracieuse et bien conçue de miekg, miekg/dns