レプリカのない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に転送されます(影響を受けません)。

関連情報