Dig 명령: 출력 정렬이 보장됩니까?

Dig 명령: 출력 정렬이 보장됩니까?

IP를 찾으려고 한다고 가정해 보겠습니다 mail.yahoo.com.gmail.commail.google.com

내가 실행하는 경우:

dig @8.8.8.8 +nocomments +noquestion \
    +noauthority +noadditional +nostats +nocmd \
    gmail.com mail.yahoo.com mail.google.com

나는 얻다:

gmail.com.                       299    IN  A       173.194.123.21
gmail.com.                       299    IN  A       173.194.123.22
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169
mail.google.com.                   0    IN  CNAME   googlemail.l.google.com.
googlemail.l.google.com.         243    IN  A       173.194.123.21
googlemail.l.google.com.         243    IN  A       173.194.123.22

CNAME레코드가 표시되면 A이에 해당하는 레코드가 CNAME다른 시스템에 해당하는 레코드나 A다른 호스트 이름에 대한 레코드 앞에 나타나지 않도록 할 수 있나요?

예를 들어 다음 사항에 집중하겠습니다 mail.yahoo.com(해당 IP만 mail.yahoo.com확인하고 싶습니다).

출력은 다음과 같습니다.

mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169

내가 찾고 있는 호스트 이름()은 mail.yahoo.com첫 번째 항목의 첫 번째 열입니다. 그런 다음에 CNAMES는 제가 별로 신경 쓰지 않는 것들이 많이 있고 , 그 다음으로는 A(제가 신경 쓰는) 실제 IP가 포함된 기록들이 있습니다.

CNAMES녹화가 오작동 할 수 있나요 A? 그것은 다음과 같습니다:

ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net. #(!)BAD
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net. #(!)BAD
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169

A또는 더 나쁜 경우(실제 기록은 상단에 있음):

any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.

또는 더 나쁠 수도 있습니다( dig포스트 상단에 표시된 다중 해상도 실행에서).

ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169
mail.google.com.                   0    IN  CNAME   googlemail.l.google.com.  # This one I want
gmail.com.                       299    IN  A       173.194.123.21            # This one I want
gmail.com.                       299    IN  A       173.194.123.22            # This one I want
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.          # This one I want
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
googlemail.l.google.com.         243    IN  A       173.194.123.21
googlemail.l.google.com.         243    IN  A       173.194.123.22

답변1

dig결과는 재정렬되지 않으며 이름 서버가 결과를 반환하는 순서대로 표시됩니다. 이름 서버는 일반적으로 특정 레코드가 쿼리될 때마다(간단한 형태의 로드 밸런싱을 달성하기 위해) 결과를 섞습니다(무작위 또는 라운드 로빈). 하지만 이 설정을 재정의하는 서버 구성 옵션이 있을 수 있습니다. BIND의 경우 관련 옵션은 다음과 같습니다.rrset-order그리고sortlist.

내가 아는 한, 한 번의 호출로 여러 쿼리를 실행하면 각 이름에 대해 순차적으로 개별적으로 실행하는 dig것과 같습니다 . dig코드가 명령줄에 나타나는 순서대로 반복되지 않는 이유를 상상할 수 없습니다.

서버가 CNAME최종 답변을 얻기 위해 기록을 따라야 하는 경우DNS 사양각 별칭이 처리 순서대로 응답에 추가됨을 나타냅니다. 따라서 입력한 원래 이름이 첫 번째 순위에 오르고 최종 결과는 마지막에 순위가 매겨지는 것을 보장할 수 있습니다.

관련 정보