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, 파일, 종달새 등과 같은 원격 데이터베이스에서 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에 특별히 감사드립니다.