Nine DNS — это гибкий DNS-сервер, который предлагает разрешение DNS на основе источника вопроса.
Цель NineDNS
— предоставить гибкий способ разрешения записей DNS.
Вы можете сопоставить разные источники вопросов по cidr, порту, протоколу и т. д.
Клиенты могут использовать разные разрешения DNS в зависимости от своей сетевой среды.
Например, вы можете фильтровать клиентов по cidr и разрешать для них разные записи DNS.
Более того, NineDNS поддерживает получение записей DNS из удаленных баз данных, таких как MySQL или PostgreSQL.
Централизованно управлять записями DNS легко.
NineDNS
может интегрироваться как часть облачных компонентов. Он поддерживает совместное использование кэша, балансировку нагрузки и трассировку журналов.
Причина, по которой мы создаем NineDNS
, — предоставить гибкий способ разрешения записей DNS в соответствии с источником вопроса.
Например, вы можете сопоставить разные источники вопросов по cidr, порту, протоколу и т. д.
Клиенты могут использовать разные разрешения DNS в зависимости от своей сетевой среды.
У вас есть развернутый сервер в интрасети и открытый порт сервера через сервер перехода или туннель.
И вы хотите разрешить домен сервера в IP-адрес интрасети, когда клиенты находятся в интрасети, и разрешить общедоступный IP-адрес, когда клиенты находятся снаружи.
Это типичный вариант использования NineDNS
. Вы просто NS
свой домен с сервером NineDNS
и настраиваете NineDNS
для разрешения домена на основе сетевого окружения клиента, например cidr.
Будучи полнофункциональным DNS-сервером, NineDNS
поддерживает получение записей DNS из удаленных баз данных, таких как MySQL, файлы, жаворонки и т. д.
Как и любой другой поставщик облачных DNS, вы можете легко управлять записями DNS централизованно.
Определите конфигурацию:
{
"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
}
}
Когда поступает вопрос о DNS,
NineDNS
найдет определенное правило, которое соответствует как имени домена, так и правилам. Затем найдите записи в источнике записей, определенном в правиле.
Дополнительную информацию о providers
см. в разделе «Поставщик записей».
И это все! Запустите NineDNS
с файлом конфигурации сейчас:
$ ninedns -c config.json
NineDNS
автоматически загружаетninedns.json
в текущий каталог, если не указан-c
.
Загрузите со страницы релизов.
Имя | Описание |
---|---|
ninedns-mini | Бинарный файл NineDNS без большинства провайдеров. |
ninedns | Бинарный файл NineDNS с поставщиком MySQL и поставщиками файлов |
ninedns-full | Бинарный файл NineDNS со всеми провайдерами. |
Особая благодарность изящной и хорошо продуманной библиотеке Go DNS miekg/dns от miekg.