Rust로 만든 DNS 리졸버, 개발 환경을 혁신하다!

by DD
2개월 전
조회수 14

Rust로 개발된 DNS 리졸버는 .numa 도메인, 자동 TLS 인증서, WebSocket 프록시 등 다양한 기능을 제공함

광고 차단(Ad Blocking), LAN 서비스 디스커버리(LAN Service Discovery), DNSSEC 검증(DNSSEC Validation)을 지원하여 보안 및 편의성을 강화함

mkcert, nginx, /etc/hosts 설정 없이 로컬 개발 환경을 구축할 수 있어 개발 생산성을 향상시킴

사용자 인터페이스(UI) 디자인에 대한 의견과 Docker/컨테이너 네트워킹 지원에 대한 기능 요청이 존재함

개발 편의성을 위한 핵심 기능

Numa는 자동 TLS 인증서(Auto-generated TLS certs) 발급, .numa 도메인 지원, WebSocket 프록시(WebSocket Passthrough)를 통해 개발 환경 설정을 간소화한다. 특히, 기존의 mkcert, nginx, /etc/hosts 설정 없이도 HTTPS 연결을 지원하여 개발자 생산성을 높인다. 이러한 기능은 로컬 서비스 접근성을 향상시키고, 복잡한 설정 과정을 줄여 개발에 집중할 수 있도록 돕는다.

성능 및 아키텍처 분석

Numa는 단일 바이너리(Single Binary)로 배포되며, RFC 1035 와이어 프로토콜(RFC 1035 wire protocol)을 직접 파싱하여 구현되었다. 캐싱(Caching) 및 광고 차단(Ad Blocking) 기능을 기본으로 제공하며, DNSSEC 검증(DNSSEC Validation)을 통해 보안성을 강화한다. 벤치마크 결과에 따르면, 캐싱된 요청은 691ns, 재귀적 쿼리는 평균 237ms의 응답 시간을 보이며, 고성능을 제공한다.

광고 차단 및 보안 기능

Numa는 385,000개 이상의 도메인을 차단하는 광고 차단 기능을 제공하여, 사용자의 개인 정보 보호를 돕는다. 또한, DNSSEC 검증(DNSSEC Validation)을 통해 DNS 쿼리의 무결성을 보장한다. 재귀적 DNS 확인(Recursive Resolution) 옵션을 통해 외부 의존성을 최소화하고, 데이터 미저장 정책(Zero-Retention Policy)을 준수하여 사용자의 프라이버시를 보호한다.

커뮤니티 피드백 및 개선 방향

커뮤니티에서는 UI 디자인에 대한 의견과 함께, Docker/컨테이너 네트워킹 지원libnuma 라이브러리 제공에 대한 요청이 있었다. 특히, Docker Compose 환경에서 서비스 이름 해결을 지원하는 기능은 개발 팀의 생산성을 크게 향상시킬 수 있을 것으로 기대된다. 또한, 다중 사용자 정의 차단 목록(Multiple User Defined Blocklists) 지원에 대한 요구도 존재한다.

Show HN: I built a DNS resolver from scratch in Rust – no DNS libraries