두 가지 하위 영역이 있습니다.
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
, 기록 만을 위한 것이 아닙니다 . 굵은 글씨 부분이 여기서 문제를 일으키는 부분입니다. "모든 레코드 유형"에는 지역 SOA
과 NS
레코드도 포함되기 때문입니다.
CNAME
영역 상단에 있는 레코드를 사용하려고 합니다 second.com
. SOA
영역 상단에도 있습니다. 따라서 정규화된 형식으로 작성된 첫 번째 CNAME
콘텐츠는 다음과 같습니다.
second.com. IN CNAME subdomain.first.com.
따라서 SOA 레코드를 요청하면 second.com
SOA 레코드를 반환해야 합니다. subdomain.first.com
그러나 실제 SOA 레코드는 second.com
액세스할 수 없으며 해당 SOA 레코드가 없으면 전체 second.com
도메인이 손상됩니다. CNAME
즉, 가리키는 레코드 subdomain.first.com
가 실제로 유효하지 않다는 의미입니다.
또한 subdomain.first.com
자체 영역의 정점이 아니라 상위 수준 영역의 하위 도메인인 경우 자체 SOA 레코드가 없습니다. CNAME 매핑을 따르는 것은 second.com
SOA 레코드에 대한 요청에 " 그런 것은 "기록"이 전혀 존재하지 않습니다. 그러나 영역에 SOA 레코드가 없으면 second.com
해당 영역은 존재하지 않습니다.
second.com
마찬가지로 NS 레코드가 요청되면 CNAME
NS 레코드에 대한 응답이 필요합니다 subdomain.first.com
. 하지만 네임서버는 subdomain.first.com
그것에 대해 전혀 알 필요가 없습니다 second.com
.
그러한 모순을 방지하기 위해,RFC 1034 섹션 3.6.2에 따르면:
CNAME RR이 노드에 있는 경우 다른 데이터가 없어야 합니다. 이렇게 하면 정식 이름과 해당 별칭에 대한 데이터가 다를 수 없습니다. 또한 이 규칙은 권한 있는 서버에서 다른 RR 유형을 확인하지 않고도 캐시된 CNAME을 사용할 수 있도록 보장합니다.
(RFC 1034는 다음 단어를 사용하는 규칙보다 우선합니다.~해야 한다,~ 해야 하다그리고가능한요구되는 수준을 엄격히 준수하고,RFC 2119에 정의된 대로. "추가 데이터 없음"이라고 표시되어 있지만~해야 한다존재합니다"라는 메시지가 표시되는 경우 DNS 캐싱의 정확성이 이에 따라 달라지므로 이는 권장 사항이 아니라 필수 사항입니다.)
CNAME
이 규칙은 영역의 정점에 레코드가 존재하는 것을 불가능하게 만듭니다 . 영역이 의미 있게 존재하려면 SOA
및 NS
레코드가 정점에 있어야 하며, 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.