NS 레코드에 IP 주소가없는 이유는 무엇입니까?


18

NS 레코드의 요점은 클라이언트에게 어떤 네임 서버가 도메인 네임의 실제 IP 주소를 알 수 있는지 알려주는 것입니다. 예를 들어, 다음 쿼리는 정식 답변을 얻으려면 facebook.com요청해야한다는 것을 알려줍니다 a.ns.facebook.com.

> dig ns facebook.com                                                                                                                                       19:58:27

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> ns facebook.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32063
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;facebook.com.          IN  NS

;; ANSWER SECTION:
facebook.com.       65000   IN  NS  a.ns.facebook.com.
facebook.com.       65000   IN  NS  b.ns.facebook.com.

;; Query time: 13 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sun Mar 20 19:58:40 CET 2016
;; MSG SIZE  rcvd: 65

이것은 시원하고 유용하게 보이지만 ANSWER섹션에 왜 권위있는 소스의 IP가 아닌 호스트 이름이 포함되어 있는지 궁금 합니다. 클라이언트가 호스트 이름이 아닌 신뢰할 수있는 소스의 실제 IP 주소를 얻는 것이 더 쉽지 않습니까?

호스트 이름을 얻으면이 호스트 이름을 IP로 확인하기 위해 다른 쿼리를 수행 한 다음이 초기 IP에 대해이 새로운 IP를 요청해야 facebook.com합니다. 비효율적이지 않습니까?

이 문제를 설명하는 RFC의 일부 단락을 가리키는 답변에 관심이 있습니다.


"이 문제를 설명합니다." 어느 것? 하나의 추가 쿼리를 의미합니까?
— ALex_hha

네 @ALex_hha 추가 쿼리를 의미합니다
— Pawelmhm

답변:


17

문제의 해결책은 접착제 레코드 란 무엇입니까?에 설명 된 DNS 접착제 레코드입니다 . .

RFC 1035 섹션 3.3.11 상태

"... 클래스는 일반적으로 강력한 힌트이지만 호스트와 통신하는 데 사용해야하는 프로토콜 제품군을 나타내지 않을 수 있습니다."

IP 주소를 반환하는 것은 호스트에 연락 할 수있는 방법을 알려주는 것이며 RFC에 반하는 것입니다.


고마워 Jason 덕분에 NS 레코드에 IP가 포함되어 있으면 프로토콜 패밀리를 나타내며 RFC는이를 금지합니다. 맞습니까? dns 쿼리를 수행 할 때 클라이언트가 다른 프로토콜 제품군을 사용할 수 있다는 의미입니까? UDP / TCP 만 사용할 수 있다고 생각 했습니까?
— Pawelmhm

5
프로토콜 제품군은 IPv4, IPv6을 나타냅니다
— sendmoreinfo

질문이 중복 된 것으로 판명되면 속임수로 마감하기 위해 투표 할 수 없으므로 질문을 신고해야합니다.
— user9517은 GoFundMonica

3
나는 RFC가 금지의 의미가 아니라 "하지 않을 수도있다"는 의미에서 "하지 않을 수도있다"고 생각한다. (이것은 모호성을 줄이기 위해 이러한 종류의 언어를 표준화 한 RFC2119 이전입니다.)
— David

37

Jason은 위에서 설명한 문제를 해결하는 DNS 메커니즘을 제공했지만 여전히 이러한 방식으로 작업이 수행 되는 이유를 살펴 보지 않았습니다 .

내가 소유 example.com하고 있다고 가정 하고 웹 사이트 컨텐츠 중 일부를 Contoso 라는 컨텐츠 전달 회사에 계약했습니다 . 그들의 플랫폼은 sub.example.com어떤 응답이 리턴되는지를 제어 할 수 있도록 네임 서버 에 위임 할 것을 요구합니다 .

; SOA and MX omitted from this example
$ORIGIN example.com.

@           IN      NS            ns1
@           IN      NS            ns2

; delegate sub.example.com to Contoso's nameservers
sub         IN      NS            ns1.cdn.contoso.com.
sub         IN      NS            ns2.cdn.contoso.com.

; this is ours, not Contoso's
www         IN      A             198.51.100.1

앞서 언급했듯이 Contoso 이름 서버의 IP 주소는 지정하지 않았습니다. 우리 서버가 아는 것은 인터넷에 "우리는 관리하지 않고 sub.example.com대신 Contoso에 문의하십시오 "라고 알리는 것입니다 . 다음과 같은 이유로 매우 중요합니다.

  • 우리는 Contoso.com을 소유하지 않습니다.
  • Contoso가 이름 서버 IP 변경을 모든 고객과 조정하는 것을 기대할 수는 없습니다. 이것이 바로 서버가 해당 IP를 제공하는 경우 발생해야 할 일입니다.

여태까지는 그런대로 잘됐다. 1 년이 지났고 우리에게 알려지지 않은 Contoso는 CDN 네임 서버의 IP 주소를 변경하고 있습니다. DNS가가하는 방식으로 작동하기 때문에,이해야 할 업데이트입니다 A그들이 돌아가 기록 ns1.cdn과 ns2.cdn.contoso.com..

이 중요한 시점에 우리에게 가져다 : 제이슨에 의해 기술 된 접착제의 기록은 다음과 같은 DNS에 "닭이 먼저 냐 달걀이 먼저 냐"시나리오를 처리 할 수있는 google.com자신의 네임 서버는이 세상을 이야기 ns1.google.com하고 ns2.google.com. 다음 과 같은 문제를 해결하기 위해 소유하지 않은 인프라를 가리키는 글루 레코드를 작성 해서는 안됩니다 .

@           IN      NS            ns1
@           IN      NS            ns2

; delegate sub.example.com to ns1 and ns2.sub.example.com
sub         IN      NS            ns1.sub
sub         IN      NS            ns2.sub

; provide the IP addresses of ns1 and ns2 so that nameservers
; on the internet can find them.
;
; these IP addresses are owned by Contoso, not us, and they must
; coordinate changes to these IPs with us
ns1.sub     IN       A            203.0.113.10
ns1.sub     IN       A            203.1.113.10

이것은 닭과 달걀 시나리오를 피할뿐만 아니라 Contoso가 그러한 네임 서버의 모든 IP 변경 을 우리와 조정하도록해야 합니다. 이것은 매우 위험하고 바람직하지 않습니다.


아, 이름 서버가 자체 호스팅되지 않은 경우에는 의미가 있습니다.
— Jason Martin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.