DNS의 정의
사용자에게 친숙한 도메인 이름을, IP 주소로 변환하는 시스템을 의미한다.
DNS 서비스
DNS는 Distribute Database를 통해 Name Server가 계층형으로 구현된다. 구체적으로, Root 서버는 13개가 존재하고, 모든 서버는 복제되어야 한다. Top Level Domain (TLD)서버는 실질적으로 가장 상위의 도메인의 역할을 수행한다. 순서는 Root server -> TLD server -> Authoritative Server 순으로 이루어져 있다.
DNS는 서버를 분산 시키는데, 그 이유는 "트래픽의 문제", "가용성(Availability)의 보장", "관리의 용의성" 때문이다.
DNS는 Local 단위에서도 작동할 수 있다. 이것은 web-cache 처럼, Root DNS 서버를 미러링하는 역할을 수행한다. 하지만, 이 과정에서 Spoofing이 발생할 가능성이 있어, DNS의 암호 프로토콜인 DNSSEC을 이용해 Cache에 대한 인증(Authentication)과 메시지의 무결성(Integrity)를 제공하게 된다.
DNS에는 다양한 쿼리가 존재한다.
먼저 Iterative Query는 클라이언트가 직접 여러 DNS 서버에 순차적으로 질의하는 방식이다. 그래서 Local DNS Server가 해당 도메인의 주소를 알아낼 때까지 반복적으로 다른 DNS서버에 메시지를 보내는 쿼리다.
"Recursive Query"는 클라이언트가 DNS 서버에 요청하면, 해당 서버가 최종 답을 찾을 때까지 다른 서버들에 대신 질의하여 결과를 반환하는 방식이다. 다만, 이 쿼리는 다소 복잡하고 메모리 소모가 많다.
DNS에는 Caching이 존재하는데, Name Server가 주소를 알아내면 Cache가 매핑되는 것을 의미한다.
DNS 보안/공격
대표적인 DNS에 대한 공격 사례는 DNS Spoofing이 존재한다. 이는, 실제 DNS 서버보다 빨리 공격 대상에게 DNS response 패킷을 보내어 공격 대상이 잘못된 IP 주소로 웹 접속을 하도록 유도하는 공격이다. 특정 URL에 거짓 IP 정보를 계속 브로드캐스팅하여, 해당 패킷을 받은 클라이언트는 잘못된 IP로 들어가게 된다.
구체적인 과정은, 공격자는 로컬에 위치한다. 그 다음, 클라이언트는 먼저 위조된 DNS Response 패킷을 받고, 정상 Response는 무시하게 되는 과정으로 공격이 진행된다. 다만, Switch 환경에서는 ARP Spoofing을 통한 선행작업이 필요하게 된다.
이에 대한 대응책(Countermeasure)로는 host 파일에 URL과 IP주소를 등록하여, DNS Response를 보내지 않게 하는 것이 있다. 하지만, Host 파일에 모든 도메인과 IP주소를 등록하는 것은 무리가 있어, 완전한 방어는 힘들다는 단점이 있다. 이외에도, DNSSEC, DNS over HTTPS(DoH), DNS over TLS(DoT) 같은 방법들이 존재한다.
참고자료
- https://www.ibm.com/kr-ko/think/topics/dns
- 컴퓨터 네트워킹 하향식 접근
'웹프로그래밍 > 부트캠프 - Codeit' 카테고리의 다른 글
[3주차] 위클리 페이퍼 - var, let, const 를 서로 비교해 설명해 주세요. (0) | 2025.07.15 |
---|---|
[3주차] 위클리 페이퍼 - 브라우저가 어떻게 동작하는지 설명해 주세요. (2) | 2025.07.08 |
[2주차] 위클리 페이퍼 - CSS의 Cascading에 대해 설명해주세요. (2) | 2025.07.04 |
[2주차] 위클리 페이퍼 - 시맨틱 태그를 사용하면 좋은 점을 설명해 주세요. (2) | 2025.07.03 |
코드잇 스프린트 풀스택 선발 후기 (4) | 2025.05.28 |