전송되는 DNS 쿼리를 다시 확인했을 때 dig
RFC 상태에 이상한 점이 있음을 발견했습니다. DNS 프로토콜의 다양한 변형에 대해서는 모르지만 RFC 1035에서
Z
: 향후 사용을 위해 예약되어 있습니다. 모든 쿼리와 응답에서 0이어야 합니다.
이는 디버그 모드의 Eclipse IDE에서 내보낸 수신된 DNS 쿼리의 메모리 내 스냅샷입니다.
00000000 F5 F4 01 20 00 01 00 00 00 00 00 01 03 77 77 77 06 67 6F 6F 67 6C 65 03 63 6F 6D 00 00 01 00 01 00 00 29 10 00 00 00 00 ... .........www.google.com.......).....
00000028 00 00 0C 00 0A 00 08 1F 0A 12 91 67 67 B0 B9 ...........gg..
해당 비트를 DNS 필드에 매핑(RFC 1035에서)
F5F4
-> DNS 트랜잭션 ID.
01
-> QR, 연산코드, AA, TC, RD
20
-> 00100000 => RA
-> 0, Z
-> 010
Z
예 또는 아니오 0입니다! dig
DNS 변형이 존재하는 경우 다른 DNS 변형이 사용됩니까? 아니면 문제로 간주되어야 합니까 dig
?
답변1
DNS는 다양한 변형으로 존재하지 않지만 이 주제에 대한 RFC 1035는 RFC2535 "DNS 보안 확장"에 의해 개정되었습니다.
섹션 6.1에서는 메시지 형식을 보여줍니다.
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QDCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ANCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NSCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
보시다시피 기존 3자리 Z 필드가 이제 Z, AD, CD로 구분됩니다.
따라서 0x20
=는 0b00100000
다음과 같이 분할됩니다.
RA = 0
: 이 메시지에 응답하는 서버는 재귀를 수행할 수 없습니다.Z = 0
: 예상대로 0이어야 합니다.AD = 1
: "응답의 답변 및 권한 부분에 포함된 모든 데이터는 해당 서버의 정책에 따라 서버에서 인증되었습니다."CD = 0
:check가 비활성화되지 않았습니다(응답이 아닌 쿼리에서 "쿼리를 보내는 파서가 보류 중인(인증되지 않은) 데이터를 허용할 수 있습니다."로 정의됨을 의미합니다.)RCODE = 0
: 오류 없음
DNS 사양은 복잡하고 종종 모호하며 많은 문서에 분산되어 있습니다. 이 최근 작업은 길을 찾는 데 도움이 될 수 있습니다. https://powerdns.org/hello-dns/