복제본이 없는 DNS 분할 지평선

복제본이 없는 DNS 분할 지평선

클라우드의 특정 지역에 권한 있는 DNS 서버가 있습니다.

이제 내부 네트워크(그리고 그곳에서만)의 로컬 주소를 사용하여 이 영역의 일부 레코드를 전달해야 합니다. 나는 고전적인 분할 지평선을 생각합니다.

전체 영역을 복사하지 않고 이를 달성할 수 있는 방법이 있습니까?

이는 이전 네트워크 설정에서 나온 것이며 내부 보기에 대한 요구 사항은 영향을 미치지 않습니다.

아이디어: 일부 레코드가 포함된 내부 DNS 서버:

  • NXDOMAIN 인턴을 확인하고 외부로 전달하는 파서
  • dnsdist 및 "일부" 규칙이 있는 내부 DNS 서버

답변1

대답은 CoreDNS와 대체 플러그인(https://coredns.io/explugins/alternate/).

간단한 Docker 컨테이너가 모든 문제를 해결했습니다.

FROM golang:1.18 AS corednsbuilder

RUN git clone https://github.com/coredns/coredns.git /git

WORKDIR /git
RUN (echo "alternate:github.com/coredns/alternate" && cat /git/plugin.cfg) > /git/plugin.cfg.tmp && mv plugin.cfg.tmp plugin.cfg
RUN cd /git; make

FROM debian:stable-slim AS certs
SHELL [ "/bin/sh", "-ec" ]

RUN export DEBCONF_NONINTERACTIVE_SEEN=true \
       DEBIAN_FRONTEND=noninteractive \
       DEBIAN_PRIORITY=critical \
       TERM=linux ; \
apt-get -qq update ; \
apt-get -yyqq upgrade ; \
apt-get -yyqq install ca-certificates ; \
apt-get clean

FROM scratch

COPY --from=certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=corednsbuilder /git/coredns /coredns

EXPOSE 53 53/udp
ENTRYPOINT ["/coredns"]

구성은 다음과 같습니다.

. {
    forward . 192.168.1.254
    alternate original NXDOMAIN,SERVFAIL,REFUSED . 1.1.1.1:53
    log
}

이렇게 하면 192.168.1.254가 항상 요청되며 NXDOMAIN, SERVFAIL, REFUSED 중 하나를 반환하면 요청이 1.1.1.1:53으로 전달됩니다(영향을 받지 않음).

관련 정보