외부 확인자를 사용하여 CNAME 레코드를 확인하도록 CoreDNS를 구성하는 방법

외부 확인자를 사용하여 CNAME 레코드를 확인하도록 CoreDNS를 구성하는 방법

CoreDNS가 파일(파일 플러그인)에서 CNAME 레코드를 읽은 다음 사용자 지정 확인자(포워드 플러그인?)를 사용하여 이를 해결하는 예제 구성을 찾고 있습니다. 클라이언트는 CNAME 레코드를 가져오지 않고 A 레코드만 가져와야 합니다.

예를 들어:

  • 클라이언트가 CoreDNS에 요청하는 경우test.r1.svc
  • 그런 다음 CoreDNS가 CNAME기록을 얻습니다.test IN CNAME test.r2.svc.
  • 그런 다음 외국 해결사 10.11.12.13:53에게 요청하십시오.test.r2.svc
  • A그리고 기록 으로 클라이언트에게 응답

가능합니까?

이 구성은 나에게 적합하지 않습니다.

Corefile
# root
. {
  log
  errors
}

r1.svc {
  file r1.svc
  forward r2.svc 10.11.12.13:53
  log
  errors
}
r1.svc파일
$ORIGIN r1.svc.
@ 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. (
    202211241713 ; serial
    7200         ; refresh (2 hours)
    3600         ; retry (1 hour)
    1209600      ; expire (2 weeks)
    3600         ; minimum (1 hour)
)
3600 IN NS a.iana-servers.net.
3600 IN NS b.iana-servers.net.
test IN CNAME test.r2.svc.

답변1

내가 틀렸을 수도 있지만 블록 forward r2.svc 10.11.12.13:53에 있으므로 r1.svc호출되지 않습니다.

Client asks for test.r1.svc
Server responds that it's a CNAME for test.r2.svc
Client asks for test.r2.svc
Server doesn't know how to process the answer

forward r2.svc 10.11.12.13:53라인을 블록으로 이동하면 .두 번째 요청을 처리할 수 있습니다.

답변2

이를 위해 CoreDNS용 플러그인을 작성했습니다.https://github.com/kinjelom/coredns-recursor

여기에 이미지 설명을 입력하세요

관련 정보