바인딩9: 로컬 영역 구성에서 외부 네임서버를 쿼리하는 방법

바인딩9: 로컬 영역 구성에서 외부 네임서버를 쿼리하는 방법

설치 시 영역을 구성했습니다 bind9. 이는 dyndns 하위 도메인에 대한 Python 스크립트를 통해 관리하는 공개 네임서버로 간주됩니다. 하지만 내 기본 웹사이트는 제3자가 다른 곳에서 호스팅하고 있으며 가까운 시일 내에 로컬에서도 호스팅하고 싶습니다. 지금은 이름 확인을 위해 로컬 데이터베이스를 조사하고 외부 DNS로 리디렉션(또는 가져오기)하는 데 실패한 경우에는 Bind9가 로컬 데이터베이스를 조사하기를 원합니다. 여기 내 구성이 있지만 외부 쿼리(example.com 및 www.example.com)에서는 작동하지 않습니다.

$ cat /etc/bind/named.conf.local
include "/etc/bind/zones.rfc1918";
zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    allow-transfer { any; };
    update-policy local;
};

$ cat /etc/bind/zones/db.example.com
$ORIGIN .
$TTL 172800     ; 2 days
example.com               IN SOA  ns1.example.com. hostmaster.example.com. (
                          116        ; serial
                          7200       ; refresh (2 hours)
                          900        ; retry (15 minutes)
                          1857600    ; expire (3 weeks 12 hours)
                          8400       ; minimum (2 hours 20 minutes)
                          )
                    NS      ns1.example.com.
                    NS      ns1.external-host.com.
                    NS      ns2.external-host.com.
ns1.external-host.com      A       1.2.3.1
ns2.external-host.com      A       1.2.3.2

$ORIGIN example.com.
ns1                     A       1.1.1.1
@            IN         NS      ns1.external-host.com.
@            IN         NS      ns2.external-host.com.
www            IN         NS      ns1.external-host.com.
www           IN         NS      ns2.external-host.com.
clients                 A       1.1.1.1
$ORIGIN clients.example.com.
$TTL 3600       ; 1 hour
test                    A       2.2.2.2

답변1

귀하의 이름 서버 중 하나가 로컬이기 때문에(다른 이름 서버에서 접근할 수 없음) 이것이 가능하지 않다고 생각합니다. 기술적으로는 전달자 또는 다중 마스터 옵션을 사용해 볼 수 있습니다. 그러나 작동하더라도 소규모 설정에는 좋은 방법이 아닙니다.

DNS는 어느 서버가 영역 마스터인지 정보를 기반으로 하며 유형별로 설정됩니다. 현재 정보를 보유하는 영역 master이므로 하나만 있어야 합니다(인스턴스 간에 차이가 있을 수 있으므로). Zone slave은 마스터를 알고 있으며 전체 영역에 대해 직접 요청할 수 있습니다. 마스터가 자신이 슬레이브라는 것을 알고 있으면 전체 영역을 전송할 수도 있습니다. 이것이 당신이 해야 할 일입니다.

공개 이름 서버를 현재 위치에 유지하고 마스터로 유지하십시오. 로컬 환경에서 두 번째 바인드를 설치하고 영역을 슬레이브로 추가합니다. 또한 자동 업데이트가 작동하도록 슬레이브를 마스터에 추가하십시오. 두 로그 모두를 조사하려면 AXFR 또는 IXFR 요청이 이루어져야 합니다.

따라서 마스터가 1.2.3.4이고 슬레이브가 5.6.7.8이라고 가정하면 영역 정의는 다음과 같습니다.

주인:

zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    also-notify { 5.6.7.8; };
    notify yes;
};

노예:

zone "example.com" {
    type slave;
    file "/etc/bind/zones/db.example.com"; // this is the file updated.
    allow-notify { 1.2.3.4; };
    allow-transfer { 1.2.3.4; };
};

보시다시피, 슬레이브의 주소는 정적으로 구성되어 있으므로 마스터에서 슬레이브에 연결할 수 있어야 합니다.

관련 정보