FakeDNS가 반환하는 주소는 로컬 프록시가 도메인을 식별하도록 쓰는 주소이지, 대상 서버의 실제 주소가 아닙니다. v2rayN TUN 모드를 설정하거나 가상 IP·DNS 오류를 겪는다면 먼저 조회, 매핑, 아웃바운드의 세 단계를 살펴보세요. 사용 여부를 판단한 뒤 캐시, 라우팅, 주소 충돌을 재현 가능한 순서로 점검할 수 있습니다.
FakeDNS란? 주소 하나에 도메인 정보를 저장하는 방식
일반 DNS 조회는 도메인을 대상 서비스의 실제 IP로 변환하고, 앱은 해당 주소로 연결을 시작합니다. 반면 FakeDNS는 미리 정한 주소 풀에서 가상 IP를 할당하고 도메인과 가상 IP의 매핑을 로컬에 저장한 뒤, 가상 IP를 앱에 반환합니다. 이 주소는 수령증과 비슷합니다. 매핑 정보를 가진 처리 구성 요소만 주소가 가리키는 도메인을 알아낼 수 있습니다.
예를 들어 앱이 example.com을 조회하면 FakeDNS는 풀에서 198.18.0.10을 반환할 수 있습니다. 앱이 이 주소의 443 포트에 연결하면 연결을 가로채는 구성 요소가 매핑을 조회해 example.com을 복원한 뒤 라우팅 및 아웃바운드 처리로 넘깁니다. 이 주소는 처리 과정을 보여 주는 예시일 뿐, 해당 도메인에 고정으로 할당된 주소나 인터넷에서 접속할 수 있는 서비스 주소가 아닙니다.
핵심은 “가짜 주소를 만들었다”는 데 있지 않습니다. 주소를 반환하는 구성 요소와 이후 연결을 받는 구성 요소가 매핑 상태를 공유하거나 연동할 수 있어야 합니다. DNS가 가상 주소를 반환하더라도 연결이 일반 게이트웨이로 전달되면 대개 실패합니다. FakeDNS는 트래픽을 암호화하지 않으며, VMess, VLESS 같은 프록시 프로토콜과는 서로 다른 단계에서 작동합니다.
가상 IP 풀: 주소 개수와 매핑 항목 수는 다릅니다
V2Ray/Xray의 FakeDNS 설정에서 흔히 사용하는 IPv4 주소 풀은 198.18.0.0/15입니다. 이 범위는 네트워크 장비 벤치마크용이며 일반적인 공인 IP 주소가 아닙니다. 아래 세 숫자는 각각 주소 범위, 매핑 용량 예시, 일반적인 DNS 서비스 포트를 뜻하며 성능 측정 결과가 아닙니다.
ipPool은 할당할 주소 범위를, poolSize는 매핑 풀의 용량을 정합니다. 둘은 서로 다른 설정입니다. 도메인이 많거나 오랫동안 실행하거나 매핑이 정리되면 기존 주소와 현재 매핑이 일치하지 않을 수 있습니다. 구체적인 회수 방식은 구현에 따라 다릅니다. 앱이 이전 DNS 결과를 자체적으로 보관할 수도 있으므로, 코어를 재시작한 뒤 캐시에 남은 가상 주소가 더 이상 올바르게 식별되지 않을 수 있습니다.
판단 기준: 주소 충돌부터 확인하고 매핑 풀 확장은 나중에 검토
기업 VPN이나 테스트 네트워크에서 이미 198.18.0.0/15를 사용한다면 실제 라우팅과 주소 풀의 충돌 여부부터 확인하세요. poolSize를 늘려도 경로 중복이나 재시작으로 사라진 매핑은 복구되지 않습니다.
TUN 모드에서 FakeDNS를 함께 쓰는 이유
TUN은 네트워크 계층에서 IP 패킷을 받으므로, 처음 앱에 입력한 도메인이 아니라 대상 주소를 보게 되는 경우가 많습니다. 실제 IP 하나를 여러 도메인이 공유할 수 있어 IP만으로 원래 도메인을 안정적으로 복원하기 어렵습니다. FakeDNS는 도메인을 매핑 정보에 보존해 이후 연결을 도메인 기준으로 더 쉽게 라우팅할 수 있게 합니다.
하지만 TUN과 FakeDNS가 반드시 함께 켜져야 하는 것은 아닙니다. TUN은 실제 DNS 조회와 함께 작동할 수 있으며, FakeDNS는 투명하게 연결을 가로챌 수 있는 다른 경로에서도 사용할 수 있습니다. TLS 또는 HTTP 스니핑으로 도메인 정보를 얻을 때도 있지만, 모든 프로토콜과 암호화 환경을 지원하지 않으므로 매핑 정보와 같은 기능으로 볼 수는 없습니다.
- 적합한 경우: 시스템 프록시를 사용하지 않는 앱의 트래픽을 가로채면서 도메인 규칙에 따라 매칭하려는 경우
- 먼저 확인: 앱의 DNS 조회가 설정된 DNS 처리 경로로 들어오고, 가상 주소를 반환한 뒤의 연결도 같은 경로에서 처리되는지 확인하세요.
- 굳이 켤 필요 없음: 브라우저가 명시적 프록시를 통해 도메인을 전달하고 시스템 프록시만으로 사용 목적을 충족한다면 기존 설정을 유지하세요.
- 해결할 수 없는 경우: 앱이 고정된 실제 IP에 직접 연결해 도메인 조회를 거치지 않는다면 FakeDNS로 도메인을 알아낼 수 없습니다.
설정 읽는 법: DNS 할당과 연결 복원은 함께 구성해야 합니다
아래 두 카드는 Xray 형식 설정에서 관련 항목을 찾는 데 참고할 수 있는 예시입니다. 실행 가능한 전체 설정이 아니며 클라이언트의 임의 입력란에 그대로 붙여 넣어서는 안 됩니다. 클라이언트가 자동 생성한 설정이 수동 변경 사항을 덮어쓸 수 있습니다. TUN이 다른 DNS 구현을 사용한다면 항목 이름과 동작도 다를 수 있습니다.
DNS 할당 측
- 최상위 설정
fakedns배열- 주소 풀
ipPool: 198.18.0.0/15- 매핑 용량
poolSize: 65535- DNS 서비스 항목
dns.servers에서fakedns사용
할당 측에서 앱의 DNS 조회를 실제로 처리해야 합니다. 풀만 정의하고 DNS 요청 경로에 연결하지 않으면 시스템 DNS를 자동으로 가로채지 않습니다.
인바운드 복원 측
- 인바운드 스니핑
sniffing.enabled: true- 복원 유형
destOverride: ["fakedns"]- 대상 처리
- 도메인을 복원한 뒤 라우팅 및 아웃바운드로 전달
- 확인할 정보
- 인바운드 대상, 도메인, 아웃바운드 로그
복원 측에서 해당 매핑에 접근할 수 있어야 합니다. 복원하지 않은 가상 주소를 일반 직결 아웃바운드로 보내지 마세요.
v2rayN에서는 먼저 “설정” → “매개변수 설정”에서 기본 설정을 확인한 다음 현재 버전에서 제공하는 DNS 및 TUN 설정 메뉴를 살펴보세요. 버전에 따라 옵션의 위치와 이름이 달라질 수 있습니다. 같은 이름의 체크박스를 기계적으로 찾기보다 DNS를 누가 수신하고, 가상 주소를 누가 만들며, 연결을 누가 받는지 확인하는 것이 중요합니다.
v2rayNG는 Xray 코어를, v2flyNG는 V2Fly 코어를 사용하지만 데스크톱 설정을 Android 앱 설정에 항목 위치 그대로 옮겨 적용할 수는 없습니다. 클라이언트에서 실제로 제공하는 옵션, 포함된 코어 버전, 실행 로그를 기준으로 확인하세요. 구독은 보통 노드 정보를 제공할 뿐, 기기의 전체 DNS 트래픽까지 대신 설정해 주지는 않습니다.
조회 한 번을 줄인다는 것은 정확히 어떤 단계일까요?
FakeDNS는 앱이 연결하기 전 실제 대상 IP를 기다리며 로컬에서 수행하는 DNS 조회를 생략할 수 있습니다. 그렇다고 전체 접속 과정에서 DNS가 더 이상 필요 없는 것은 아닙니다. 프록시 아웃바운드가 도메인을 원격으로 전달하면 원격 측에서 조회할 수 있고, 직결 규칙에 해당하면 로컬 아웃바운드가 연결에 필요한 실제 IP를 여전히 조회해야 하는 경우가 많습니다.
| 접속 경로 | 앱이 받은 결과 | 후속 DNS 조회 위치 | 참고 사항 |
|---|---|---|---|
| 일반 DNS 조회 후 직결 | 실제 IP | 대개 연결 전에 조회 완료 | 앱이 조회 결과를 직접 사용 |
| FakeDNS 후 프록시 | 가상 IP | 프록시 서버 측에서 조회할 수 있음 | 아웃바운드가 도메인을 전달하는지에 따라 다름 |
| FakeDNS 후 직결 | 가상 IP | 대개 로컬에서 실제 IP를 다시 조회해야 함 | 다시 가상 주소가 반환되어 루프가 생기지 않도록 주의 |
| 앱 자체 암호화 DNS | 앱의 DNS 처리 경로에 따라 다름 | 로컬 FakeDNS를 우회할 수 있음 | 53번 포트만 가로채는 것으로는 부족한 경우가 많음 |
도메인 규칙과 IP 규칙도 구분해야 합니다. 도메인을 복원한 뒤에는 도메인 규칙을 바로 적용할 수 있지만, IP 기반 지역 분류에는 실제 주소가 필요할 수 있으며 DNS 조회 여부는 라우팅 정책에 따라 달라집니다. 198.18.0.10을 대상 서버의 위치를 보여 주는 근거로 삼아서는 안 됩니다. FakeDNS를 켰다고 모든 DNS 요청이 프록시를 거친다고 단정할 수도 없습니다.
판단 기준: 아웃바운드 로그로 라우팅을 확인하고 가상 IP로 지역을 판단하지 마세요
직결해야 하는 서비스와 프록시를 사용해야 하는 서비스를 하나씩 골라 새 연결을 만든 뒤 실제로 선택된 아웃바운드를 확인하세요. 주소 풀에 속한 IP만 표시되고 예상한 도메인이나 아웃바운드가 보이지 않는다면 도메인 규칙을 조정하기 전에 복원 경로부터 해결하세요.
호환성 문제: 캐시, 우회, 특수 네트워크부터 점검
흔히 발생하는 문제는 “모든 웹사이트가 느려지는 것”이 아니라, 활성화한 뒤 일부 앱만 작동하지 않거나 코어 재시작 후 기존 연결에 문제가 생기거나 사내 네트워크에 접속할 수 없게 되는 것입니다. 문제를 찾을 때는 한 번에 조건 하나만 바꾸고 되돌릴 수 있는 기준 설정을 유지하세요. 노드, DNS, 라우팅을 한꺼번에 바꾸면 원인을 찾기 어렵습니다.
조회 결과는 198.18로 시작하는데 웹페이지는 왜 열리나요?
현재 설정에서 이 주소 풀을 사용하고 있다면 정상적인 결과입니다. 로그에서 도메인이 복원되고 올바른 아웃바운드가 선택되는지 확인하세요. 해당 주소를 노드 서버 주소로 입력하거나 다른 기기에 실제 대상 주소처럼 전달하지 마세요.
클라이언트를 재시작한 뒤 일부 앱이 갑자기 연결되지 않나요?
먼저 문제가 발생한 앱을 완전히 종료한 뒤 다시 열어 DNS를 새로 조회하게 하세요. 이전 주소를 계속 사용한다면 시스템 DNS 캐시를 비우세요. Windows에서는 ipconfig /flushdns를 실행하고, systemd-resolved를 사용하는 Linux에서는 resolvectl flush-caches를 실행할 수 있습니다. 이 명령으로 앱 자체의 캐시까지 모두 지워지는 것은 아닙니다.
브라우저는 되는데 게임이나 로컬 네트워크 검색이 안 되나요?
먼저 나머지 설정은 유지하고 FakeDNS만 끈 뒤 다시 테스트하세요. 일부 앱은 실제 IP를 기준으로 네트워크 범위를 판단하며, 로컬 네트워크 검색은 브로드캐스트나 멀티캐스트에 의존할 수도 있습니다. 로컬 도메인과 내부 네트워크에 실제 DNS 조회 및 직결 예외를 설정하고, TUN이 해당 예외를 다시 잘못 가로채지 않는지도 확인하세요.
활성화했는데도 앱이 외부 DNS에 직접 조회하나요?
브라우저의 “보안 DNS” 또는 앱 내부의 암호화 DNS 설정을 확인하고 IPv6 조회 경로도 점검하세요. 원인을 진단할 때는 시스템 DNS를 임시로 사용해 다시 테스트하세요. 53번 포트를 가로채고 있다는 이유만으로 암호화 DNS도 FakeDNS를 거친다고 판단하지 마세요.
또 자주 하는 실수는 ping으로 가상 IP를 테스트하고 패킷 손실률로 노드 품질을 판단하는 것입니다. 이 주소는 매핑을 나타내며 실제 서버 주소가 아닙니다. ICMP 처리 방식도 TCP나 UDP와 다를 수 있습니다. 대상 앱의 실제 연결을 테스트하고 DNS 조회 시간, 연결 시간, 다운로드 처리량을 각각 기록하세요.
활성화 및 되돌리기: 같은 요청으로 전후 비교
FakeDNS 사용 여부는 설정 항목을 많이 추가했는지가 아니라 현재 트래픽 처리 경로를 더 완전하게 만들 수 있는지로 판단해야 합니다. 먼저 클라이언트 버전, 현재 노드, TUN 상태, DNS 처리 구성 요소, 주소 풀을 기록한 뒤 아래 단계에 따라 재현 가능한 비교 테스트를 진행하세요.
- 기준 상태 만들기: FakeDNS를 끄고 같은 노드와 네트워크를 유지한 채 프록시 대상, 직결 대상, 로컬 네트워크 서비스에 각각 접속해 성공 여부를 기록합니다.
- 매핑 경로만 활성화: DNS 할당과 인바운드 복원이 함께 설정되어 있는지 확인합니다. 노드를 바꾸거나 라우팅 설정 전체를 동시에 수정하지 마세요.
- 연결 다시 시작: 테스트 앱을 종료한 뒤 다시 열고, 필요하면 시스템 DNS 캐시를 지웁니다. 이전 실제 주소와 새 가상 주소가 섞이지 않도록 하세요.
- 세 가지 정보 확인: 조회 결과가 주소 풀에 속하는지, 연결에서 원래 도메인이 복원되는지, 최종 아웃바운드가 라우팅 설정과 일치하는지 확인합니다. IPv6를 사용하는 경우 AAAA 조회와 IPv6 연결도 따로 점검하세요.
- 되돌리기 확인: FakeDNS를 끄고 기존 DNS 설정을 복원한 뒤 문제가 발생한 앱을 재시작합니다. 되돌린 뒤에도 문제가 계속되면 DNS 탓으로만 돌리지 말고 TUN 라우팅, 시스템 프록시, 노드 연결 상태를 점검하세요.