이 글은 세 가지를 다룹니다. 수동 업데이트의 두 진입점(Home 당겨서 새로고침, 구독 상세 페이지의 Update), Settings → Subscribe에 있는 Update on Open과 Update via Proxy 두 스위치의 역할 범위, 그리고 업데이트 실패 시 '네트워크 → 링크 → 콘텐츠' 순서로 항목별 검증하는 방법입니다. 이미 서비스 제공업체에서 구독 링크를 받았지만 업데이트가 될 때와 안 될 때가 있는 사용자에게 적합합니다.
구독이 저장되는 위치: Subscribe 항목과 Config의 차이
구독 링크는 서비스 제공업체가 제공하며, 보통 token이 포함된 주소로 https://example.com/sub?token=xxxx 형태입니다(도메인과 token은 모두 예시 값이므로 자신의 서비스 제공업체가 알려준 주소로 바꿔 주세요). Shadowrocket에서는 이것을 Subscribe 유형의 항목으로 추가합니다. 하단 탭 바에서 Home으로 이동해 오른쪽 위 '+'를 누르고, Type을 Subscribe로 선택한 뒤 링크를 붙여넣고 저장합니다.
저장이 끝나면 Home 목록에 이 구독이 나타나고, 펼치면 서비스 제공업체가 내려준 노드를 볼 수 있습니다. 이른바 '구독 업데이트'란 이 주소로 다시 한 번 요청을 보내 반환된 노드 목록을 로컬에 통째로 교체하는 것입니다. 링크 자체는 바뀌지 않고, 내용은 서비스 제공업체가 현재 내려주는 값을 따릅니다.
| 비교 항목 | Subscribe(구독) | Config(구성) |
|---|---|---|
| 포함 내용 | 서비스 제공업체가 내려주는 노드 목록 | 규칙 및 라우팅 구성(DOMAIN-SUFFIX / GEOIP / IP-CIDR / FINAL) |
| 추가 방법 | Home 오른쪽 위 '+' → Type에서 Subscribe 선택 | Config 탭 → 오른쪽 위 '+'에서 링크 입력 또는 텍스트 붙여넣기 |
| 업데이트 방식 | Home 당겨서 새로고침 또는 구독 상세 페이지에서 Update 누르기 | Config 목록 당겨서 새로고침 |
| 업데이트 후 변화 | 노드 이름·개수·파라미터가 서비스 제공업체의 현재 배포 값으로 덮어써짐 | 규칙 집합 전체가 교체됨 |
Config와 Subscribe는 서로 독립된 경로입니다. Config는 규칙 구성 파일로, DOMAIN-SUFFIX, GEOIP, IP-CIDR, FINAL 같은 키워드가 그 안에 들어갑니다. Subscribe는 노드만 담습니다. 구독을 업데이트해도 규칙 파일이 함께 업데이트되지 않으며, 그 반대도 마찬가지입니다. '노드는 바뀌었는데 라우팅은 그대로'인 상황이라면 둘 중 하나만 업데이트한 것이 아닌지 먼저 확인하세요.
구독 링크, 노드, 트래픽은 모두 서비스 제공업체에서 제공합니다. Shadowrocket은 App Store에서 1회 구매로 사용하는 클라이언트이며, 구매 대상은 클라이언트 자체일 뿐 어떤 회선이나 구독도 포함하지 않습니다.
수동 업데이트: Home 당겨서 새로고침과 상세 페이지 Update
수동 업데이트에는 두 가지 진입점이 있고 효과는 같습니다. 둘 다 구독 주소로 요청을 다시 보내는 방식으로, 전체 목록을 새로 고칠 때는 Home에서 당겨서 새로고침, 한 항목만 새로 고칠 때는 구독 상세 페이지의 Update를 사용합니다. 아래는 실제 조작 순서대로 정리했습니다.
Home 목록으로 이동
하단 탭 바에서 Home으로 이동해 목록에 Subscribe 항목이 있는지 확인합니다. 없다면 오른쪽 위 '+'를 눌러 Type을 Subscribe로 선택하고 구독 링크를 붙여넣습니다.
당겨서 구독 새로고침
목록을 맨 위까지 스크롤한 뒤 아래로 당기면 손을 떼는 순간 업데이트가 시작되고, 항목 오른쪽에 새로고침 상태가 표시되었다가 완료되면 사라집니다.
상세 페이지에서 Update 누르기
Subscribe 항목을 눌러 들어간 상세 페이지에서 Update를 누르면 이 구독만 업데이트되며 목록의 다른 항목에는 영향을 주지 않습니다.
노드 개수 확인
항목을 펼쳐 노드 개수를 서비스 제공업체가 알려준 개수와 대조합니다. 개수가 맞지 않으면 이번에 가져온 내용이 불완전하다는 뜻입니다.
노드 선택 후 연결
노드를 하나 선택하고 상단 연결 스위치를 켭니다. 처음 연결할 때는 VPN 구성 승인 팝업이 뜨며, 허용한 뒤 Home으로 돌아와 상태가 Connected인지 확인합니다.
업데이트는 증분 병합이 아니라 전체 교체입니다. 서비스 제공업체가 삭제한 노드는 목록에서 사라지고, 이 구독 아래에서 수정한 메모, 포트(예: 443), 암호화 방식은 다음 업데이트 때 배포 값으로 덮어써집니다. 오래 유지해야 하는 사용자 지정 파라미터는 구독 항목을 직접 수정하지 말고 수동으로 추가한 노드로 복사해 두는 것을 권합니다. 또한 업데이트할 때 이 구독의 노드에 연결 중이라면 현재 연결이 끊길 수 있으므로, 연결 스위치를 먼저 끄고 업데이트하는 편이 안전합니다.
결론: '가져오지 못함'과 '가져왔지만 내용이 다름'을 먼저 구분하기
목록이 전혀 바뀌지 않고 오류가 뜨면 가져오지 못한 경우이므로 네트워크와 링크를 확인합니다. 노드 개수가 줄거나 이름이 의미 없는 문자열·안내 문구로 바뀌면 가져왔지만 내용이 다른 경우이므로 서비스 제공업체에 구독 상태를 확인합니다. 두 경우는 대응이 전혀 다르므로 뒤섞어 시도하면 시간만 낭비됩니다.
앱 실행 시 자동 업데이트: Settings → Subscribe의 두 스위치
매번 직접 당겨서 새로고침하기 번거롭다면 자동 업데이트에 맡길 수 있습니다. 진입점은 하단 탭 바의 마지막 항목인 Settings이며, Subscribe 그룹을 펼치면 업데이트와 직접 관련된 두 스위치가 있습니다(아래는 영어 항목명 기준이고, 버전에 따라 문구가 조금 다를 수 있으니 기기에 실제 표시되는 값을 기준으로 하세요).
- Update on Open(실행 시 업데이트): 켜면 Shadowrocket을 실행할 때마다, 또는 백그라운드에서 포그라운드로 전환할 때마다 모든 구독 주소로 업데이트 요청을 자동으로 보냅니다.
- Update via Proxy(프록시를 통한 업데이트): 켜면 구독 요청이 현재 연결된 프록시 경로를 통해 나갑니다. 구독 도메인이 현재 네트워크에서 접근 불가지만 사용할 수 있는 노드가 이미 있을 때 적합합니다.
선택 기준: 구독 도메인이 현재 네트워크에서 직접 연결되는 경우에는 Update on Open만 켜면 충분합니다. 업데이트 요청이 노드를 거치지 않아 회선 트래픽도 쓰지 않습니다. 구독 도메인이 현재 네트워크에서 차단된 경우에만 Update via Proxy를 추가로 켭니다. 참고로 Update on Open의 트리거는 '앱을 열 때'이며, iOS는 앱이 백그라운드에서 시간 단위로 주기적 통신을 하도록 허용하지 않으므로 구독의 최신 상태는 Shadowrocket을 얼마나 자주 여는지에 달려 있습니다. 업데이트가 실패해도 목록에는 마지막으로 성공한 내용이 그대로 남아 비어 버리지 않습니다.
결론: Update via Proxy는 비상용 스위치
이 스위치를 켜면 구독 업데이트가 현재 프록시 경로에 의존합니다. 노드가 정상이면 업데이트도 원활하지만, 노드 자체에 문제가 있으면 업데이트도 함께 실패하며 오류 메시지는 일반 네트워크 장애와 똑같이 보입니다. 평소에는 꺼 두고, 구독 도메인에 접근할 수 없음이 확인될 때만 임시로 켰다가 업데이트가 끝나면 다시 끄면 문제를 찾을 때 변수를 하나 줄일 수 있습니다.
업데이트 실패 점검 순서: 네트워크부터 콘텐츠까지
문제 해결은 재시도를 반복하는 것으로 시작하지 말고 정해진 순서대로 확인합니다. 네트워크 도달 가능 여부 → 링크 유효성 → 반환 내용이 구독인지 여부 순입니다. 오류 문구 자체가 분류 기준이 됩니다. 영어 문구는 대부분 시스템 네트워크 계층에서 오므로, 원인을 추측하기보다 라벨처럼 활용하는 편이 빠릅니다.
- 네트워크 전환: Wi-Fi와 셀룰러를 한 번씩 바꿔 현재 네트워크가 구독 도메인을 차단하는지 확인합니다.
- 링크 확인: 구독 링크를 그대로 브라우저 주소창에 붙여 열어, 반환되는 것이 노드 목록 텍스트인지 웹페이지·로그인 페이지·오류 메시지인지 확인합니다.
- 프록시 경유 업데이트: 사용할 수 있는 노드가 있다면 먼저 노드에 연결한 뒤 Settings → Subscribe의 Update via Proxy를 켜고 한 번 업데이트합니다.
- 서비스 제공업체 문의: 위 항목이 모두 정상인데도 실패한다면 오류 문구 원문과 구독 링크의 도메인을 함께 서비스 제공업체에 보내 구독 만료 여부, 도메인 변경 여부를 확인합니다.
오류: The Internet connection appears to be offline.
원인과 해결: 기기에 사용할 수 있는 시스템 네트워크가 없는 상태입니다. 비행기 모드가 꺼지지 않았거나, Wi-Fi가 연결되지 않았거나, 셀룰러 데이터가 꺼져 있을 수 있습니다. 먼저 시스템 네트워크를 복구한 뒤 업데이트하세요. 구독 도메인만 접근 불가이고 노드는 사용할 수 있다면 Settings → Subscribe에서 Update via Proxy를 켠 뒤 다시 시도해 보세요.
오류: A server with the specified hostname could not be found.
원인과 해결: 구독 주소의 도메인 확인(DNS 조회)에 실패한 경우입니다. 링크의 도메인 철자 오류, 도메인 사용 중단, 로컬 DNS 이상에서 흔히 나타납니다. 링크의 도메인을 한 글자씩 대조하고, Wi-Fi와 셀룰러를 한 번씩 바꿔 보세요. 그래도 실패하면 서비스 제공업체에 도메인이 변경되었는지 확인하세요.
오류: The request timed out.
원인과 해결: 요청은 나갔지만 제한 시간 안에 응답을 받지 못한 경우로, 보통 구독 도메인이 현재 네트워크에서 속도 제한을 받거나 차단된 상태입니다. 사용할 수 있는 노드에 먼저 연결하고 Update via Proxy를 켜서 업데이트해 보세요. 다른 네트워크 환경에서 다시 시도하는 것도 효과적입니다.
오류: The certificate for this server is invalid.
원인과 해결: 구독 주소의 HTTPS 인증서를 시스템이 신뢰하지 못하는 경우입니다. 인증서가 만료되었거나 자체 서명 인증서이거나, 요청이 중간에서 바뀌었을 수 있습니다. 인증서 경고를 무시하고 계속 사용하지 말고, 먼저 서비스 제공업체에 인증서 상태를 확인하거나 인증서가 유효한 구독 주소를 요청하세요.
오류: Failed to load subscription
원인과 해결: 요청은 성공했지만 반환된 내용이 올바른 구독 형식이 아닌 경우입니다. 웹페이지, 로그인 페이지, 만료 안내가 반환되는 일이 흔합니다. 링크를 브라우저에 붙여 반환 내용을 확인하고, 링크에 token이 온전히 포함되어 있는지, 구독이 아직 유효 기간 내인지 서비스 제공업체에 확인하세요.
오류가 전혀 없는데 목록이 계속 그대로라면, 먼저 당겨서 새로고침 동작이 실제로 실행되었는지(목록을 맨 위까지 스크롤한 뒤 당겨야 합니다) 확인하고, 다음으로 다른 구독을 업데이트한 것은 아닌지 확인하세요. Home에는 여러 개의 Subscribe 항목이 동시에 존재할 수 있으며, 당겨서 새로고침은 모두를 함께 업데이트하지만 상세 페이지의 Update는 현재 항목에만 적용됩니다.
자주 묻는 질문
아래는 구독 업데이트 상황에서 가장 자주 나오는 조작 관련 질문이며, 답변은 모두 구체적인 진입점과 연결됩니다.
같은 구독 링크가 다른 기기에서는 업데이트되는데 이 기기에서는 계속 실패합니다.
먼저 이 기기 자체의 네트워크 문제를 배제합니다. Wi-Fi와 셀룰러를 한 번씩 바꿔 보고, 사용할 수 있는 노드에 연결한 뒤 Settings → Subscribe의 Update via Proxy를 켜서 다시 시도하세요. 그래도 실패하면 링크에 token이 온전히 포함되어 있는지 확인하세요. 일부 서비스 제공업체는 같은 token의 동시 요청 수를 제한하기 때문에 여러 기기에서 동시에 새로고침하면 거부될 수 있습니다. 몇 분 간격을 두고 다시 시도해 보세요.
업데이트 후 노드 이름이 바뀌면 Config의 규칙이 여전히 적용되나요?
규칙은 DOMAIN-SUFFIX, GEOIP, IP-CIDR 같은 조건으로 대상 주소를 매칭하며 노드 이름은 보지 않으므로 대부분의 규칙은 영향을 받지 않습니다. 다만 구성에서 예전 노드 이름을 참조해 두었다면 이름이 바뀐 뒤 매칭에 실패하므로, 구성을 열어 다시 지정해야 합니다.
Update on Open을 켜 두면 실행할 때마다 매번 통신해서 가져오나요?
그렇습니다. 트리거는 앱 실행 또는 백그라운드에서 포그라운드로 전환하는 시점이며, 트리거될 때마다 구독 주소로 요청을 한 번 보냅니다. 구독 내용이 자주 바뀌지 않는다면 이 스위치를 끄고 Home에서 당겨서 수동으로 업데이트하는 편이 요청 주기를 관리하기 좋습니다.
구독을 업데이트하면 직접 수정한 노드 파라미터도 덮어써지나요?
그렇습니다. 업데이트는 전체 교체이며 이 구독 아래의 항목은 배포 값을 따르므로, 수정했던 메모, 포트, 암호화 방식은 다음 업데이트 후 서비스 제공업체의 값으로 돌아갑니다. 오래 유지하려면 수정한 파라미터를 수동으로 추가한 노드로 복사해 두세요.
구독 링크를 다른 iPhone에 그대로 복사해 써도 되나요?
기술적으로는 가능하지만, 링크의 token은 계정 자격 증명과 같아서 누구든 확보하면 서비스 제공업체가 내려주는 노드 목록을 가져갈 수 있습니다. 전달, 스크린샷, 공개된 장소에 붙여넣기는 모두 유출로 이어질 수 있습니다. 새 기기에서 사용해야 한다면 서비스 제공업체에 다중 기기용 요금제가 있는지 먼저 문의하세요.