GTM과 DNS

Extension DNS(EDNS0)란

hippo 데브옵스 2023. 9. 16. 03:38
  • EDNS(Extension Mechanisms for DNS)는 인터넷 엔지니어링 커뮤니티에서 프로토콜의 기능을 향상시키기에는 너무 제한적이라고 판단한 크기 제한이 있는 Domain Name System(DNS) 프로토콜의 여러 매개변수 크기를 확장하기 위한 개발
  • 1999년 인터넷 엔지니어링 태스크 포스에 의해 EDNS0이라고도 알려진 RFC 2671로 발표
  • 2013년에 RFC 6891에 의해 약어가 EDNS(0)으로 약간 변경되어 업데이트
  • RFC 참고 자료 : https://www.ietf.org/rfc/rfc2671.txt

 

 

1. EDNS Motivation

  • Domain Name System(DNS)은 1980년대 초에 처음 개발 → DNS 초기 개발된 설정 제한이 새로운 기능을 추가하는 데 큰 장애물
  • 기본 DNS 프로토콜에서는 사용할 수 있는 여러 플래그 필드(several flags fields), 리턴 코드(return codes) 및 레이블 유형(label types)의 크기 제한으로 인해 일부 바람직한 기능을 지원하지 못함
  • UDP로 전송되는 DNS 메시지는 인터넷 프로토콜(IP) 및 전송 계층 헤더(transport layer headers)를 고려하지 않고 512바이트로 제한
  • TCP(전송 제어 프로토콜)를 사용하는 가상 회로 전송(virtual circuit transport)에 의존하면 오버헤드가 크게 증가
  • 1999년에 폴 빅시는 새로운 플래그(new flags)와 응답 코드(response codes)를 허용하고 이전 구현과 역호환되는 프레임워크에서 더 긴 응답을 지원하기 위해 DNS 확장을 제안

 

 

2. EDNS 매키니즘(Mechanism)

  • DNS 헤더에 새로운 플래그를 추가할 수 없기 때문에 EDNS는 DNS 메시지의 "추가 데이터(additional data)" 섹션에 포함된 pseudo-Resource Records ("pseudo-RR"s)의 형태로 DNS 메시지에 정보를 추가
  • 섹션은 요청과 응답 모두에 존재
  • EDNS는 단일 의사 RR 유형(single pseudo-RR type)을 도입 OPT.
  • pseudo-RRs인 OPT 유형 RR(OPT type RRs)은 어떤 영역 파일에도 나타나지 않으며, DNS 참여자(participants)가 조작한 메시지에만 존재

 

  • 이전 DNS 응답자(responders)는 요청에 알 수 없는 OPT 유형의 RR(OPT type RRs)을 무시하고 최신 DNS 응답자(responders)는 요청에 OPT가 없는 한 응답에 OPT를 포함하지 않음
  • 요청에 OPT가 있다면 최신 요청자(requester)가 응답에서 OPT로 무엇을 해야 하는지 알고 있다는 것을 의미

 

  • OPT 의사 레코드(pseudo-record)는 최대 16개의 플래그(flags)를 위한 공간을 제공하며 응답 코드(response code)를 위한 공간을 확장함
  • UDP 패킷의 전체 크기(The overall size of the UDP packet)와 버전 번호(현재 0)가 OPT 레코드에 포함
  • 가변 길이 데이터 필드(variable length data field)를 사용하면 향후 버전의 프로토콜에 추가 정보를 등록할 수 있음
  • DNS 프로토콜은 DNS 패킷의 처음 두 비트로 정의되는 두 가지 레이블 유형 제공(RFC 1035)→ 00(standard label)과 11(compressed label)
  • EDNS는 확장 레이블로 레이블 유형 01을 도입
  • 첫 번째 바이트의 하위 6비트는 최대 63개의 새로운 확장 레이블을 정의하는 데 사용될 수 있음

 

2.1. EDNS 사용하지 않는 경우(Without EDNS0 Client Subnet Option)

 

2.2. EDNS 사용하는 경우(With EDNS0 Client Subnet Option)

 

3. EDNS Example

  • dig 명령으로 표시되는 OPT 의사 레코드의 예
    • EDNS: version: 0 → EDNS0을 완전히 준수함을 표시
    • flags: do → DNSSEC OK가 설정되었음을 표시
    • flags: do → DNSSEC를 완전히 준수함을 표시
      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags: do; udp: 4096

 

 

4. EDNS Applications

  • EDNS는 DNSSEC(DNS 보안 확장;DNS Security Extensions)를 구현하는 데 필수
  • EDNS는 resolvers에서 name servers로 클라이언트의 지리적 위치에 대한 일반 정보를 EDNS Client Subnet(ECS) 옵션의 형태로 전송하는 데 사용
  • EDNS를 사용하여 DNS message에 얼마나 많은 패딩이 있어야 하는지 설정하고, TCP 연결을 얼마나 오래 유지해야 하는지 표시하는 제안

 

 

5. EDNS Issues

  • 방화벽은 최대 DNS 메시지 길이를 512바이트로 가정하고 더 긴 DNS 패킷을 차단하기 때문에 실제로 방화벽을 통과하는 EDNS를 사용할 때 어려움이 발생할 수 있음
  • EDNS는 상대적으로 작은 요청 패킷에 비해 매우 큰 응답 패킷을 용이하게 하기 때문에 EDNS의 도입으로 반사 서비스 거부 공격(reflected denial-of-service attack)의 일종인 DNS 증폭 공격(DNS amplification attack)이 가능해졌음
  • IETF DNS 확장 작업 그룹(dnsext)은 EDNS0의 개선 작업을 마쳤으며, 이는 RFC 6891로 게시

 

참고 자료