기본 영역(BIND 9)에서 다른 DNS 항목을 참조하는 방법

기본 영역(BIND 9)에서 다른 DNS 항목을 참조하는 방법

두 가지 하위 영역이 있습니다.

zone "first.com" {                      type master; file "/etc/bind/zones/first.com.primary";};
zone "second.com" {                      type master; file "/etc/bind/zones/second.com.primary";};

먼저 내부를 정의합니다.

$TTL 300
@   IN SOA ns1.org.com. postmaster.org.com. (
    2022050902  ; serial
    14400        ; refresh
    1800         ; retry
    604800       ; expire
    86400 )      ; minimum

@                        IN NS      ns1.org.com.
subdomain                IN A       127.0.0.1

둘째, 먼저 참고하고 싶습니다

$TTL 86400
@   IN SOA ns1.org.com. postmaster.org.com. (
    2019032601   ; serial
    14400        ; refresh
    1800         ; retry
    604800       ; expire
    86400 )      ; minimum

@                        IN NS      ns1.org.com.

@                        IN CNAME       subdomain.first.com.
www                      IN CNAME       @

localhost                IN A       127.0.0.1
loopback                 IN CNAME   localhost

그게 가능합니까?

답변1

레코드 CNAME가 이 이름을 지정합니다.왼쪽기록의 한 면은 CNAME이름의 별칭입니다.옳은옆 -모든 유형의 DNS 레코드에서 작동A, 기록 만을 위한 것이 아닙니다 . 굵은 글씨 부분이 여기서 문제를 일으키는 부분입니다. "모든 레코드 유형"에는 지역 SOANS레코드도 포함되기 때문입니다.

CNAME영역 상단에 있는 레코드를 사용하려고 합니다 second.com. SOA영역 상단에도 있습니다. 따라서 정규화된 형식으로 작성된 첫 번째 CNAME콘텐츠는 다음과 같습니다.

second.com.  IN CNAME subdomain.first.com.

따라서 SOA 레코드를 요청하면 second.comSOA 레코드를 반환해야 합니다. subdomain.first.com그러나 실제 SOA 레코드는 second.com액세스할 수 없으며 해당 SOA 레코드가 없으면 전체 second.com도메인이 손상됩니다. CNAME즉, 가리키는 레코드 subdomain.first.com가 실제로 유효하지 않다는 의미입니다.

또한 subdomain.first.com자체 영역의 정점이 아니라 상위 수준 영역의 하위 도메인인 경우 자체 SOA 레코드가 없습니다. CNAME 매핑을 따르는 것은 second.comSOA 레코드에 대한 요청에 " 그런 것은 "기록"이 전혀 존재하지 않습니다. 그러나 영역에 SOA 레코드가 없으면 second.com해당 영역은 존재하지 않습니다.

second.com마찬가지로 NS 레코드가 요청되면 CNAMENS 레코드에 대한 응답이 필요합니다 subdomain.first.com. 하지만 네임서버는 subdomain.first.com그것에 대해 전혀 알 필요가 없습니다 second.com.

그러한 모순을 방지하기 위해,RFC 1034 섹션 3.6.2에 따르면:

CNAME RR이 노드에 있는 경우 다른 데이터가 없어야 합니다. 이렇게 하면 정식 이름과 해당 별칭에 대한 데이터가 다를 수 없습니다. 또한 이 규칙은 권한 있는 서버에서 다른 RR 유형을 확인하지 않고도 캐시된 CNAME을 사용할 수 있도록 보장합니다.

(RFC 1034는 다음 단어를 사용하는 규칙보다 우선합니다.~해야 한다,~ 해야 하다그리고가능한요구되는 수준을 엄격히 준수하고,RFC 2119에 정의된 대로. "추가 데이터 없음"이라고 표시되어 있지만~해야 한다존재합니다"라는 메시지가 표시되는 경우 DNS 캐싱의 정확성이 이에 따라 달라지므로 이는 권장 사항이 아니라 필수 사항입니다.)

CNAME이 규칙은 영역의 정점에 레코드가 존재하는 것을 불가능하게 만듭니다 . 영역이 의미 있게 존재하려면 SOANS레코드가 정점에 있어야 하며, CNAME이를 포함하는 모든 레코드는 이 규칙을 위반하게 되기 때문입니다.

자세한 내용은 다음을 참조하세요.https://www.isc.org/blogs/cname-at-the-apex-of-a-zone/


@                        IN CNAME       subdomain.first.com.
www                      IN CNAME       @

더욱이 CNAME한 레코드를 다른 레코드로 가리키는 것은 CNAME기술적으로는 가능하지만 비효율적이고 나쁜 스타일입니다. 항상 체인 끝에 있는 표준 이름으로 직접 이동해야 합니다.

@                        IN CNAME       subdomain.first.com.
www                      IN CNAME       subdomain.first.com.

관련 정보