Nine DNS es un servidor DNS flexible que ofrece resolución DNS basada en la fuente de la pregunta.
NineDNS
tiene como objetivo proporcionar una forma flexible de resolver registros DNS.
Puede hacer coincidir diferentes fuentes de preguntas por cidr, puerto, protocolo, etc.
Los clientes pueden utilizar diferentes resoluciones de DNS según su entorno de red.
Por ejemplo, puede filtrar clientes por cidr y resolver diferentes registros dns para ellos.
Además, NineDNS admite la recuperación de registros DNS de bases de datos remotas como MySQL o PostgreSQL.
Es fácil administrar registros DNS de forma centralizada.
NineDNS
puede integrarse como parte de componentes nativos de la nube. Admite el uso compartido de caché, el equilibrio de carga y el seguimiento de registros.
La razón por la que creamos NineDNS
es para proporcionar una forma flexible de resolver registros DNS según la fuente de la pregunta.
Por ejemplo, puede hacer coincidir diferentes fuentes de preguntas por cidr, puerto, protocolo, etc.
Los clientes pueden utilizar diferentes resoluciones de DNS según su entorno de red.
Tiene su servidor implementado en la intranet y el puerto del servidor expuesto a través de un servidor de salto o túnel.
Y desea resolver el dominio del servidor en la IP de la intranet cuando los clientes están en la intranet y resolver en la IP pública cuando los clientes están afuera.
Este es un caso de uso típico de NineDNS
. Simplemente NS
su dominio al servidor NineDNS
y configure NineDNS
para resolver el dominio según el entorno de red del cliente, cidr, por ejemplo.
Para ser un servidor DNS con todas las funciones, NineDNS
admite la recuperación de registros DNS de bases de datos remotas como MySQL, archivos, Lark, etc.
Al igual que cualquier proveedor de DNS en la nube, puede administrar los registros DNS fácilmente de forma centralizada.
Definir una configuración:
{
"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
}
}
Cuando llega una pregunta sobre DNS,
NineDNS
encontrará una regla definida que coincida tanto con el nombre de dominio como con las reglas. Luego busque registros en la fuente de registros definida en la regla.
Lea Proveedor de registros para obtener más detalles sobre providers
.
¡Y eso es todo! Ejecute NineDNS
con el archivo de configuración ahora:
$ ninedns -c config.json
NineDNS
carga automáticamenteninedns.json
en el directorio actual si no se especifica-c
.
Descargar desde la página de lanzamientos.
Nombre | Descripción |
---|---|
ninedns-mini | Binario NineDNS sin la mayoría de los proveedores. |
ninedns | Binario NineDNS con proveedor mysql y proveedores de archivos |
ninedns-full | Binario NineDNS con todos los proveedores. |
Un agradecimiento especial a la elegante y bien diseñada biblioteca go dns de miekg miekg/dns