Nine DNS é um servidor DNS flexível que oferece resolução de DNS com base na origem da pergunta.
NineDNS
visa fornecer uma maneira flexível de resolver registros DNS.
Você pode combinar diferentes fontes de perguntas por cidr, porta, protocolo e assim por diante.
Os clientes podem usar diferentes resoluções de DNS com base em seu ambiente de rede.
Por exemplo, você pode filtrar clientes por cidr e resolver diferentes registros DNS para eles.
Além disso, NineDNS suporta a recuperação de registros DNS de bancos de dados remotos, como MySQL ou PostgreSQL.
É fácil gerenciar registros DNS de forma centralizada.
NineDNS
pode ser integrado como parte de componentes nativos da nuvem. Suporta compartilhamento de cache, balanceamento de carga e rastreamento de log.
A razão pela qual criamos NineDNS
é fornecer uma maneira flexível de resolver registros DNS de acordo com a fonte da pergunta.
Por exemplo, você pode combinar diferentes fontes de perguntas por cidr, porta, protocolo e assim por diante.
Os clientes podem usar diferentes resoluções de DNS com base em seu ambiente de rede.
Você tem seu servidor implantado na intranet e na porta do servidor exposta por meio de um servidor de salto ou túnel.
E você deseja resolver o domínio do servidor para o IP da intranet quando os clientes estiverem na intranet e resolver para o IP público quando os clientes estiverem fora.
Este é um caso de uso típico do NineDNS
. Você simplesmente NS
seu domínio para o servidor NineDNS
e configura NineDNS
para resolver o domínio com base no ambiente de rede do cliente, cidr por exemplo.
Para ser um servidor DNS completo, NineDNS
suporta a recuperação de registros DNS de bancos de dados remotos, como MySQL, arquivos, cotovia e assim por diante.
Assim como qualquer provedor de Cloud DNS, você pode gerenciar registros DNS facilmente e de forma centralizada.
Defina uma configuração:
{
"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
}
}
Quando surge uma pergunta sobre DNS,
NineDNS
encontrará uma regra definida que corresponde ao nome de domínio e às regras. Em seguida, procure registros na fonte de registros definida na regra.
Leia Record Provider para obter mais detalhes sobre providers
.
E isso é tudo! Execute NineDNS
com arquivo de configuração agora:
$ ninedns -c config.json
NineDNS
carrega automaticamenteninedns.json
no diretório atual se-c
não for especificado.
Baixe na página de lançamentos.
Nome | Descrição |
---|---|
ninedns-mini | Binário NineDNS sem a maioria dos provedores. |
ninedns | Binário NineDNS com provedor mysql e provedores de arquivos |
ninedns-full | Binário NineDNS com todos os provedores. |
Agradecimentos especiais à graciosa e bem projetada biblioteca go dns do miekg miekg/dns