참고한 것들
소개
- DNS 의 확장팩 기능 중 하나이다.
- 기본적으로 plain text 를 기반으로 하는 DNS 생태계에서 보안을 위해 암호화를 하는 DNS-over 이 제시되었는데,
- 암호화를 해도 패킷의 길이를 보고 domain 을 어느정도 때려맞추는 것이 가능하다고 알려지자, DNS packet 의 길이를 일정하게 맞춰 encryption 했을때 때려맞출 수 없게 해주는 기능이다.
Packet structure
- EDNS0 Padding option 은
OPT
타입의 resource record 로 DNS packet 의 Additional 필드 에 들어간다. - 이놈의
OPT
RR 은 다음과 같이 생겼다.
0 8 16
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| OPTION-CODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| OPTION-LENGTH |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| (PADDING) ... (PADDING) ... /
+- - - - - - - - - - - - - - - -
- 필드 설명
OPTION-CODE
는OPT
RR 내에서의 타입을 명시하는 곳이다. EDNS0 Padding 의 경우에는 12 (0x000C
) 이다.OPTION-LENGTH
는 뒤의PADDING
필드의 길이이다.PADDING
필드는0x00
으로 채워진 패딩이다.
- 예시로,
www.google.com
을 물어보는 패킷을 총 사이즈 512byte 가 되게 하기 위해 이 패딩을 붙인다고 하면- Header: 16byte
- Question: 20byte
- Additional: 476byte
OPTION-CODE
: Padding (0x000C
) -> 2byteOPTION-LENGTH
: 패딩길이 (0x01D8
) -> 2bytePADDING
: 472byte 길이의 패딩이 들어감