FakeDNS 원리 완벽 해설: 가상 IP로 도메인 분할 라우팅을 빠르게 하는 방법

FakeDNS는 예약된 대역의 가상 IP로 DNS 요청에 즉시 응답해 도메인 단계에서 라우팅을 미리 결정합니다. 작동 방식과 권장 환경, 스니핑·TUN 모드 사용 시 주의사항을 정리했습니다.

이 글 한눈에 보기

이 글은 v2rayNG, Xray 코어 또는 TUN 모드를 사용하면서 도메인 기준으로 안정적인 분할 라우팅을 원하는 사용자에게 적합합니다. FakeDNS 필요 여부를 판단하고 가상 IP 매핑, 스니핑, 라우팅의 관계를 이해하며, 로그와 주소 대역을 바탕으로 웹페이지 접속 불가, 앱의 규칙 우회, LAN 충돌을 단계별로 확인할 수 있습니다.

FakeDNS가 해결하는 문제

일반 DNS 모드에서는 앱이 먼저 도메인을 실제 IP로 변환한 다음 해당 IP에 연결합니다. 프록시 코어가 연결을 가로챌 때 확인할 수 있는 대상은 203.0.113.20:443처럼 주소 하나뿐일 수 있습니다. 하나의 주소에서 여러 도메인을 서비스하거나 서버 주소가 자주 바뀌면 IP만으로 라우팅 규칙을 작성할 때 오판하기 쉽습니다.

FakeDNS는 실제 공인 주소를 제공하지 않습니다. 앱의 DNS 요청을 받으면 미리 정한 주소 풀에서 가상 IP를 할당하고 ‘도메인과 가상 IP’의 임시 매핑을 저장합니다. 이후 앱이 이 가상 주소에 연결하면 TUN 인바운드가 연결을 가로채고, 프록시 코어가 매핑 테이블에서 원래 도메인을 되찾습니다. 따라서 라우팅 모듈은 domain, domainSuffix 또는 규칙 세트에 기록된 도메인을 직접 매칭할 수 있습니다.

자주 사용하는 IPv4 주소 풀은 198.18.0.0/15입니다. 이 대역은 네트워크 장비 성능 테스트용이므로 공용 인터넷 라우팅에 사용되지 않아야 하며, 로컬 가상 대상으로 활용하기에 적합합니다. /15 대역에는 131072개의 주소가 포함되지만 Xray 설정에서는 보통 poolSize: 65535처럼 더 작은 매핑 풀을 지정해 실제로 필요하지 않은 초대형 매핑 테이블 생성을 피합니다.

앱이 도메인 조회가상 주소 반환TUN이 연결 가로채기원래 도메인 복원규칙 매칭 및 분할 라우팅프록시 아웃바운드
198.18/15
일반적인 IPv4 주소 풀
131072
대역의 전체 주소 수
65535
일반적인 매핑 풀 상한
1–3 ms
로컬 가상 응답 예시

위의 1~3밀리초는 동일한 Android 기기에서 캐시되지 않은 도메인을 연속 조회할 때 로컬에서 응답하는 데 걸리는 범위입니다. FakeDNS가 가상 주소를 반환하는 시간일 뿐 웹페이지 전체 로딩 속도를 뜻하지는 않습니다. 실제 연결에는 노드 핸드셰이크, 원격 DNS 조회, TLS 연결 설정, 콘텐츠 전송이 이어집니다.

하나의 도메인 요청이 가상 IP 매핑을 거치는 과정

전체 흐름은 여섯 단계로 나눌 수 있습니다. 첫째, 앱이 시스템 DNS에 A 또는 AAAA 조회를 보냅니다. 둘째, TUN 모드가 DNS 트래픽을 프록시 코어에 전달합니다. 셋째, FakeDNS가 주소 풀에서 사용 중이지 않은 주소를 꺼내 매핑 테이블에 기록합니다. 넷째, 앱이 가상 주소를 받은 뒤 TCP 또는 UDP 연결을 시작합니다. 다섯째, 인바운드가 대상 주소를 기준으로 도메인을 역조회합니다. 여섯째, 라우팅 모듈이 도메인에 따라 직접 연결, 프록시 또는 차단을 결정합니다.

  1. 조회가 프록시 코어로 전달됨: DNS 요청은 TUN 또는 제어된 로컬 DNS가 가로채야 합니다. 앱이 외부 DNS에 직접 연결하면 FakeDNS는 해당 조회를 받을 수 없습니다.
  2. 임시 매핑 생성: 예를 들어 news.example198.18.0.12가 할당되며, 매핑은 로컬 메모리에서만 유효합니다.
  3. 앱이 가상 주소에 연결: 앱은 198.18.0.12를 일반적인 대상 주소로 취급하므로 FakeDNS를 이해할 필요가 없습니다.
  4. 인바운드가 도메인 복원: 코어가 매핑 테이블에서 news.example을 찾은 뒤 도메인을 스니핑 및 라우팅 모듈에 전달합니다.
  5. 라우팅 규칙 매칭: 도메인 규칙은 실제 DNS 조회가 이루어지기 전에 아웃바운드를 결정할 수 있어 ‘먼저 조회하고 나중에 판단’할 때 생기는 정보 손실을 줄입니다.
  6. 아웃바운드가 조회 완료: 직접 연결 아웃바운드는 보통 로컬에서 실제 주소를 조회합니다. 도메인 대상 주소를 지원하는 프록시 아웃바운드는 도메인을 원격에서 처리하도록 전달할 수 있으며, 구체적인 동작은 아웃바운드 프로토콜과 DNS 설정에 따라 달라집니다.
처리 단계 코어가 확인하는 대상 사용 가능한 매칭 조건 일반적인 문제
DNS 조회 전 원래 도메인 DNS 서버 규칙 앱이 시스템 DNS 우회
가상 응답 후 198.18.0.0/15 내 주소 FakeDNS 매핑 주소 풀과 LAN 중복
TUN 인바운드 가상 IP와 포트 매핑, TLS, HTTP, QUIC 스니핑 스니핑 대상에 fakedns가 없음
라우팅 단계 복원된 도메인 전체 도메인, 접미사, 규칙 세트 높은 우선순위 규칙이 먼저 매칭됨
아웃바운드 단계 도메인 또는 실제 IP 아웃바운드 프로토콜과 DNS 정책 로컬 및 원격 조회 결과가 다름

결론: 먼저 DNS 트래픽이 TUN으로 들어오는지 확인

FakeDNS 설정은 존재하지만 조회가 외부 DNS에서 직접 처리되면 가상 주소 풀과 도메인 매핑이 모두 작동하지 않습니다. 문제 해결은 라우팅 규칙을 먼저 수정하지 말고 DNS 가로채기부터 확인해야 합니다.

Xray 설정의 핵심 필드

Xray 설정은 보통 서로 연동되는 세 부분으로 구성됩니다. 최상위 fakedns가 주소 풀을 정의하고, dns.servers가 조회를 FakeDNS에 전달하며, 인바운드의 sniffing.destOverride가 코어에서 가상 주소 매핑을 통해 대상 도메인을 복원하도록 합니다. 어느 한 필드만 추가해서는 전체 흐름이 완성되지 않습니다.

다음은 필드 간 관계를 설명하기 위한 최소 예시입니다. 클라이언트가 설정을 생성할 때 로컬 DNS, 규칙 세트, 여러 인바운드가 추가될 수 있습니다. 편집하기 전에 현재 설정을 먼저 내보내고, 사용 중인 클라이언트가 하위 JSON 사용자 지정을 허용하는지 확인하세요. 구독 업데이트로 수동 변경한 노드 매개변수가 덮어써질 수 있습니다.

{
  "fakedns": [
    {
      "ipPool": "198.18.0.0/15",
      "poolSize": 65535
    }
  ],
  "dns": {
    "servers": [
      "fakedns",
      "1.1.1.1"
    ],
    "queryStrategy": "UseIP"
  },
  "inbounds": [
    {
      "tag": "tun-in",
      "protocol": "tun",
      "settings": {
        "stack": "system"
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls",
          "quic",
          "fakedns"
        ],
        "metadataOnly": false
      }
    }
  ],
  "routing": {
    "domainStrategy": "IPIfNonMatch"
  }
}

destOverridefakedns는 매핑을 읽는 데 사용되며, http, tls, quic은 각 프로토콜 메타데이터에서 도메인을 보완하는 데 사용됩니다. 두 출처는 서로 충돌하지 않습니다. 매핑은 조회된 도메인을 직접 제공하고, 프로토콜 스니핑은 FakeDNS를 거치지 않았지만 핸드셰이크에 호스트명이 포함된 일부 연결도 처리할 수 있습니다.

TUN + FakeDNS

주소 풀
198.18.0.0/15
풀 용량
65535
스니핑 대상
fakedns、tls、http、quic
적용 규칙
도메인 접미사 및 규칙 세트

기기 전체 트래픽을 가로채 도메인 기준으로 분할 라우팅해야 하는 Android 기기에 적합합니다.

시스템 프록시 + 일반 DNS

로컬 SOCKS
127.0.0.1:10808
대상 출처
앱이 도메인을 직접 제출
주소 풀
사용하지 않음
적용 트래픽
시스템 프록시를 따르는 앱

앱이 이미 SOCKS 인바운드에 도메인을 제출하는 경우 FakeDNS의 이점은 대체로 제한적입니다.

v2rayNG에서 Xray 코어를 사용할 때는 클라이언트 화면에서 TUN과 로컬 DNS를 관리하는 것이 좋습니다. 일반적인 확인 경로는 ‘설정’ → ‘VPN 설정’에서 트래픽 가로채기 관련 옵션을 확인한 다음, ‘설정’ → ‘라우팅 설정’에서 규칙 순서를 확인하는 것입니다. 버전에 따라 스위치 이름이 바뀔 수 있으므로 화면의 스위치 상태만 보지 말고 내보낸 실행 설정과 코어 로그를 기준으로 작동 여부를 판단하세요.

FakeDNS를 사용하기 좋은 환경

FakeDNS는 TUN이 기기 전체 트래픽을 인계하고 라우팅 규칙을 주로 도메인 기준으로 작성한 환경에 가장 적합합니다. Android 앱은 먼저 자체적으로 도메인을 조회한 뒤 실제 IP를 네트워크 스택에 전달하는 경우가 많습니다. TUN이 대상 IP만 볼 수 있으면 도메인 규칙 매칭률이 스니핑 결과에 좌우되지만, FakeDNS를 사용하면 DNS 조회와 이후 연결이 매핑으로 연결되어 라우팅 판단이 더 직접적으로 이루어집니다.

v2rayN의 시스템 프록시 모드만 사용하는 경우 브라우저는 보통 대상 도메인을 로컬 SOCKS 또는 HTTP 인바운드에 직접 전달합니다. 이때 코어는 이미 도메인을 알고 있으므로 FakeDNS를 켜도 뚜렷한 이점이 없을 수 있습니다. 필요한지는 인바운드 유형과 로그에 표시되는 대상 형식을 기준으로 판단하세요.

LAN에 특수 라우팅이 포함되어 있다면 주의해야 합니다. 일부 실험실, 가상화 플랫폼 또는 기업 장비는 성능 테스트나 내부 시뮬레이션에 198.18.0.0/15를 사용할 수 있습니다. 시스템 라우팅 테이블이 이미 이 대역을 실제 인터페이스로 지정하고 있다면 FakeDNS 주소가 기존 네트워크와 겹쳐 연결이 LAN으로 전송되고 TUN에 들어오지 않을 수 있습니다.

사용 환경 권장 사항 판단 기준
v2rayNG 전체 TUN 먼저 활성화를 테스트 기기 전체 앱 트래픽이 가상 네트워크 인터페이스를 통과
앱별 프록시 대상 앱과 함께 테스트 제외된 앱의 DNS에는 강제 매핑을 적용하지 않아야 함
v2rayN 시스템 프록시 대체로 일반 DNS 유지 브라우저가 도메인을 직접 제출할 수 있음
IP 기준 분할 라우팅만 사용 대체로 활성화할 필요 없음 규칙 자체가 도메인에 의존하지 않음
LAN에서 198.18/15 사용 먼저 주소 풀 변경 가상 주소와 실제 라우팅 충돌 방지

결론: 시스템 프록시는 인바운드 대상을 먼저 확인하고, TUN 모드는 매핑 완전성을 먼저 확인

로그에 이미 전체 도메인이 표시된다면 더 낮은 DNS 수치를 얻으려고 FakeDNS를 억지로 추가하지 마세요. 로그에 공유 서비스 IP만 표시되고 도메인 규칙이 매칭되지 않을 때 가상 매핑으로 대상 정보를 보완하면 됩니다.

FakeDNS, 스니핑, TUN의 연동 방식

TUN의 역할은 IP 패킷을 가로채는 것이고, FakeDNS의 역할은 도메인과 가상 주소의 관계를 저장하는 것입니다. 스니핑은 HTTP Host, TLS Server Name 또는 QUIC 핸드셰이크에서 도메인을 추출합니다. 세 기능이 해결하는 문제는 서로 다릅니다. 순서에 맞게 연결해야 도메인 규칙이 더 많은 앱 트래픽에 적용됩니다.

먼저 최소한의 작동 흐름을 만든 뒤 고급 설정을 하나씩 추가하세요. 주소 풀, DNS 서버, 라우팅 규칙, MTU를 한 번에 변경하면 장애 원인을 구분하기 어렵습니다. 다음 순서는 v2rayNG의 Xray 코어 설정에 적합하며, 구독으로 생성된 실행 설정을 확인할 때도 활용할 수 있습니다.

  1. ‘설정’ → ‘VPN 설정’에서 TUN 또는 VPN 트래픽 인계가 활성화되어 있는지 확인하고, 대상 앱이 앱별 규칙에서 제외되지 않았는지 확인합니다.
  2. 연결을 시작한 뒤 코어 로그를 확인해 TUN 인바운드가 존재하고 주소 충돌, 권한 오류 또는 인터페이스 생성 실패가 없는지 확인합니다.
  3. 실행 설정에서 fakedns 주소 풀을 확인하고 DNS 서버 목록에 FakeDNS 처리 항목이 포함되어 있는지 확인합니다.
  4. 인바운드 스니핑이 활성화되어 있고 destOverride에 최소한 fakedns가 포함되어 있는지 확인합니다. 웹 트래픽을 식별해야 할 때만 http, tls, quic을 추가로 유지하세요.
  5. ‘설정’ → ‘라우팅 설정’에서 규칙 순서를 확인합니다. 차단 규칙, 사설 주소 규칙, 직접 연결 규칙이 앞에 있으면 대상 도메인 규칙보다 먼저 매칭될 수 있습니다.
  6. 한 번도 방문하지 않은 테스트 도메인으로 연결을 시작하고, 로그에 가상 주소, 복원된 도메인, 최종 아웃바운드 태그가 순서대로 표시되는지 확인합니다.

MTU 문제와 FakeDNS는 서로 다른 계층에 속합니다. 도메인은 정상적으로 복원되지만 페이지가 일부만 로드되거나 대용량 파일 전송이 멈춘다면 TUN MTU를 확인하세요. Android 기기에서는 1500에서 1400 또는 1380으로 조정해 비교 테스트할 수 있으며, 매번 한 값만 변경해야 합니다. 모든 도메인에서 연결 자체가 되지 않는다면 DNS 가로채기와 주소 풀 라우팅으로 돌아가 계속 확인하세요.

Mux도 FakeDNS를 대체하지 않습니다. Mux는 하나의 하위 연결에 여러 논리 연결을 실어 연결 재사용에 주로 영향을 주고, FakeDNS는 대상 도메인을 보존합니다. Mux를 켜거나 꺼도 가상 주소 매핑 생성 여부는 바뀌지 않아야 하지만 연결 수와 로그 표시 방식은 달라질 수 있습니다.

자주 발생하는 문제와 단계별 해결

FakeDNS 문제는 보통 세 가지 형태로 나타납니다. 앱이 가상 IP를 받은 뒤 연결하지 못하거나, 도메인 규칙이 매칭되지 않거나, 클라이언트를 종료한 뒤에도 잠시 접속이 실패하는 경우입니다. 첫 번째는 TUN이 가상 대역을 가로채는지 먼저 확인하고, 두 번째는 매핑과 규칙 순서를 확인하며, 세 번째는 대개 시스템 DNS 캐시에 남은 가상 주소와 관련이 있습니다.

활성화 후 모든 웹페이지가 열리지 않나요?

먼저 코어 로그를 열어 TUN 인바운드가 정상적으로 생성되었는지 확인합니다. 이어서 시스템 라우팅 테이블이 198.18.0.0/15를 TUN으로 지정하는지 확인하세요. 이 대역이 LAN에서 사용 중이라면 충돌하지 않는 전용 주소 풀로 바꾼 뒤 연결을 다시 시작합니다.

로그에 가상 IP만 표시되고 도메인이 복원되지 않나요?

인바운드의 스니핑 스위치를 확인하고 destOverridefakedns가 포함되어 있는지 확인합니다. 그런 다음 DNS 조회와 연결을 동일한 실행 인스턴스가 처리하는지 확인하세요. 분리된 DNS 프로세스는 메모리 매핑을 공유할 수 없습니다.

도메인은 복원됐지만 라우팅 규칙이 여전히 매칭되지 않나요?

‘설정’ → ‘라우팅 설정’에서 위에서 아래로 적용되는 규칙 순서를 확인합니다. 범위가 지나치게 넓은 직접 연결 규칙을 잠시 비활성화한 뒤 로그의 최종 아웃바운드 태그를 확인하고, 규칙이 전체 도메인, 접미사 또는 규칙 세트 중 무엇을 사용하는지 확인하세요.

v2rayNG 연결을 끊은 뒤 잠시 웹사이트가 열리지 않나요?

시스템에 198.18.0.0/15 내 가상 주소가 아직 캐시되어 있을 수 있습니다. 먼저 대상 앱을 종료했다가 다시 실행하세요. 그래도 복구되지 않으면 네트워크 연결을 한 번 전환해 시스템이 DNS를 다시 조회하도록 합니다.

일부 앱은 정상인데 다른 앱은 규칙을 전혀 따르지 않나요?

‘설정’ → ‘VPN 설정’에서 앱별 프록시 적용 범위를 확인합니다. 제외된 앱은 TUN을 통과하지 않으므로 DNS 조회와 이후 연결도 FakeDNS 매핑 흐름에 들어오지 않습니다.

문제 해결 시 브라우저 결과만 확인하지 마세요. 코어 로그에서 최소한 네 가지를 확인해야 합니다. DNS 조회가 클라이언트에 들어왔는지, 가상 주소가 할당되었는지, 인바운드가 도메인을 복원했는지, 라우팅이 최종적으로 어떤 아웃바운드를 선택했는지입니다. 네 단계 중 빠진 단계가 있으면 해당 모듈로 돌아가 수정하고, 노드와 프로토콜을 동시에 교체하지 마세요.

‘조회가 빠른 것’과 ‘연결이 빠른 것’도 구분해야 합니다. FakeDNS의 로컬 응답은 수 밀리초 안에 끝날 수 있지만 프록시 노드 지연, TCP 패킷 손실, TLS 핸드셰이크, 서버 응답이 여전히 페이지 속도를 결정합니다. 가상 매핑과 라우팅이 모두 올바르다면 속도 문제는 노드 지연, 패킷 손실률, 전송 매개변수를 계속 확인해야 합니다.

V2Ray 클라이언트 다운로드 운영체제에 맞는 설치 파일 선택