Nine DNS は、質問ソースに基づいて DNS 解決を提供する柔軟な DNS サーバーです。
NineDNS
DNS レコードを解決する柔軟な方法を提供することを目的としています。
CIDR、ポート、プロトコルなどによって、さまざまな質問ソースを照合できます。
クライアントは、ネットワーク環境に基づいて異なる DNS 解決を使用できます。
たとえば、cidr でクライアントをフィルタリングし、クライアントのさまざまな DNS レコードを解決できます。
さらに、NineDNS は、MySQL や PostgreSQL などのリモート データベースからの DNS レコードの取得をサポートしています。
DNS レコードを一元管理するのは簡単です。
NineDNS
クラウドネイティブ コンポーネントの一部として統合できます。キャッシュ共有、負荷分散、ログ トレースをサポートします。
NineDNS
を作成する理由は、質問元に応じて DNS レコードを解決する柔軟な方法を提供するためです。
たとえば、cidr、ポート、プロトコルなどによってさまざまな質問ソースを照合できます。
クライアントは、ネットワーク環境に基づいて異なる DNS 解決を使用できます。
サーバーがイントラネットに展開され、ジャンプ サーバーまたはトンネル経由でサーバー ポートが公開されています。
また、クライアントがイントラネット内にある場合はサーバー ドメインをイントラネット IP に解決し、クライアントが外部にある場合はパブリック IP に解決するとします。
これは、 NineDNS
の典型的な使用例です。ドメインをNineDNS
サーバーにNS
、クライアントのネットワーク環境 (cidr など) に基づいてドメインを解決するようにNineDNS
を設定するだけです。
フル機能の DNS サーバーとなるために、 NineDNS
MySQL、ファイル、lark などのリモート データベースからの DNS レコードの取得をサポートしています。
他のクラウド 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
-c
が指定されていない場合、NineDNS
現在のディレクトリにninedns.json
を自動ロードします。
リリースページからダウンロードしてください。
名前 | 説明 |
---|---|
ninedns-mini | ほとんどのプロバイダーを含まない NineDNS バイナリ。 |
ninedns | mysql プロバイダーとファイル プロバイダーを備えた NineDNS バイナリ |
ninedns-full | すべてのプロバイダーを含む NineDNS バイナリ。 |
miekg の優雅でよく設計された go dns ライブラリ miekg/dns に感謝します。