Nine DNS ist ein flexibler DNS-Server, der eine DNS-Auflösung basierend auf der Fragequelle bietet.
NineDNS
zielt darauf ab, eine flexible Möglichkeit zur Auflösung von DNS-Einträgen bereitzustellen.
Sie können verschiedene Fragenquellen nach CIDR, Port, Protokoll usw. zuordnen.
Clients können je nach Netzwerkumgebung unterschiedliche DNS-Auflösungen verwenden.
Beispielsweise können Sie Clients nach CIDR filtern und verschiedene DNS-Einträge für sie auflösen.
Darüber hinaus unterstützt NineDNS das Abrufen von DNS-Einträgen aus entfernten Datenbanken wie MySQL oder PostgreSQL.
Es ist einfach, DNS-Einträge zentral zu verwalten.
NineDNS
kann als Teil cloudnativer Komponenten integriert werden. Es unterstützt Cache-Sharing, Lastausgleich und Protokollverfolgung.
Der Grund, warum wir NineDNS
erstellen, besteht darin, eine flexible Möglichkeit zur Auflösung von DNS-Einträgen entsprechend der Fragequelle bereitzustellen.
Sie können beispielsweise verschiedene Fragequellen nach CIDR, Port, Protokoll usw. zuordnen.
Clients können je nach Netzwerkumgebung unterschiedliche DNS-Auflösungen verwenden.
Sie haben Ihren Server im Intranet bereitgestellt und den Server-Port über einen Jump-Server oder Tunnel freigelegt.
Und Sie möchten die Serverdomäne in eine Intranet-IP auflösen, wenn sich Clients im Intranet befinden, und in eine öffentliche IP auflösen, wenn sich Clients außerhalb befinden.
Dies ist ein typischer Anwendungsfall von NineDNS
. Sie NS
einfach Ihre Domäne an NineDNS
-Server und konfigurieren NineDNS
so, dass die Domäne basierend auf der Netzwerkumgebung des Clients, beispielsweise cidr, aufgelöst wird.
Um ein voll ausgestatteter DNS-Server zu sein, unterstützt NineDNS
das Abrufen von DNS-Einträgen aus entfernten Datenbanken wie MySQL, Dateien, Lark usw.
Wie bei allen Cloud-DNS-Anbietern können Sie DNS-Einträge einfach und zentral verwalten.
Definieren Sie eine Konfiguration:
{
"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
}
}
Wenn eine DNS-Frage eingeht, findet
NineDNS
eine definierte Regel, die sowohl dem Domänennamen als auch den Regeln entspricht. Suchen Sie dann nach Datensätzen in der in der Regel definierten Datensatzquelle.
Weitere Informationen zu providers
finden Sie unter „Datensatzanbieter“.
Und das ist alles! Führen Sie NineDNS
jetzt mit der Konfigurationsdatei aus:
$ ninedns -c config.json
NineDNS
lädtninedns.json
automatisch im aktuellen Verzeichnis, wenn-c
nicht angegeben ist.
Von der Veröffentlichungsseite herunterladen.
Name | Beschreibung |
---|---|
ninedns-mini | NineDNS-Binärdatei ohne die meisten Anbieter. |
ninedns | NineDNS-Binärdatei mit MySQL-Anbieter und Dateianbietern |
ninedns-full | NineDNS-Binärdatei mit allen Anbietern. |
Besonderer Dank geht an die elegante und gut gestaltete Go-DNS-Bibliothek miekg/dns von miekg