이 글은 Shadowrocket에 직접 준비한 서버나 구독을 가져왔지만 연결을 켠 뒤에도 웹페이지에 접속할 수 없는 경우에 유용합니다. 기본 네트워크를 확인하고, 선택한 서버를 점검한 다음, Global Routing 모드와 DNS, 규칙 및 자동 연결 조건을 차례로 살펴보세요. 한 번에 하나씩만 변경하고 같은 대상으로 다시 테스트해야 ‘터널이 시작된 상태’와 ‘요청이 정상 처리된 상태’를 구분할 수 있습니다.
1. 먼저 문제 범위를 확인하고 연결 스위치를 정상 연결의 증거로 여기지 마세요
Home의 연결 스위치와 시스템 VPN 상태는 터널이 시작됐다는 뜻일 뿐, 원격 서버에 연결할 수 있거나 인증 정보가 유효하다거나 모든 웹사이트가 정상 응답한다는 뜻은 아닙니다. 브라우저가 계속 기다리는 경우, 서버를 찾을 수 없다는 메시지가 바로 표시되는 경우, 특정 웹사이트만 실패하는 경우는 서로 다른 문제이므로 모두 서버 장애로 단정할 수 없습니다.
먼저 자동 연결의 영향을 잠시 중단한 뒤 연결을 끈 상태와 켠 상태를 비교하세요. 연결을 꺼도 일반 웹페이지에 접속할 수 없다면 Wi-Fi, 셀룰러 데이터 또는 현재 네트워크의 로그인 인증부터 해결해야 합니다. 이때 규칙을 반복해서 업데이트해도 대개 도움이 되지 않습니다. 공용 Wi-Fi에서 네트워크 로그인이 필요하다면 먼저 인증을 마친 뒤 테스트하세요.
-
자동 연결 잠시 중단
Settings → On Demand로 이동해 현재 설정을 기록한 뒤, On Demand 연결을 잠시 끄고 Home으로 돌아가 연결 스위치를 끄세요. 수동으로 연결을 끊은 직후 자동으로 다시 연결되어 비교 결과가 왜곡되는 일을 방지할 수 있습니다.
-
기본 네트워크 확인
브라우저에서 평소 접속할 수 있는 웹페이지를 열어 현재 Wi-Fi 또는 셀룰러 데이터가 작동하는지 확인하세요. 원래 직접 접속할 수 없는 주소 하나만으로 판단하지 마세요.
-
선택 항목 확인
Home에서 선택 표시가 있는 서버를 확인하고 이름과 프로토콜을 기록하세요. 목록에 서버가 있다고 해서 현재 그 서버가 선택되어 있다는 뜻은 아닙니다.
-
연결 테스트 실행
연결을 켜고 Home → Connectivity Test를 실행한 뒤 테스트 방식과 결과를 기록하세요. 테스트에 성공하면 이전에 열리지 않던 웹페이지에도 접속해 보세요. 테스트 요청과 웹페이지 요청은 서로 다른 요청입니다.
-
재테스트 조건 고정
네트워크 종류, 현재 Global Routing 모드, 테스트 대상, 오류 문구를 기록하세요. 이후에는 한 번에 한 항목만 변경하고 같은 주소로 다시 테스트한 뒤 변경 사항을 유지할지 결정하세요.
2. 서버 설정과 구독 상태 확인
서버 주소, 포트, 프로토콜, 인증 정보는 하나의 유효한 설정으로 일치해야 합니다. 먼저 Home에서 현재 서버의 편집 화면을 열고 서비스 제공업체에서 받은 원본 정보와 항목별로 대조하세요. 연결을 시도해 보겠다고 모든 포트를 443으로 바꾸거나 서로 다른 프로토콜의 입력값을 뒤섞지 마세요.
- 주소와 포트: 주소 입력란에 경로, 공백 또는 구독 링크 전체를 넣지 마세요. 포트는 서버의 수신 설정과 일치해야 합니다. 웹사이트가 HTTPS를 사용한다는 이유만으로 프록시도 443 포트를 사용한다고 추정해서는 안 됩니다.
- Shadowsocks: 암호화 방식과 비밀번호를 확인하세요. 주소와 포트가 정확해도 유효한 프록시 연결이 성립하지 않을 수 있습니다.
- VMess / VLESS: UUID, 전송 방식 및 해당하는 Host, Path, TLS 설정을 확인하세요. 전송 계층 설정이 일치하지 않으면 연결 시간 초과나 핸드셰이크 실패가 발생할 수 있습니다.
- Trojan: 비밀번호, TLS, 서버 이름을 확인하세요. 인증서 검증이나 핸드셰이크에 사용되는 서버 이름을 인증서와 관계없는 값으로 임의 변경하지 마세요.
- Hysteria2 / WireGuard: 현재 네트워크에서 UDP에 접속할 수 있는지도 확인하세요. TCP 테스트에 성공해도 UDP 경로나 프로토콜 인증이 정상이라는 뜻은 아닙니다.
서버 항목이 구독에서 생성됐다면 먼저 해당 구독을 업데이트한 다음 서버가 삭제, 이름 변경 또는 교체됐는지 확인하세요. 구독은 서비스 제공업체에서 받아야 합니다. 업데이트에 실패했다는 사실만으로 이미 가져온 서버가 모두 작동하지 않는다고 볼 수는 없습니다. 업데이트에 성공해도 각 서버의 연결이 검증된 것은 아닙니다.
클라이언트 일회성 구매 ≠ 회선 요금제. Shadowrocket은 유료 상용 앱이며, 앱을 구매해도 서비스 제공업체 계정이 자동으로 생성되거나 서비스 이용량이 충전되거나 구독 기간이 연장되지는 않습니다. 계정 상태와 서버 점검 여부는 이용 중인 서비스 제공업체에 확인하세요.
3. Global Routing 모드와 규칙 문제 구분
Home → Global Routing에서 현재 모드를 확인하세요. Config는 현재 활성화된 설정을 사용해 규칙에 따라 트래픽을 라우팅합니다. Proxy는 모든 트래픽을 프록시로 보내는 비교 테스트에, Direct는 모두 직접 연결하는 비교 테스트에 사용합니다. Scene을 사용 중이라면 선택한 Scene의 설정도 확인하세요. Scene 이름만으로 실제 트래픽 경로를 판단할 수 없습니다. 아래 세 가지는 이번 문제를 진단하기 위한 비교 조건이며, 전체 모드 목록은 아닙니다.
| 비교 설정 | 확인할 현상 | 다음 확인 항목 |
|---|---|---|
| Direct | 원래 직접 접속할 수 있던 웹페이지도 열리지 않음 | 기본 네트워크, DNS, 터널 안에서 계속 적용되는 관련 설정 |
| Proxy | 여러 테스트 대상에서 모두 실패 | 선택한 서버, 인증, 전송 설정, 네트워크 연결 가능 여부 |
| Proxy와 Config | 같은 대상이 Proxy에서는 열리지만 Config에서는 열리지 않음 | 적용된 규칙, 정책의 대상, 현재 활성화된 설정, DNS 차이 |
| Config | 일부 도메인만 접속 실패 | 해당 도메인과 관련 도메인에 적용된 규칙을 확인하고, 설정 전체를 먼저 바꾸지 마세요. |
비교 테스트에서는 같은 서버, 네트워크, 주소를 유지해야 합니다. 모드를 바꾸면서 서버까지 교체하면 웹페이지가 다시 열려도 어떤 변경이 원인이었는지 알 수 없습니다. 모드를 전환한 뒤 요청을 새로 보내세요. 이미 열린 연결은 이전 경로를 계속 사용할 수 있으므로 필요한 경우 테스트 페이지를 닫았다가 다시 여세요.
4. DNS 확인: 도메인 조회 실패와 연결 실패 구분
DNS는 도메인 이름을 주소로 변환합니다. 이름 조회에 실패하면 연결이 대상 서버에 도달하기도 전에 중단될 수 있습니다. 이름 조회에 성공해도 연결, TLS 또는 앱 응답 단계에서 실패할 수 있습니다. 서버 주소 자체가 도메인 이름이라면 해당 주소의 조회도 연결 경로에 포함되므로 DNS 문제로 프록시 서버에 연결하지 못하는 경우도 있습니다.
이 흐름은 점검 단계를 나누어 설명하기 위한 것으로, 모든 요청이 반드시 이 순서로 처리된다는 뜻은 아닙니다. 일부 도메인 규칙은 먼저 적용될 수 있고, 주소 기반 규칙은 조회 결과가 필요할 수 있으며, 원격 조회를 사용하면 조회 위치가 달라질 수 있습니다. 문제를 진단할 때는 흐름도만 보고 앱의 동작을 추정하지 말고 실제 요청 기록을 확인하세요.
- 설정 출처 확인: Config에서 현재 활성화된 설정을 확인하고 DNS 관련 항목을 살펴보세요. Settings에서 관련 옵션을 변경한 적이 있다면 그 변경 사항도 기록하세요. 설정 파일, 리졸버, 서버를 한꺼번에 바꾸지 마세요.
- 리졸버 연결 확인: 사용자 지정 DNS 주소는 예상한 경로를 통해 접속할 수 있어야 합니다. DoH가 443 포트를 사용하더라도 도메인 조회, TLS 또는 연결 경로 문제로 실패할 수 있습니다.
- 기존 값으로 되돌리기: DNS를 변경한 직후 문제가 발생했다면 검증되지 않은 리졸버를 여러 개 추가하지 말고 기록해 둔 원래 값으로 복원한 뒤 다시 테스트하세요.
- IPv4와 IPv6 구분: 도메인에 AAAA 레코드가 있지만 현재 네트워크의 IPv6 경로에 문제가 있으면 일부 대상에서 연결이 오래 지연되거나 실패할 수 있습니다. 실제 연결 주소를 확인하고, 모든 시간 초과를 IPv6 문제로 단정하지 마세요.
HTTPS가 정상인지 확인하는 유일한 방법으로 브라우저 주소창에 웹사이트 IP를 직접 입력하지 마세요. HTTPS는 대개 도메인에 해당하는 인증서와 서버 이름을 사용하므로 IP로 접속하면 인증서 오류가 발생하거나 다른 사이트가 열릴 수 있습니다. 원래 도메인을 유지한 채 조회 결과, 연결 주소, 핸드셰이크 결과를 각각 확인하는 편이 더 정확합니다.
5. Config 규칙 순서와 실제 정책 확인
Proxy에서는 접속되지만 Config에서는 접속되지 않는다면 저장된 파일 목록만 보지 말고 Config에서 실제로 활성화된 규칙부터 확인하세요. 일반적으로 규칙은 순서대로 적용되며 먼저 일치한 규칙이 정책을 결정합니다. 앞쪽 규칙의 범위가 너무 넓으면 뒤에 있는 세부 규칙이 적용되지 않을 수 있습니다. FINAL은 기본 규칙이므로 최종적으로 어떤 정책을 가리키는지 확인하세요.
[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
위 내용은 문법 설명용 예시이며 기존 설정을 그대로 덮어쓸 수 있는 완전한 파일이 아닙니다. example.com과 192.0.2.0/24는 문서용 예시입니다. PROXY가 실제로 가리키는 대상은 사용 중인 설정에서 확인하세요. 예시의 정책 이름을 이미 연결이 검증된 서버로 간주하지 마세요.
- DOMAIN-SUFFIX: 도메인 접미사로 일치 여부를 확인합니다. 예시 규칙은 example.com과 하위 도메인을 포함하지만 웹페이지는 다른 도메인의 이미지, 스크립트, 로그인 인터페이스도 요청할 수 있습니다.
- IP-CIDR: IP 주소 대역을 기준으로 일치 여부를 확인합니다. 예시의 no-resolve는 이 주소 규칙을 위해 도메인 조회를 별도로 시작하지 않도록 하는 설정이며, 앱 전체의 DNS를 끄는 것은 아닙니다.
- GEOIP: IP의 지리적 위치 데이터로 일치 여부를 판단합니다. 웹페이지 언어, 도메인 접미사 또는 웹사이트 운영자의 소재지를 기준으로 하지 않습니다.
- FINAL: 앞선 규칙에 일치하지 않은 트래픽을 처리합니다. 사용할 수 없는 정책을 가리키면 앞선 규칙에 해당하지 않는 요청이 한꺼번에 실패할 수 있습니다.
실패한 요청을 한 번 재현한 뒤 확인 가능한 요청 기록이나 로그에서 도메인, 적용된 규칙, 최종 정책, 오류를 확인하세요. 홈페이지는 열리지만 로그인이 실패한다면 로그인 인터페이스의 도메인을 따로 살펴보세요. 페이지의 글자는 표시되지만 이미지가 로드되지 않는다면 이미지 요청을 확인하세요. 웹페이지 하나도 여러 연결로 구성되므로 요청 하나의 성공만으로 페이지 전체가 정상이라고 판단할 수 없습니다.
6. 오류 문구를 확인하고 한 단어만으로 원인을 단정하지 마세요
다음은 네트워크 로그에서 자주 볼 수 있는 오류 문구의 예시입니다. 모든 문제가 이 문구를 표시하는 것은 아니며, 화면에 항상 같은 방식으로 나타나는 것도 아닙니다. 실제로 표시된 전체 문구와 주변 기록을 저장하고, 실패한 대상이 프록시 서버인지 DNS 리졸버인지 웹사이트인지 확인한 뒤 해당 항목을 점검하세요.
오류: connection refused
원인: 해당 연결이 명시적으로 거부된 상태입니다. 포트에서 연결을 수신하지 않거나 접속이 차단된 경우에 흔히 발생합니다. 해결: 오류에 표시된 주소와 포트를 확인한 뒤 서비스 제공업체에 서버의 수신 상태를 문의하세요. 비밀번호 오류라고 바로 단정하지 마세요.
오류: i/o timeout
원인: 작업 단계 중 하나가 제한 시간 안에 완료되지 않았습니다. 네트워크 패킷 손실, 서버 응답 없음 또는 후속 연결 정체가 원인일 수 있습니다. 해결: 먼저 시간 초과가 발생한 단계를 파악한 뒤 같은 서버와 대상을 사용해 Wi-Fi와 셀룰러 데이터를 비교하세요.
오류: no such host
원인: 해당 도메인을 사용할 수 있는 주소로 조회하지 못했습니다. 주소 입력 오류 또는 DNS 문제가 원인일 수 있습니다. 해결: 오류에 표시된 전체 도메인을 확인하고 서버, 리졸버, 대상 웹사이트 중 어디에 해당하는지 파악한 뒤 관련 DNS 경로를 점검하세요.
오류: certificate has expired or is not yet valid
원인: 인증서 유효 기간이 현재 시간과 맞지 않습니다. 원격 인증서가 만료됐거나 기기 시간이 잘못됐을 수 있습니다. 해결: 기기의 날짜와 시간, 서버 이름을 확인하세요. 원격 인증서에 문제가 있다면 해당 운영 주체가 처리해야 합니다. 인증서 검증을 끄는 방법을 일반적인 해결책으로 사용하지 마세요.
명확한 오류 문구가 없다면 최소한의 재현 기록을 남겨도 됩니다. 사용한 네트워크, 선택한 프로토콜, Global Routing 모드, Connectivity Test 방식, 실패한 대상, 연결을 끈 뒤 복구됐는지를 기록하세요. 기록을 공유하기 전에 비밀번호, UUID, 개인 키, 구독 링크의 token을 삭제하고 인증 정보가 포함된 전체 설정은 공개하지 마세요.
7. 다시 테스트하고 On Demand를 원래대로 복원하세요
접속이 복구되면 먼저 현재 네트워크에서 다시 확인하고 다른 네트워크로 전환해 테스트하세요. 셀룰러 데이터에서는 성공하지만 Wi-Fi에서는 실패한다면 해당 Wi-Fi의 접속 조건을 추가로 살펴봐야 합니다. 특정 서버 하나에서만 실패한다면 그 서버의 설정이나 상태에 집중하세요. 이런 결과는 ‘한 번 껐다 켜니 해결됐다’는 것보다 이후 원인을 찾는 데 도움이 됩니다.
- 평소 사용할 Global Routing 모드를 복원하고 현재 활성화된 Config와 선택한 서버가 올바른지 확인하세요.
- 일반 웹페이지, 이전에 실패한 대상, 해당 대상의 로그인 및 리소스 로드를 각각 확인하세요. 홈페이지 하나만 테스트하고 끝내지 마세요.
- Settings → On Demand로 이동해 원래 설정대로 On Demand 연결을 복원하세요. 네트워크를 바꾼 뒤 의도하지 않은 재연결이나 모드 변경이 발생하는지도 확인하세요.
- 마지막으로 효과가 있었던 변경 사항과 해결되지 않은 현상을 기록하세요. 서비스 제공업체의 도움이 필요하다면 민감 정보를 가린 오류 내용과 재현 단계를 전달하고, 여러 설정을 무작위로 계속 변경하지 마세요.
앱의 출처를 확인하려면 Shadowrocket이 Apple 플랫폼에서만 제공되며 주로 iPhone과 iPad에서 사용할 수 있다는 점을 확인하세요. 유일한 구매 경로는 App Store입니다. 개발자는 Shadow Launch Technology Limited이며 앱은 일회성 구매 방식입니다. 시스템 요구 사항은 App Store 페이지를 기준으로 확인하세요. 앱을 다시 받는 것으로 서버, DNS, 규칙 문제가 해결되지는 않으므로 작업 전에 개인 설정을 안전하게 보관하세요.