반응형

 

필자는 Tailscale, AdGuard, NextDNS를 모두 사용한다. 이전까진 웹 광고 차단과 시스템 DNS를 모두 AdGuard로 처리했지만, AdGuard DNS는 가장 가까운 서버가 일본에 있어서 그런지 종종 지연이 발생하곤 했다. 그래서 시스템 DNS는 응답 속도가 빠른 NextDNS에 맡기고, AdGuard는 브라우저 수준의 광고 차단 용도로만 사용하기로 했다

 

AdGuard만 쓰는 환경이라면 설정은 간단하다. AdGuard의 DNS 보호 기능을 끄고, NextDNS 프로파일(또는 앱)을 통해 시스템 DNS를 NextDNS로 지정하면 된다. 하지만 여기에 Tailscale을 실행하는 순간 DNS 충돌로 인해 NextDNS가 적용되지 않는 문제가 발생한다.

 

이 문제는 아래 두 가지 방법으로 해결할 수 있다.

 

① Tailscale 내부 설정 활용

Tailscale 어드민 콘솔 > DNS 탭 > Global Nameservers에 NextDNS를 등록하고, Override local DNS 옵션을 활성화한다. 그럼 Tailscale이 실행 중일 동안 DNS 처리는 NextDNS가 담당하게 된다.

 

② AdGuard DNS 포워딩 활용 (Upstream DNS)

AdGuard의 DNS 보호를 켜고, NextDNS 주소를 커스텀 서버로 등록하는 방식. 이렇게 하면 AdGuard가 1차적으로 트래픽을 필터링하고, 실제 도메인 질의(Query)는 NextDNS가 처리한다.

 

①번 방법은 Tailscale을 종료하면 NextDNS를 적용할 수 없는 단점이 있다. Tailscale 작동 여부와 관계없이 항상 NextDNS를 활성화해 두기 위해 ②번 방식을 선택했다.

 

 

설정 방법


① 컴퓨터에 설치된 NextDNS 앱 혹은 프로파일 삭제. macOS 시스템 설정 > 네트워크 > VPN 및 필터 > 필터 및 프록시 목록에 NextDNS가 있다면 삭제해 준다.

 

② NextDNS 설정(Setup) 페이지에서 본인의 엔드포인트 ID 확인

 

③ AdGuard 설정 > DNS 탭 > [DNS 보호] 체크 후 + 버튼 클릭

 

④ 서버 이름은 NextDNS로 입력하고, 서버 주소는 아래 URL 규칙에 맞춰 DoQ, DoH 주소를 추가한다. 기기 이름에 띄어쓰기를 넣고 싶다면 quic은 --를, https는 %20을 사용하면 된다.

 

🔍 DoQ는 QUIC 프로토콜(UDP 기반)을 사용하여 속도/보안이 뛰어나지만, 853 포트가 차단된 네트워크에선 작동하지 않는다. DoH는 일반 웹 트래픽(HTTPS)과 동일한 443 포트를 사용하여 엄격한 방화벽 환경에서도 안정적으로 연결할 수 있다.

 

🔍 DoQ(quic://…), DoH(https://…) 주소를 함께 등록해 두면, 두 주소의 응답 속도를 지속적으로 측정하여 더 빠르고 안정적인 프로토콜을 우선 사용한다. 평소엔 속도가 빠른 DoQ가 주로 선택되지만, 853 포트가 막히거나 응답이 불안정해지면 DoH 비중이 자연스럽게 높아질 수 있다. 참고로 AdGuard 고급 설정에서 병렬 업스트림 쿼리 옵션을 켜면, 모든 엔드포인트에 쿼리를 보낸 후 먼저 도착한 응답을 채택하도록 할 수 있다.

 

⑤ DNS 필터는 NextDNS의 Privacy 탭 > Blocklists에서 관리하므로, AdGuard의 DNS > 필터 탭에 추가해 둔 모든 항목은 체크해제(혹은 삭제) 한다. 차단·허용 목록 역시 AdGuard에 등록해 둔 규칙이 있다면 모두 제거하고 NextDNS로 옮겨준다.

 

 

접속 테스트


NextDNS 테스트 사이트에 접속해서 status 값이 ok, protocol 값이 DOQ 혹은 DOH로 나오면 설정이 정상적으로 완료된 것이다. DoQ·DoH 서버 주소를 모두 등록했으므로 네트워크 환경에 따라 적절한 프로토콜이 선택된다. deviceName은 앞서 서버 주소에 입력한 기기이름이 표시된다. 이 값이 정확해야 NextDNS 로그 페이지에서 어떤 기기의 트래픽인지 구분할 수 있다.

{
  "status": "ok",
  "protocol": "DOQ",
  "profile": "...",
  "client": "...",
  "srcIP": "...",
  "destIP": "...",
  "anycast": false,
  "server": "vultr-sel-1",
  "clientName": "unknown-doq",
  "deviceName": "Macbook",
  "deviceID": "..."
}

 

NextDNS > Logs 페이지에서 좌측 드롭다운을 클릭하면 설정해 둔 기기 이름이 표시된다.

 

이제 Tailscale 실행 여부와 관계없이 시스템 DNS는 항상 NextDNS가 처리하고, AdGuard는 브라우저 수준의 광고 차단에만 집중하는 구조가 완성된다. 역할이 명확히 분리되어 있어 설정 충돌 없이 세 도구를 안정적으로 함께 운용할 수 있다. 

반응형