v2rayN으로 노드에 연결할 수 있지만 도메인 조회 오류나 불안정한 분할 결과를 겪는 사용자에게 적합합니다. 먼저 DNS 조회 주체를 파악한 뒤 중국 본토 DNS, 해외 DoH, 라우팅 규칙을 각각 설정하세요. 마지막으로 요청 경로를 따라 캐시와 로그, 실제 연결 출구를 확인합니다.
먼저 DNS 요청을 보내는 주체 확인
DNS 분할은 서버 주소 두 개를 목록에 입력하는 것으로 끝나지 않습니다. 브라우저가 직접 도메인을 조회하거나 운영체제가 먼저 IP 주소를 알아낼 수도 있습니다. 도메인이 V2Ray 또는 Xray 코어의 DNS 조회 과정에 들어와야 설정의 dns 규칙이 적용됩니다. v2rayN에서 「시스템 프록시」를 켜면 시스템 프록시를 따르는 앱에 영향을 주지만, 기기의 모든 DNS 요청을 가로채는 것은 아닙니다.
먼저 정상 작동하는 노드에 연결한 다음, 브라우저와 다른 앱에서 같은 사이트가 어떻게 표시되는지 기록하세요. 특정 브라우저에서만 문제가 생기면 브라우저의 보안 DNS 설정부터 확인합니다. 프록시를 거치지 않는 앱에서만 문제가 있다면 해당 앱의 트래픽이 클라이언트를 통과하는지 확인하세요. 처음부터 시스템 DNS, TUN, 라우팅 규칙을 한꺼번에 바꾸면 어떤 설정이 효과를 냈는지 파악하기 어렵습니다.
도메인별 중국 본토 DNS와 해외 DoH 지정
아래는 구조를 이해하기 위한 dns 예시이며, v2rayN에 바로 가져올 수 있는 완성 설정은 아닙니다. 예시에서는 geosite:cn으로 일반적인 중국 본토 도메인을 찾아 일반 DNS에 전달하고, geosite:geolocation-!cn으로 해당 도메인을 찾아 DoH에 전달합니다. 앞의 두 규칙에 해당하지 않는 도메인은 마지막 기본 DNS 서버를 사용합니다. 실제 적용 여부는 사용 중인 코어와 규칙 데이터, 설정 생성 방식에 따라 달라집니다.
{
"dns": {
"servers": [
{
"address": "223.5.5.5",
"port": 53,
"domains": ["geosite:cn"],
"expectIPs": ["geoip:cn"]
},
{
"address": "https://1.1.1.1/dns-query",
"domains": ["geosite:geolocation-!cn"]
},
"localhost"
]
}
}
address는 DNS 서버를 지정합니다. 일반 DNS는 예시에서 53번 포트를 사용하고, DoH 주소는 HTTPS로 연결되므로 보통 443번 포트를 사용합니다. domains는 도메인의 우선 매칭 항목을 정하며, 접근 제어 목록은 아닙니다. expectIPs는 반환된 주소의 필터 조건입니다. 예시에서는 중국 본토 DNS 서버의 결과가 geoip:cn 범위에 속하도록 설정합니다. 그렇다고 도메인이 반드시 중국 본토 IP로 조회되어야 한다는 뜻은 아닙니다. 특히 여러 지역에 서버를 둔 사이트는 예상과 다른 결과가 나올 수 있습니다.
localhost는 앞선 도메인 규칙에 해당하지 않을 때 사용하는 기본 조회 방식으로, 이 기기의 DNS 환경을 이용합니다. 로컬 DNS 오염을 확인하는 중이라면 기본 조회 결과를 DoH를 거친 결과로 오해하지 마세요. DoH 서버 주소에도 연결할 수 있어야 합니다. 시간 초과가 발생하면 현재 네트워크에서 해당 서버에 접속할 수 있는지, 코어가 보낸 DNS 연결이 실제로 어느 출구를 이용하는지 각각 확인하세요. servers 목록만 수정해도 조회가 반드시 프록시를 통과하는 것은 아닙니다.
v2rayN에서 설정을 저장하고 라우팅 확인
v2rayN 인터페이스는 버전에 따라 달라질 수 있습니다. 먼저 「설정」에서 「DNS 설정」을 찾아 현재 설정 모드와 수정 가능한 항목을 확인하세요. 사용자 지정 DNS 설정을 지원한다면 원래 내용을 백업한 다음 안내된 형식에 맞춰 입력합니다. 위 예시를 서버 주소만 입력할 수 있는 칸에 붙여 넣지 마세요. 저장한 뒤 코어를 재시작하고, 클라이언트 로그에 JSON 파싱 오류나 DNS 서버 연결 실패가 있는지 확인합니다.
DNS 조회: 먼저 조회 대상을 확인
- 설정 위치
- 「설정」→「DNS 설정」
- 중국 본토 도메인 규칙
- geosite:cn
- 해외 도메인 규칙
- geosite:geolocation-!cn
- 기본 규칙
- localhost의 실제 조회 결과 확인
수정 전에 원래 설정을 저장하고, 현재 모드에서 코어 DNS 규칙을 수정할 수 있는지 확인하세요.
라우팅: 다음으로 연결 출구 확인
- 설정 위치
- 「설정」→「라우팅 설정」
- 중국 본토 규칙
- 도메인별 직접 연결
- 해외 규칙
- 도메인별 프록시 연결
- 기본 연결 출구
- 규칙에 해당하지 않을 때의 경로 확인
규칙의 존재 여부만 보지 말고 우선순위와 현재 활성화된 라우팅 설정도 확인하세요.
라우팅 규칙과 DNS 규칙은 같은 의도를 반영해야 합니다. 예를 들어 중국 본토 도메인을 중국 본토 DNS로 조회해도, 앞에 있는 광범위한 프록시 규칙이 먼저 적용되면 「DNS 조회는 정상이지만 연결 출구가 잘못된」 상황이 생길 수 있습니다. 「설정」→「라우팅 설정」에서 현재 활성화된 규칙 모음을 확인한 다음 개별 규칙의 순서를 살펴보세요. 구독 업데이트는 보통 서버 목록을 갱신하는 기능이므로, 업데이트하면 로컬 DNS와 라우팅 설정까지 함께 수정된다고 가정하지 마세요.
요청이 도메인 이름을 유지한 채 코어에 들어오면 라우팅은 먼저 도메인 규칙과 일치시킬 수 있습니다. domainStrategy는 라우팅 판단을 위해 IP를 조회하는 시점에 영향을 줍니다. AsIs는 라우팅을 위해 도메인을 조회하지 않습니다. IPIfNonMatch는 도메인 규칙에 해당하지 않을 때 조회를 시도하고, IPOnDemand는 IP 판단이 필요한 규칙을 만났을 때 조회를 시작할 수 있습니다. 이 옵션은 라우팅 판단 시점을 조절할 뿐, 코어에 들어오지 않은 시스템 DNS 요청을 지정된 서버로 자동 전환하지는 않습니다.
DNS 오염, 캐시, 분할 규칙 불일치 구분하기
문제를 확인할 때는 도메인 하나, 앱 하나, 노드 하나를 고정하고 한 번에 한 항목만 변경하세요. 먼저 사이트가 열리는지 확인한 다음 코어 로그에 DNS 조회, 조회 실패 또는 라우팅 규칙 적용 기록이 있는지 살펴봅니다. 일부 도메인만 실패한다면 DNS 서버별 반환 주소를 비교하세요. 모든 도메인이 실패한다면 DNS 오염이라고 단정하지 말고 노드 연결, DoH 접속 가능 여부, 설정 문법부터 확인하세요.
- 요청 경로를 확인하세요. 브라우저에서 테스트한 뒤 시스템 프록시를 따르는 다른 앱과 비교합니다. 프록시를 거치지 않는 앱에서만 실패한다면 DNS 규칙을 추가하기 전에 시스템 프록시나 TUN 상태를 확인하세요.
- DNS 조회를 확인하세요. v2rayN 로그에서 대상 도메인과 DNS 오류를 검색합니다. 관련 요청이 로그에 전혀 없다면 앱 자체의 보안 DNS, 시스템 캐시, 트래픽이 코어에 들어오는지 확인하세요.
- 연결 출구를 확인하세요. 「라우팅 설정」에서 활성화된 규칙을 로그에 기록된 아웃바운드 결과와 비교합니다. IP 반환은 정상이지만 연결에 실패한다면 DNS 서버를 계속 바꾸기보다 라우팅, 노드, 대상 서비스를 확인하세요.
- 기존 조회 결과를 지우고 다시 테스트하세요. Windows에서는 명령 프롬프트에서
ipconfig /flushdns를 실행해 시스템 DNS 캐시를 지울 수 있습니다. 그런 다음 테스트 앱을 재시작해 이전 조회 결과를 새 설정의 효과로 오해하지 않도록 하세요.
앱에서 도메인을 IP 주소로 변환한 뒤 프록시에 전달하면 코어는 IP 규칙만 적용할 수 있습니다. 트래픽 스니핑은 HTTP 또는 TLS 연결에 따라 도메인 정보를 복원하는 데 도움이 될 수 있지만, 모든 프로토콜에 적용되지는 않으며 올바른 DNS 요청 경로를 대신할 수도 없습니다. 먼저 요청 경로를 파악한 뒤 스니핑과 IP 라우팅 규칙을 조정할지 결정하세요.
자주 묻는 질문: DNS를 바꿨는데 왜 적용되지 않나요?
DoH 주소를 입력했더니 웹페이지가 계속 로딩되나요?
먼저 https://1.1.1.1/dns-query에 필요한 HTTPS 연결이 가능한지 확인하고, 코어 로그에서 시간 초과가 발생했는지 살펴보세요. DoH 조회 연결의 출구는 별도로 확인해야 합니다. 대상 사이트가 프록시를 사용한다는 이유만으로 DoH 연결도 프록시를 통과한다고 판단할 수는 없습니다.
중국 본토 사이트가 해외 사이트로 분류되면 어떻게 하나요?
먼저 geosite 규칙 데이터와 활성화된 라우팅 설정을 확인한 다음, 해당 도메인이 지정된 domains 항목에 일치하는지 살펴보세요. 여러 지역에 서비스를 제공하는 사이트는 IP 위치에 따른 분류와 다르게 동작할 수 있습니다. 해당 도메인에 더 구체적인 규칙을 추가할 수 있습니다.
특정 브라우저에서만 DNS 오류가 표시되나요?
브라우저 자체의 보안 DNS 설정을 확인하고, 사용 중지한 뒤 다시 테스트하세요. 이전 연결을 정리하려면 브라우저도 재시작합니다. 다른 앱이 정상적으로 작동한다면 전체 DNS 설정은 우선 변경하지 마세요.
설정을 저장한 뒤 모든 사이트에 연결할 수 없나요?
먼저 백업한 설정을 복원하고 로그에서 설정 파싱 오류를 찾으세요. 입력란이 DNS 서버 주소만이 아니라 완전한 dns 객체를 받는지 확인합니다. 규칙을 한 번에 하나씩 추가하고 저장한 뒤 코어를 재시작해 테스트하세요.
라우팅을 바꿨는데 DNS 반환값이 그대로인가요?
라우팅 규칙은 캐시된 조회 결과를 자동으로 새로 고치지 않습니다. 먼저 시스템 캐시를 지우고 테스트 앱을 재시작한 다음 코어가 새 조회를 보냈는지 확인하세요. 연결 출구 변경과 DNS 반환값 변경을 혼동하지 마세요.
설정 완료 여부는 간단히 확인할 수 있습니다. 중국 본토 도메인 하나와 해외 도메인 하나를 선택해 각각 DNS 서버, 적용된 라우팅 규칙, 실제 접속 가능 여부를 확인하세요. 세 가지가 모두 맞으면 평소 사용하는 앱으로 테스트 범위를 넓힙니다. v2rayNG 또는 v2flyNG에서만 문제가 생긴다면 Android 기기에서 사용하는 코어와 클라이언트 설정을 각각 확인하세요. 데스크톱 v2rayN 설정은 다른 기기에 자동으로 복사되지 않습니다.