
クラウド内の特定の地域に特権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に転送されます(影響を受けません)。