이 글은 Shadowrocket에 기존 구성을 가져와 사용하면서 도메인 이름 해석 설정을 조정하려는 사용자를 위한 안내입니다. 먼저 DNS 해석과 트래픽의 출구 처리를 구분하고, 시스템 DNS·사용자 지정 DNS·DoH의 사용 조건을 살펴봅니다. 그런 다음 Config를 백업하고 dns-server를 수정한 뒤, 같은 네트워크에서 한 번에 한 항목씩 테스트해 변경 사항을 유지할지 판단합니다.
DNS 해석과 규칙 기반 트래픽 분기는 어떻게 다를까요?
DNS는 도메인 이름을 IP 주소 등의 레코드로 변환합니다. 웹사이트를 열 때 DNS 해석은 연결 과정의 일부일 뿐입니다. 주소를 확인한 뒤에도 경로 선택, 전송 연결, TLS 핸드셰이크, 웹페이지 리소스 로드가 이어집니다. 따라서 “DNS를 바꾸니 접속된다”는 문제 해결의 단서가 될 수 있지만, “웹페이지가 열리지 않는다”는 이유만으로 DNS 장애라고 단정할 수는 없습니다.
Shadowrocket의 dns-server는 DNS 질의를 보낼 상위 서버를 지정하고, 규칙의 DIRECT와 PROXY는 일치하는 트래픽의 처리 방식을 지정합니다. 서로 다른 설정입니다. 암호화 DNS를 사용한다고 웹사이트 트래픽이 반드시 프록시를 통하는 것은 아니며, 시스템 DNS를 쓴다고 웹사이트 트래픽이 반드시 직접 연결되는 것도 아닙니다.
위 흐름은 문제를 살펴볼 때 구분해야 할 단계를 나타내며, 모든 규칙이 DNS 해석이 끝날 때까지 기다린다는 뜻은 아닙니다. DOMAIN-SUFFIX는 도메인 접미사로 바로 일치 여부를 판단할 수 있습니다. IP-CIDR와 GEOIP는 IP 주소를 기준으로 매칭하므로 도메인 정보만 있는 경우 DNS 해석이 필요할 수 있습니다. 규칙은 순서대로 평가되며, 마지막의 FINAL은 일치하지 않은 트래픽에 적용됩니다. DNS를 바꿔도 규칙 순서는 자동으로 바뀌지 않습니다.
시스템 DNS·사용자 지정 DNS·DoH의 선택 기준
‘시스템’과 ‘사용자 지정’은 DNS 서버를 어디서 가져오는지를 나타내고, DoH는 질의를 어떤 방식으로 전송하는지를 나타냅니다. 두 분류는 서로 완전히 같은 기준이 아닙니다. DoH 주소를 직접 입력하는 것도 사용자 지정 DNS 서버를 설정하는 방식입니다. 이름만 비교하기보다 네트워크 연결 가능 여부, 내부 도메인 사용 여부, 질의 전송 방식을 함께 고려하세요.
| 설정 방식 | 사용 조건 | 주요 제한 사항 |
|---|---|---|
| 시스템 DNS | 현재 Wi-Fi 또는 셀룰러 네트워크에서 DNS 해석이 정상이며, 해당 네트워크에서 해석되는 내부 도메인에 접속해야 하는 경우 | 네트워크를 바꾸면 DNS 서버도 달라집니다. 실제 동작은 시스템 설정과 네트워크 관리 정책의 영향을 받습니다. |
| 사용자 지정 일반 DNS | DNS 서버를 고정해야 하며, 현재 네트워크에서 해당 IP 주소에 접속할 수 있는 경우 | 일반 DNS는 보통 UDP 53을 사용하며 TCP 53을 사용할 수도 있습니다. 질의 자체는 전송 암호화를 제공하지 않습니다. |
| DNS over HTTPS | 신뢰할 수 있고 연결 가능한 DoH 엔드포인트가 있으며, 클라이언트와 DNS 서버 사이의 질의 전송을 암호화하려는 경우 | HTTPS 연결, 유효한 인증서, 엔드포인트 도메인의 초기 DNS 해석이 필요합니다. DNS 서버는 여전히 질의 내용을 처리합니다. |
요약: 정상 동작하는 기준 설정을 유지한 뒤 DNS 서버를 고정할지 결정하세요
현재 네트워크에서 DNS 해석이 정상이고 내부 도메인에 접속해야 한다면 먼저 시스템 DNS를 유지하세요. DNS 서버를 고정하거나 암호화된 질의 전송이 필요한 경우에만 사용자 지정 DNS 또는 DoH를 따로 테스트하고, 언제든 복구할 수 있도록 기존 설정을 보관하세요.
Config에서 수정하기 전에 현재 설정 확인하기
이 안내에서는 특정 앱 버전의 버튼 위치가 아니라 구성 파일의 [General] 항목을 기준으로 설명합니다. Home에서는 연결 상태와 Global Routing을 확인하고, Config에서는 구성 파일을 관리하며, Settings에서는 앱 설정을 변경합니다. 활성화되지 않은 파일 하나만 수정하면 대개 현재 연결에 사용 중인 설정은 바뀌지 않습니다.
- Home에서 현재 연결 항목과 Global Routing 값을 기록하세요. 규칙 기반으로 테스트하려면
Config모드를 사용하고, 현재 활성화된 구성을 확인하세요. - Config에서 현재 구성을 백업하거나 복사하세요. 기존 DNS 행과 다른 General 설정은 그대로 두어 여러 변수를 동시에 바꾸지 않도록 합니다.
- 파일 편집 기능을 열고
[General]항목을 찾으세요.dns-server가 이미 있다면 해당 행을 수정하세요. 설정을 바꾸려고 같은 이름의 항목을 여러 개 추가하지 마세요. - 저장한 뒤 테스트 파일이 활성화되어 있는지 확인하세요. 이후 연결을 끊었다가 다시 연결해 새 구성이 적용되도록 합니다.
- 비교를 시작하기 전에 Wi-Fi와 셀룰러 중 어떤 네트워크를 사용하는지, 테스트할 도메인, 증상, 복구 방법을 기록하세요.
[General]에서 dns-server를 설정하는 세 가지 방법
아래는 서로 함께 사용할 수 없는 최소 설정 예시 세 가지입니다. 한 번에 하나만 선택해 현재 구성의 해당 설정과 바꾸세요. 짧은 예시를 구성 파일 전체에 덮어쓰면 기존 규칙과 다른 설정이 사라집니다. 기존 구성에 도메인 매핑이나 DNS 관련 항목이 있다면 해당 설정의 영향도 함께 확인하세요.
시스템 DNS 사용
[General]
dns-server = system
system은 시스템에서 제공하는 DNS를 사용한다는 뜻입니다. 비교 테스트의 기준으로 적합하며, 특히 현재 네트워크에서 내부 도메인을 해석해야 할 때 유용합니다. 여기서 ‘시스템’은 특정 DNS 서버 주소 하나를 고정한다는 의미가 아닙니다. Wi-Fi, 셀룰러 네트워크 또는 시스템 네트워크 설정을 바꾸면 DNS 서버도 달라질 수 있습니다.
사용자 지정 일반 DNS 입력
[General]
dns-server = 1.1.1.1
1.1.1.1은 일반 DNS 주소 형식을 보여 주는 예시이며, 모든 네트워크에서 사용을 권장하는 주소는 아닙니다. 신뢰할 수 있고 연결 가능한 DNS 서버 주소를 사용하세요. IP 주소만 입력해도 일반 DNS가 DoH로 바뀌지는 않으며, 질의가 프록시를 통해 전송되는지도 이 정보만으로 판단할 수 없습니다.
DNS over HTTPS 엔드포인트 입력
[General]
dns-server = https://dns.example.com/dns-query
dns.example.com은 예시용으로 예약된 도메인입니다. 위 주소는 문법만 보여 주므로 실제 DNS 해석에 사용할 수 없습니다. 실제로 사용하려면 DNS 서비스가 제공하는 https://, 호스트 이름, 경로를 모두 포함한 완전한 DoH 엔드포인트로 바꾸세요. /dns-query는 흔히 쓰이는 경로지만, 해당 엔드포인트의 안내를 따르세요. 서비스 홈페이지 주소만 입력해서는 안 됩니다.
일반 DNS 확인 항목
- 설정 섹션
- [General]
- 키 이름
- dns-server
- 주소 형식
- DNS 서버 IP 주소
- 일반적으로 사용하는 포트
- UDP / TCP 53
먼저 현재 네트워크에서 해당 주소에 연결할 수 있는지 확인한 뒤 해석 결과를 비교하세요.
DoH 확인 항목
- 설정 섹션
- [General]
- 키 이름
- dns-server
- 주소 형식
- 완전한 HTTPS 엔드포인트
- 인증서 조건
- 인증서가 유효하고 호스트 이름과 일치해야 합니다
엔드포인트 호스트 이름도 먼저 DNS 해석이 되어야 합니다. URL 표기만 확인해서는 충분하지 않습니다.
DoH는 DNS 질의 전송을 처리하며, 웹사이트 연결 점검을 대신하지 않습니다
DoH는 클라이언트와 DNS 서버 사이의 질의를 HTTPS로 전송해 보호하지만, DNS 서버가 질의를 처리하는 데 필요한 정보까지 숨기지는 않습니다. 또한 웹사이트 연결에 필요한 TLS를 대신하지 않습니다. DNS 서버가 반환하는 주소는 위치, 캐시, 서비스 정책에 따라 달라질 수 있습니다. 주소가 달라졌다는 사실만으로 오류나 속도 향상의 증거라고 볼 수는 없습니다.
DoH 엔드포인트에서 도메인 이름을 사용하는 경우 클라이언트는 먼저 엔드포인트의 IP 주소를 알아내야 합니다. 이를 보통 초기 DNS 해석이라고 합니다. 엔드포인트 도메인을 해석할 수 없거나 인증서 검증에 실패하거나 HTTPS 연결이 되지 않으면, 설정 문법이 맞더라도 DNS 해석이 정상적으로 제공되지 않을 수 있습니다.
- DNS 응답 확인: 대상 도메인에 주소가 반환되는지, 명확한 도메인 없음 응답이 오는지, 아니면 계속 시간 초과되는지 확인하세요. 각 상황을 구분해야 합니다.
- DNS 경로 확인: 일반 DNS의 포트 53 또는 DoH 엔드포인트의 HTTPS 연결이 가능한지 확인하세요.
- 대상 연결 확인: 주소를 받은 뒤 대상 웹사이트 연결, TLS 핸드셰이크 또는 리소스 요청에서 오류가 발생하는지 확인하세요.
- 규칙 적용 여부 확인: Global Routing이
Config일 때 일치한 도메인 규칙과 IP 규칙, 최종 처리 정책을 확인하세요.
Global Routing의 Proxy, Direct, Config를 DNS 유형과 일대일로 연결하지 마세요. 이 항목들은 트래픽 처리 모드입니다. Scene은 상황별 전환에 사용하며 네 번째 DNS 프로토콜이 아닙니다. 비교 가능한 결과를 얻으려면 DNS를 테스트하는 동안 같은 모드, 같은 연결 항목, 같은 규칙 파일을 유지하세요.
캐시로 잘못 판단하지 않도록 같은 순서로 검증하세요
브라우저, 시스템, 앱은 연결 정보나 DNS 해석 결과를 캐시에 보관할 수 있습니다. 설정을 바꾼 직후 이미 열려 있던 페이지가 계속 로드된다고 해서 새 DNS 서버가 적용됐다고 볼 수는 없습니다. 처음 접속할 때 느린 것도 새 연결의 핸드셰이크 때문일 수 있습니다. 한 번의 페이지 로드만으로 판단하지 말고 같은 대상을 반복해서 확인하세요.
- 기준 상태 기록: 현재 네트워크를 유지하고 기존 설정으로 자주 사용하는 웹사이트 하나와 문제가 있는 웹사이트 하나에 접속하세요. ‘DNS 해석 시간 초과’, ‘연결 시간 초과’, ‘페이지 리소스 일부 로드 실패’처럼 구체적인 증상을 각각 기록합니다.
- DNS만 변경: 연결 항목, Global Routing, 규칙은 그대로 두고
dns-server만 바꾸세요. 저장한 다음 연결을 다시 설정합니다. - 새 요청 보내기: 기존 페이지를 닫고 다시 접속한 뒤 연결 기록이나 로그에서 실제로 확인할 수 있는 정보를 살펴보세요. 시크릿 창을 열어도 시스템 DNS 캐시가 지워진다고 보장할 수는 없습니다.
- 기존 설정으로 다시 확인: DNS를 원래대로 복구한 뒤 한 번 더 테스트하세요. 두 설정에서 모두 실패한다면 DNS 서버를 계속 바꾸기보다 대상 서비스, 외부 연결, 규칙을 확인하세요.
- 네트워크 변경은 따로 테스트: 마지막에 Wi-Fi와 셀룰러 네트워크를 바꿔가며 테스트하세요. DNS를 수정하는 테스트와 네트워크 변경을 동시에 하지 마세요.
DNS 설정 자주 묻는 질문
DoH로 바꾼 뒤 모든 웹사이트가 열리지 않아요. 어떻게 해야 하나요?
백업해 둔 dns-server 설정을 복구하고 다시 연결해 기존 상태로 돌아왔는지 확인하세요. 그런 다음 DoH 엔드포인트가 완전한 URL인지, 엔드포인트 도메인이 초기 DNS 해석을 완료할 수 있는지, HTTPS 인증서가 유효한지 확인하세요. 이 글의 example.com 주소는 문법 예시일 뿐 실제 서비스로 사용할 수 없습니다.
회사 내부 도메인이 시스템 DNS에서만 열립니다. 어떻게 설정해야 하나요?
먼저 dns-server = system으로 복구한 뒤 기존 회사 네트워크에서 확인하세요. 공개 DNS 서버는 보통 내부 DNS 영역을 알지 못합니다. 공개 웹사이트를 해석할 수 있다는 이유만으로 내부 DNS 서버를 바꾸지 마세요. 여러 DNS 서버를 함께 사용해야 한다면 네트워크 관리자에게 도메인 범위와 DNS 요구 사항을 확인한 뒤 기존 구성을 조정하세요.
DNS에서 주소를 받았는데 웹페이지가 계속 로딩 중입니다. 왜 그런가요?
Home으로 돌아가 연결 상태와 Global Routing을 확인하세요. Config 모드에서 대상이 예상한 규칙과 일치하는지 살펴본 뒤 외부 연결 및 TLS 오류를 확인합니다. 이 경우 문제는 DNS 해석 이후에 있을 수 있으므로 DNS 서버를 계속 바꿔도 해결되지 않을 수 있습니다.
구독을 업데이트한 뒤 DNS 설정이 사라졌어요. 어떻게 해야 하나요?
Config에서 현재 활성화된 파일과 [General] 내용을 확인하고, 업데이트된 항목이 연결 목록인지 전체 원격 구성인지 살펴보세요. 전체 구성을 새로 고치면 로컬에서 편집한 내용이 덮어써질 수 있습니다. 먼저 개인 사본을 보관하고 변경 사항을 비교한 뒤 어느 파일에서 DNS 설정을 관리할지 결정하세요.