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,
NineDNS
trouvera 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
NineDNS
charge automatiquementninedns.json
dans le répertoire actuel si-c
n'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