소개
DNSAgent는 .NET Framework 기반의 Windows용 DNS 에이전트로, hosts 파일을 대체하는 강력한 도구입니다. 정규 표현식을 사용한 도메인 매칭, IPv4/IPv6 지원, 비표준 포트 청취, DNSPod HttpDNS 프로토콜 연동, 로컬 캐시, 소스 IP 화이트리스트 필터링 등을 제공합니다. stackia에서 개발 및 유지보수했으며, Chocolatey 패키지 형태로 배포됩니다. 시스템 DNS를 127.0.0.1로 변경하여 로컬 DNS 프록시로 작동하도록 설계되었습니다.
상세정보
정규 표현식 기반 도메인 매칭
도메인 이름에 정규 표현식을 적용하여 복잡한 매칭 패턴을 정의할 수 있습니다. 예를 들어 특정 서브도메인이나 여러 도메인 그룹을 하나의 규칙으로 처리할 수 있습니다.
IPv4 및 IPv6 지원
A 레코드와 AAAA 레코드 쿼리를 모두 처리하며, IPv6 주소는 클라이언트가 AAAA 레코드를 요청할 때만 반환됩니다.
비표준 포트 청취
기본 포트 53 외에도 사용자 지정 포트에서 DNS 서비스를 실행할 수 있습니다. ListenOn 설정을 통해 IPv4 및 IPv6 주소에 특정 포트를 할당할 수 있습니다.
DNSPod HttpDNS 프로토콜 지원
UseHttpQuery 옵션을 활성화하면 DNSPod의 HttpDNS 프로토콜을 사용하여 A 레코드를 조회할 수 있습니다. 이 프로토콜은 IPv6를 지원하지 않습니다.
즉시 응답 또는 커스텀 네임서버로 리다이렉트
패턴이 일치할 경우 즉시 A/AAAA 주소를 반환하거나, 지정된 커스텀 네임서버로 쿼리를 리다이렉트할 수 있습니다. 리다이렉트 시 압축 포인트 변형을 적용하여 특정 네트워크 환경에서 MITM 공격을 우회할 수 있습니다.
도메인 간 리다이렉트 및 그룹 참조
하나의 도메인을 다른 도메인 주소로 매핑할 수 있으며, 정규 표현식 그룹을 {0}, {1} 등과 같은 구문으로 Address 필드에 삽입하여 동적으로 사용할 수 있습니다.
로컬 캐시 및 TTL 설정
DNS 응답을 로컬에 캐시하여 성능을 향상시킬 수 있습니다. CacheAge를 통해 캐시 유효 시간을 설정하거나, 0으로 설정하여 원본 응답의 TTL을 따를 수 있습니다. CacheResponse를 false로 설정하면 캐시를 비활성화할 수 있습니다.
소스 IP 화이트리스트 필터링
NetworkWhitelist 설정을 통해 특정 IP 범위에서의 요청만 허용할 수 있습니다. CIDR 표기법을 사용하며, 빈 배열([])은 모든 요청을 차단하고, null은 필터링을 비활성화합니다.
다운로드·설치 방법
DNSAgent는 Chocolatey를 통해 설치할 수 있습니다. 공식 저장소에서 최신 릴리스 zip 파일을 다운로드받아 압축을 해제한 후 사용할 수 있습니다. 다운로드 페이지는 GitHub releases 섹션에서 확인할 수 있습니다.
기본 사용법/명령어
설치 후 다음 단계를 따라 DNSAgent를 실행하고 시스템 DNS를 설정합니다.
- options.cfg 파일을 열어 HideOnStart, ListenOn, DefaultNameServer 등의 옵션을 필요에 따라 조정합니다.
- rules.cfg 파일을 편집하여 도메인 매칭 패턴과 corresponding 동작(주소 반환 또는 네임서버 리다이렉트)을 정의합니다.
- DNSAgent.exe를 실행합니다.
- 시스템의 DNS 설정을 127.0.0.1로 변경하여 모든 DNS 쿼리가 로컬 DNSAgent로 라우팅되도록 합니다.
- 구성을 변경한 후에는 Ctrl + R을 눌러 설정을 다시 로드하고 캐시를 초기화할 수 있습니다(재시작 불필요).
Windows 서비스로 설치하려면 ‘Install as Service.bat’를 실행하고, 제거하려면 ‘Uninstall Service.bat’를 사용합니다.
이런 경우에 유용합니다
개발자나 네트워크 관리자가 로컬 도메인 테스트, 광고 차단, 내부 서비스 매핑, 또는 특정 도메인의 DNS 응답을 커스터마이징해야 할 때 유용합니다. 예를 들어 로컬 개발 서버에 mydomain.com을 가리키거나, 특정 추적 도메인을 로컬 주소로 리다이렉트하여 프라이버시를 강화할 수 있습니다.
지원 환경·시스템 요구사항
Windows 운영체제에서 .NET Framework 4.5 이상이 설치되어 있어야 실행됩니다. Windows XP는 지원하지 않습니다. IPv6 기능을 사용하려면 시스템에서 IPv6가 활성화되어 있어야 하며, AAAA 레코드 쿼리가 있을 때만 IPv6 주소가 반환됩니다.
최신 버전·업데이트
현재 버전은 1.6.5781.1이며, 공식 GitHub 저장소의 releases 페이지에서 최신 릴리스를 확인할 수 있습니다. readme에 따르면 이 프로젝트는 더 이상 적극적으로 유지보수되지 않으며, CoreDNS와 같은 현대적인 DNS 솔루션 사용을 권장합니다.
제한 사항·확인 사항
Windows XP에서는 .NET Framework 4.5 이상을 지원하지 않아 실행할 수 없습니다. DNSPod HttpDNS 프로토콜은 IPv6를 지원하지 않으므로, UseHttpQuery를 활성화한 상태에서는 IPv6 이름 조회가 불가능합니다. NetworkWhitelist를 빈 배열([])으로 설정하면 모든 클라이언트의 요청이 차단되므로 주의해야 합니다.
시스템 요구사항
.NET Framework 4.5+ (Windows XP 미지원)


