v2rayNG 안드로이드 사용법: VpnService 권한, 배터리 최적화 제외 및 앱별 프록시 설정

첫 연결 권한 승인, 백그라운드 유지, 앱별 라우팅의 설정 순서를 정리하고 구독·라우팅·DNS의 차이도 설명합니다.

이 글 한눈에 보기

VMess, VLESS 등의 노드를 이미 가져왔지만 첫 연결이 응답하지 않거나 화면을 잠근 뒤 연결이 끊기거나 일부 앱만 프록시로 연결하고 싶은 v2rayNG 사용자를 위한 안내입니다. VpnService 권한 승인, 배터리 제한 조정, 앱별 프록시 설정을 순서대로 완료한 뒤 로그와 연결 테스트로 원인이 노드인지 시스템 권한인지 라우팅 규칙인지 확인하세요.

첫 연결 전에 VpnService 권한 승인하기

v2rayNG는 일반적으로 사용하는 VPN 모드에서 Android의 VpnService 인터페이스를 호출해 로컬 가상 네트워크를 만들고 처리할 트래픽을 넘겨받습니다. 이 시스템 인터페이스는 원격 VPN 프로토콜과 같지 않으며 VMess, VLESS, Trojan 등의 노드 프로토콜을 대신하지도 않습니다. 앱 트래픽을 v2rayNG로 전달하는 역할을 하며, Xray 코어가 현재 설정에 따라 원격 아웃바운드를 선택합니다.

처음 메인 화면 오른쪽 아래의 연결 버튼을 누르면 일반적으로 시스템에 ‘연결 요청’ 대화상자가 표시됩니다. 승인하면 상태 표시줄에 열쇠 또는 VPN 상태 아이콘이 나타납니다. 시스템 권한은 한 번에 하나의 VpnService 앱만 사용할 수 있으므로 다른 네트워크 도구가 실행 중이면 v2rayNG가 시작 중인 상태에 머물거나 시작 직후 자동으로 중지될 수 있습니다.

  1. 설정 가져오기

    메인 화면 오른쪽 위의 ‘+’를 누르고 ‘클립보드에서 가져오기’ 또는 ‘QR 코드 스캔’을 선택합니다. 구독 사용자는 왼쪽 메뉴에서 ‘구독 그룹 설정’으로 들어가 링크를 추가한 뒤 ‘구독 업데이트’를 실행하세요.

  2. 노드 선택

    설정 목록으로 돌아가 사용 가능한 설정 하나를 눌러 왼쪽에 선택 표시가 나타나게 합니다. 가져오기만 하고 현재 노드를 지정하지 않으면 안 됩니다.

  3. 연결 시작

    메인 화면 오른쪽 아래의 원형 연결 버튼을 누른 다음 Android의 ‘연결 요청’ 창에서 v2rayNG의 VPN 연결을 허용합니다.

  4. 상태 확인

    하단 상태가 ‘연결 안 됨’에서 ‘연결됨’으로 바뀌었는지 확인한 뒤 오른쪽 위 메뉴에서 ‘모든 설정 실제 연결 테스트’를 실행하거나 현재 설정의 지연 시간을 테스트합니다.

  5. 사용 중인 VPN 해제

    권한 창이 나타나지 않으면 먼저 시스템 VPN 인터페이스를 사용 중인 다른 앱을 중지한 뒤 ‘설정’ → ‘앱’ → ‘v2rayNG’에서 강제 종료하고 다시 실행하세요.

연결 버튼을 사용할 수 있고 시스템 VPN 표시도 나타났지만 웹페이지가 열리지 않는다면 VpnService 권한은 이미 승인되었을 가능성이 큽니다. 이때는 앱 권한을 계속 초기화하지 말고 노드 유효 기간, 서버 주소, 포트, TLS 시간 검증, DNS 설정을 확인하세요. 기기 시간이 몇 분만 달라도 TLS 또는 REALITY 설정의 핸드셰이크가 실패할 수 있으므로 자동 날짜와 자동 시간대는 켜 두는 것이 좋습니다.

화면을 잠근 뒤 연결이 끊기면 배터리 최적화 제외하기

Android의 백그라운드 제한은 화면이 꺼지거나 배터리가 부족하거나 오랫동안 조작하지 않을 때 앱 활동을 줄입니다. v2rayNG 전면에 ‘연결됨’이 표시되어도 시스템이 프로세스를 영구적으로 보존한다는 뜻은 아닙니다. 화면이 켜져 있을 때는 정상인데 몇 분간 잠그면 메시지가 늦게 도착하고 클라이언트를 다시 열어야 복구된다면 노드를 자주 바꾸기보다 먼저 배터리 정책을 확인하세요.

1.10.x
이 글에서 참고한 화면 경로
10808
일반적인 로컬 SOCKS 포트
10809
일반적인 로컬 HTTP 포트
30분
화면 잠금 재테스트 권장 시간

표준 Android 경로는 보통 ‘설정’ → ‘앱’ → ‘특별한 앱 액세스’ → ‘배터리 최적화’ → ‘모든 앱’ → ‘v2rayNG’ → ‘최적화하지 않음’입니다. 일부 기기에서는 ‘설정’ → ‘앱’ → ‘v2rayNG’ → ‘배터리’에 같은 옵션이 있으며 ‘제한 없음’, ‘백그라운드 활동 허용’ 또는 ‘무제한’으로 표시될 수 있습니다. 목표는 화면을 잠근 뒤에도 클라이언트가 로컬 VPN과 원격 연결을 계속 유지하도록 허용하는 것입니다.

로컬 포트 10808과 10809는 주로 프록시를 공유하거나 로컬 프록시를 수동으로 지정할 때 사용하며, VPN 모드의 일반 앱에는 보통 포트를 입력할 필요가 없습니다. ‘설정’ → ‘로컬 포트’를 변경했다면 해당 포트를 사용하는 다른 기기나 앱도 함께 확인하세요. 포트 변경으로 시스템의 백그라운드 종료 문제가 해결되지는 않습니다.

앱별 프록시를 허용 목록 또는 제외 목록으로 설정하기

앱별 프록시는 어떤 Android 앱이 v2rayNG가 만든 가상 네트워크로 들어갈지 결정합니다. 이는 서버 라우팅과 같은 계층이 아닙니다. 앱별 프록시가 먼저 기기에서 트래픽을 v2rayNG에 넘길지 결정하고, 라우팅 규칙이 클라이언트에 들어온 트래픽을 프록시, 직접 연결 또는 차단 중 어디로 보낼지 결정합니다. 앱이 VpnService 대상에서 제외되면 이후 도메인 규칙으로는 해당 앱의 트래픽을 처리할 수 없습니다.

v2rayNG 1.10.x 계열에서는 왼쪽 메뉴의 ‘설정’ → ‘앱별 프록시’로 들어갈 수 있습니다. 일부 화면에서는 주 메뉴에 ‘앱별 프록시’가 바로 표시되지만 핵심 옵션은 앱별 프록시 활성화, 앱 선택, 우회 모드 전환입니다. 변경 후에는 연결을 중지했다가 다시 시작해야 VpnService가 새 앱 목록으로 구성됩니다.

선택한 앱만 프록시 사용

추천

목록에서 선택한 앱만 v2rayNG를 사용하고 나머지 앱은 시스템 기본 네트워크를 유지합니다. 적용 범위가 명확해 소수의 앱부터 검증하기에 좋습니다.

적합한 경우: 업무 앱, 브라우저 또는 특정 도구만 필요할 때 프록시 사용

선택한 앱 우회

대부분의 앱이 v2rayNG를 사용하고 목록에서 선택한 앱만 로컬 네트워크에 직접 연결됩니다. 새로 설치한 앱도 보통 프록시 범위에 자동으로 포함되므로 정기적으로 확인해야 합니다.

적합한 경우: 대부분의 앱은 프록시를 사용하고 결제, 로컬 네트워크 또는 다운로드 도구만 제외

모든 앱에 적용

앱별 필터링을 끄고 시스템에서 처리할 수 있는 모든 앱을 가상 네트워크에 연결한 뒤 도메인 및 IP 라우팅 규칙으로 실제 아웃바운드를 결정합니다.

적합한 경우: 통합 라우팅이 필요하고 전체 규칙을 관리할 수 있는 기기

  1. 설정으로 이동

    왼쪽 메뉴를 열고 ‘설정’ → ‘앱별 프록시’로 이동한 뒤 ‘앱별 프록시 사용’을 켭니다.

  2. 방향 결정

    프록시가 필요한 앱이 소수라면 ‘우회 모드’를 끄고, 대부분의 앱에 프록시가 필요하다면 ‘우회 모드’를 켜 선택한 앱이 직접 연결되도록 합니다.

  3. 앱 선택

    앱 이름을 기준으로 대상을 선택하세요. 시스템 구성 요소가 익숙하지 않다면 푸시 알림, 네트워크 인증 또는 로컬 네트워크 검색에 영향을 줄 수 있으므로 여러 앱을 한꺼번에 선택하지 않는 것이 좋습니다.

  4. 연결 재시작

    메인 화면으로 돌아가 연결 버튼을 눌러 먼저 중지한 다음 다시 연결하세요. 데스크톱으로만 돌아가 재연결하지 않으면 기존 VpnService의 앱 범위가 계속 적용될 수 있습니다.

  5. 항목별 검증

    프록시를 사용해야 하는 앱과 직접 연결해야 하는 앱을 각각 하나씩 열고 외부 IP, 로딩 결과, v2rayNG 로그를 비교해 라우팅 방향을 확인하세요.

허용 목록 방식은 문제를 찾기 쉽습니다. 먼저 브라우저 하나만 선택해 노드 연결, DNS, 웹페이지 접속이 모두 정상인지 확인한 뒤 다른 앱을 하나씩 추가하세요. 한 번에 수십 개를 선택하면 문제가 생겼을 때 앱 자체 제한인지, 라우팅 규칙인지, 백그라운드 정책인지 구분하기 어렵습니다.

구독·라우팅·DNS는 계층별로 확인하기

구독 링크는 서버 설정을 일괄 제공하며 보통 주소, 포트, 사용자 식별자, 전송 방식, TLS 매개변수를 포함합니다. Android의 배터리 권한을 자동으로 설정해 주지는 않으며 현재 네트워크에 맞는 로컬 도메인 라우팅을 반드시 포함하는 것도 아닙니다. 구독 업데이트 후 노드 이름이 바뀌는 것은 정상이며, 구독 노드를 수동으로 수정한 값은 다음 업데이트에서 덮어써질 수 있습니다.

v2rayNG는 Xray 코어로 VMess, VLESS 등의 설정을 처리합니다. VLESS, REALITY 또는 다른 조합을 선택할 때는 포트, 전송 방식, Server Name, 공개 키, Short ID를 포함한 클라이언트 매개변수가 서버와 정확히 일치해야 합니다. 연결 테스트가 시간 초과되면 먼저 서버 연결 가능 여부를 확인하고, 로그에 핸드셰이크 오류가 나타나면 TLS 또는 REALITY 매개변수를 다시 확인하세요.

확인할 계층 주요 역할 일반적인 증상 우선 조치
구독 및 노드 서버 주소, 포트, 프로토콜 매개변수 제공 모든 노드가 시간 초과되거나 특정 노드의 핸드셰이크 실패 구독을 업데이트하고 기기 시간을 확인한 뒤 여러 노드 테스트
VpnService 앱 트래픽을 v2rayNG로 전달 시작할 수 없거나 즉시 중지되거나 다른 VPN과 충돌 인터페이스를 사용 중인 앱을 연결 해제하고 다시 권한 승인
앱별 프록시 어떤 앱을 가상 네트워크에 연결할지 결정 브라우저는 되지만 특정 앱은 계속 직접 연결 우회 방향을 확인하고 앱을 선택한 뒤 재연결
라우팅 규칙 처리된 트래픽을 프록시, 직접 연결 또는 차단 중 어디로 보낼지 결정 일부 도메인의 외부 연결 방향이 예상과 다름 현재 라우팅 모드와 규칙 순서 확인
DNS 도메인을 주소로 해석하고 라우팅과 연계 서버에는 연결되지만 도메인 페이지가 열리지 않음 신뢰할 수 있는 DNS로 전환하고 도메인 및 IP 규칙의 일치 여부 확인

DNS와 라우팅은 같은 분류 기준을 유지해야 합니다. 예를 들어 특정 도메인이 직접 연결로 지정되어도 현재 네트워크에 적합하지 않은 상위 DNS에서 해석되면 연결이 느리거나 접속에 실패할 수 있습니다. 반대로 도메인이 먼저 IP로 해석된 뒤 규칙이 도메인만 대상으로 하면 실제 매칭이 IP에서 이루어져 아웃바운드 방향이 달라질 수 있습니다. 문제를 확인할 때는 먼저 기본 설정으로 노드를 검증한 뒤 사용자 지정 DNS와 라우팅을 하나씩 되돌리는 편이 여러 옵션을 동시에 바꾸는 것보다 효율적입니다.

로그로 연결은 성공했지만 접속할 수 없는 원인 찾기

‘연결됨’은 Android가 로컬 VpnService를 설정했다는 뜻일 뿐 원격 노드의 핸드셰이크 성공을 보장하지 않습니다. 먼저 클라이언트가 실행되었는지 확인하고, 다음으로 노드 연결 여부를 점검한 뒤, 마지막으로 해당 앱이 프록시 범위에 포함되었는지 확인하세요. 이 세 계층을 섞으면 권한을 반복 승인하거나 구독을 다시 가져오면서도 실제 원인은 해결하지 못할 수 있습니다.

연결을 눌러도 시스템 권한 창이 나타나지 않나요?

먼저 ‘설정’ → ‘네트워크 및 인터넷’ → ‘VPN’에서 기존 연결을 끊은 다음 ‘설정’ → ‘앱’ → ‘v2rayNG’에서 강제 종료를 실행하세요. 클라이언트를 다시 열고 연결을 누르면 시스템에 연결 요청이 다시 표시됩니다.

화면을 잠근 지 10여 분 만에 메시지를 받지 못하나요?

‘설정’ → ‘앱’ → ‘v2rayNG’ → ‘배터리’에서 ‘제한 없음’을 선택하고, ‘특별한 앱 액세스’ → ‘배터리 최적화’에서도 ‘최적화하지 않음’으로 설정하세요. 연결을 유지한 채 30분 동안 화면 잠금 테스트를 진행합니다.

브라우저는 되는데 다른 앱은 안 되나요?

‘설정’ → ‘앱별 프록시’에서 우회 모드를 확인하세요. 선택한 앱만 프록시를 사용하는 방식이라면 대상 앱이 선택되어 있는지 확인하고, 변경 후 반드시 연결을 중지했다가 다시 연결해야 합니다.

구독을 업데이트한 뒤 모든 노드가 시간 초과되나요?

먼저 Wi-Fi와 모바일 네트워크에서 각각 한 번씩 테스트한 뒤 자동 날짜와 시간대를 확인하세요. 두 네트워크에서 여러 노드가 모두 시간 초과되면 구독이 아직 유효한지, 서버 주소와 포트가 변경되지 않았는지 점검합니다.

연결됨으로 표시되지만 모든 도메인이 열리지 않나요?

먼저 접속 가능한 IP 서비스를 열어 DNS 문제인지 구분한 다음 v2rayNG 기본 DNS 설정으로 되돌려 테스트하세요. 정상으로 돌아오면 사용자 지정 DNS, 도메인 규칙, IP 규칙의 매칭 방향을 하나씩 확인합니다.

로그 메뉴는 보통 메인 화면 오른쪽 위 메뉴의 ‘로그 보기’에 있습니다. 시작 실패, 연결 시간 초과, 연결 거부, TLS 핸드셰이크 실패, DNS 조회 실패 같은 키워드만 확인하면 되며 모든 줄을 해석할 필요는 없습니다. 시간 초과는 제한 시간 안에 유효한 응답을 받지 못했다는 뜻이고, 연결 거부는 대개 서버 포트가 수신 대기 중이 아님을 가리킵니다. 핸드셰이크 실패가 나타나면 프로토콜과 암호화 매개변수를 우선 확인하세요.

  1. 1차: 사용자 지정 라우팅과 사용자 지정 DNS를 끄고, 정상 작동이 확인된 노드 하나만 남겨 기본 연결을 확인합니다.
  2. 2차: 대상 앱 하나에만 앱별 프록시를 활성화해 VpnService 적용 범위를 확인합니다.
  3. 3차: 배터리 설정을 복원하고 화면 잠금 테스트를 진행해 백그라운드 프로세스가 종료되는지 확인합니다.
  4. 4차: DNS, 라우팅, 구독 그룹 설정을 하나씩 복원하며 매번 변수 하나만 변경합니다.

일상적인 사용 점검 순서

v2rayNG를 안정적으로 사용하는 핵심은 매개변수를 자주 바꾸는 것이 아니라 일정한 점검 순서를 지키는 것입니다. 처음 설치하면 VpnService 권한을 승인하고, 이어서 배터리 최적화와 백그라운드 활동을 설정한 다음 앱별 프록시를 구성하세요. 노드 프로토콜, DNS, 라우팅은 시스템 권한을 확인한 뒤 점검합니다. 이렇게 하면 문제가 생겼을 때 원인이 Android인지 클라이언트인지 서버 설정인지 빠르게 판단할 수 있습니다.

클라이언트 다운로드 Windows, macOS, Android, Linux 버전 확인