소개
mosdns는 Irine Sistiana가 개발한 DNS 포워더 소프트웨어로, 사용자가 자신의 DNS 처리 로직을 필요에 맞게 구성할 수 있도록 설계된 도구입니다. 사용자는 다양한 매칭 규칙과 처리 기능을 조합하여 DNS 요청을 유연하게 제어할 수 있습니다.
상세정보
매처(Matcher)
- 요청 패턴 매칭: 도메인, 타입, 출발지 IP 등을 기준으로 매칭합니다.
- 응답 패턴 매칭: 응답 IP, CNAME 등을 기준으로 매칭합니다.
전송 프로토콜
- UDP, TCP를 지원합니다.
- DoT, DoH (H3 포함), DoQ의 클라이언트와 서버를 모두 지원합니다.
응답 처리 기능
- 응답을 캐시에 저장합니다 (ECS 미지원).
- 도메인이 듀얼 스택인지 자동으로 판단하여 IPv4/IPv6 요청을 차단합니다.
- 요청에 사전 설정된 ECS를 부착하거나 응답의 TTL 값을 수정합니다.
- 특정 도메인에 대해 IP를 지정(hosts)하거나, 특정 IP로 응답을 반환(blackhole)할 수 있습니다.
- 요청된 도메인을 다른 도메인으로 대체(redirect)하거나, 임의의 레코드를 포함하는 응답을 직접 구성(arbitrary)할 수 있습니다.
- 역조회(reverse_lookup) 및 동적 라우팅(ipset, nftables) 기능을 지원합니다.
설치·시작·기본 사용
Windows 환경에서는 winget 패키지 관리 도구를 통해 설치할 수 있습니다.
- 설치 명령:
winget install --id IrineSistiana.mosdns --exact
설치 후 시스템 DNS 설정을 mosdns의 수신 주소로 지정하여 사용합니다. 자세한 설정 방법과 튜토리얼은 mosdns 공식 wiki에서 제공되며, 사전 컴파일된 바이너리는 GitHub 릴리스 페이지에서 확인할 수 있습니다.
Docker 이미지는 Docker Hub에서 제공되며, 설정 파일(config.yaml)과 리소스 파일을 준비한 후 다음 명령으로 실행할 수 있습니다.
- Docker 실행 예시:
docker run -d --name mosdns -p 5454:53/udp -p 5454:53/tcp -v /etc/mosdns:/etc/mosdns irinesistiana/mosdns:latest
지원 환경·요구사항
- Docker 이미지는 linux/amd64, linux/arm/v7, linux/arm64, linux/ppc64le 플랫폼을 지원합니다.
- Docker 이미지는 alpine 기반으로, mosdns 바이너리와 TLS 검증용 CA 루트 인증서만 포함되어 있습니다.
버전·업데이트
현재 최신 버전은 5.3.4이며, 업데이트 로그는 GitHub 릴리스 페이지에서 확인할 수 있습니다.
제한·라이선스·확인사항
- mosdns는 GPL-3.0 라이선스로 배포됩니다.
- 캐시된 응답에 ECS는 지원되지 않습니다.
- 동적 라우팅 기능은 ipset과 nftables를 사용하는 환경에서 동작합니다.
시스템 요구사항
Docker 환경에서 사용 시 alpine 기반 이미지로 제공되며, TLS 검증을 위해 루트 인증서가 포함되어 있습니다. 정적 라우팅 기능을 사용하는 경우 시스템에 ipset과 nftables가 설치되어 있어야 합니다.


