Home에서 WireGuard를 추가하기 전에 사용 중인 서비스 제공업체가 준 전체 설정값을 준비하세요. 이 글에서는 로컬 신원 정보, 원격 Peer, 주소 범위, MTU와 연결 확인 순서에 따라 입력 방법을 설명합니다. 클라이언트의 Private Key와 원격 Public Key를 구분하고, ‘저장 완료’, ‘VPN 표시’와 ‘요청 성공’이 서로 다른 상태인 이유도 알아봅니다. 기존 구독에서 가져온 항목도 각 필드를 대조해 확인할 수 있으므로, 설정을 처음부터 다시 입력할 필요는 없습니다.
1. 로컬 Interface와 원격 Peer 구분하기
Home에서 기존 WireGuard 항목의 편집 화면을 열고, 먼저 원본 설정의 [Interface]와 [Peer]를 구분해 확인하세요. 전자는 로컬 터널의 신원 정보와 로컬 주소를, 후자는 통신 상대를 나타냅니다. Shadowrocket에서는 두 항목의 필드가 같은 편집 화면에 표시될 수 있지만, 각 필드의 소속은 다릅니다. 표시 순서만 보고 무작정 복사하지 마세요.
Private Key에는 로컬 클라이언트의 Private Key를 입력하고, 원격 Peer의 Public Key에는 서버의 Public Key를 입력하세요. 서버에도 이 클라이언트 Private Key에 대응하는 Public Key를 등록해야 합니다. 양쪽에 기록된 신원 정보가 서로 일치해야 올바른 암호화 통신을 설정할 수 있습니다. 클라이언트 Public Key를 원격 Public Key 입력란에 넣으면 형식이 맞더라도 신원 확인에 실패합니다.
원본 설정에 Endpoint = 203.0.113.10:51820이 있다면 Address는 원격 주소, Port는 포트에 해당합니다. 이 주소는 문서 예시용 대역이므로 실제 연결에 사용할 수 없습니다. [Interface] 아래의 터널 주소를 원격 Address에 입력하지 마세요. 자주 쓰이는 포트 예시를 이유로 서비스 제공업체가 안내한 다른 포트로 바꾸어서도 안 됩니다.
2. Home에서 WireGuard 추가 및 항목별 저장
Home 오른쪽 위의 +를 누르고 Add Server로 이동한 다음, Type을 WireGuard로 설정하고 해당 필드를 입력하세요. 아래 순서는 수동으로 항목을 대조할 때 참고하세요. 화면 구성에 따라 일부 고급 항목이 접혀 있을 수 있으며, 실제로 표시되는 필드는 현재 편집 화면을 기준으로 확인해야 합니다. 원본 설정의 키 이름과 입력란의 이름이 완전히 같지 않을 수도 있습니다. 예를 들어 PresharedKey는 Pre-shared Key에 해당합니다.
-
유형 선택
Home → + → Type → WireGuard로 이동하세요. 먼저 프로토콜 유형을 선택한 후 설정값을 입력해야 WireGuard 키를 다른 프로토콜의 Password 입력란에 잘못 넣는 일을 방지할 수 있습니다.
-
엔드포인트 입력
Peer의 Endpoint를 Address와 Port로 나누어 입력하세요. 원본 값에 IPv6 주소가 포함되어 있다면 입력 화면의 안내에 따라 주소와 포트를 각각 입력하세요. 포트를 구분하는 대괄호를 일반 주소 값에 포함하면 안 됩니다.
-
신원 정보 입력
Private Key에는 로컬 Private Key를, Peer에 해당하는 Public Key에는 원격 Public Key를 입력하세요. 원본 설정에 Pre-shared Key가 있다면 양쪽에서 합의한 동일한 값을 입력합니다.
-
주소 확인
Interface의 Address를 로컬 터널 주소 항목에 입력하고 IPv4, IPv6 및 프리픽스 길이를 확인하세요. MTU는 기존 설정값을 사용하고, 로컬 터널 주소를 DNS 주소나 원격 서버 주소로 입력하지 마세요.
-
저장 및 연결 확인
저장한 뒤 Home으로 돌아가 해당 항목을 선택하고 연결을 시작하세요. 처음으로 시스템의 VPN 구성 승인 메시지가 표시되면 내용을 확인한 후 추가를 허용합니다. 이후 해당 항목을 사용하는 요청을 직접 보내 연결을 확인하세요. 저장되었다는 사실만으로 연결이 가능한지 판단할 수는 없습니다.
3. Private Key, Public Key, Pre-shared Key의 관계
편집 화면에서 키를 확인할 때는 완전한 원본 설정에서 복사해 앞뒤 공백, 줄바꿈, 마지막 문자 누락이 없도록 하세요. Private Key, Public Key, Pre-shared Key는 모두 길이가 비슷한 Base64 문자열로 표시될 수 있지만, 모양이 비슷하다고 서로 바꿔 쓸 수 있는 것은 아닙니다. 특히 서버 Private Key를 클라이언트에 복사하면 안 됩니다. 클라이언트에 필요한 것은 서버 Public Key입니다.
로컬 신원 정보
- Private Key
- 이 클라이언트의 신원 설정에 사용되는 로컬 클라이언트 Private Key입니다.
- 클라이언트 Public Key
- 로컬 Private Key에서 파생되며, 서버에 이 클라이언트 Peer를 등록할 때 사용합니다.
- Interface Address
- 터널 내부 주소입니다. 문서 예시 값은
10.66.0.2/32이며, 실제 값은 기존 설정에 따라 달라집니다. - 변경 시 영향
- 로컬 Private Key를 바꾸면 서버에도 새 클라이언트 Public Key를 등록해야 합니다.
로컬 Private Key는 로컬 신원 확인에만 사용하세요. 다른 사용자에게 보내거나 문제 해결용 스크린샷에 포함하면 안 됩니다.
원격 Peer
- Public Key
- 통신 상대의 신원을 확인하는 원격 서버 Public Key입니다.
- Pre-shared Key
- 선택 사항인 추가 공유 키입니다. 사용한다면 양쪽의 값이 일치해야 합니다.
- Endpoint
- 접속 가능한 원격 호스트 주소와 UDP 포트로, 각각 Address와 Port에 해당합니다.
- Allowed IPs
- 이 Peer와 연결된 대상 또는 출발지 주소의 프리픽스 범위입니다. 엔드포인트 주소와는 다릅니다.
원본 설정에 Pre-shared Key가 없다면 임의의 값을 만들어 입력하지 마세요.
문제 해결 기록에는 필드의 설정 여부, 주소 프리픽스, 포트 등 필요한 정보만 남기고 Private Key, Pre-shared Key와 전체 구독 링크는 가리세요. Public Key는 Private Key가 아니지만 특정 설정을 식별하는 정보가 될 수 있습니다. 공개적으로 공유할 때도 필요한 정보만 최소한으로 공개하세요.
4. Allowed IPs와 Global Routing의 역할
사용 중인 WireGuard 원본 설정에서 [Peer] 아래의 AllowedIPs를 확인하세요. 이 값은 해당 Peer와 연결된 IP 프리픽스를 나타냅니다. 송신 방향에서는 이 Peer로 보낼 수 있는 대상 범위를 선택하고, 수신 방향에서는 Peer가 사용할 수 있는 내부 출발지 주소를 제한합니다. 구현에 따라 이 값으로 라우트가 생성되기도 하므로 단순한 메모로 보아서는 안 됩니다.
Shadowrocket에서는 먼저 Global Routing과 Config 규칙으로 각 요청에 적용할 정책을 정한 다음, 해당 WireGuard 항목이 대상 트래픽을 처리할 수 있는지 확인하세요. 두 설정은 서로 다른 계층에서 동작합니다. 현재 WireGuard 편집 화면에 Allowed IPs가 있다면 원본 값과 대조하세요. 이 필드가 없다면 Allowed IPs를 Address, Public Key 또는 관계없는 입력란에 넣지 마세요. 원본 설정의 모든 라우팅 동작이 Config 규칙으로 자동 반영된다고 가정해서도 안 됩니다.
| 설정값 | 포함 범위 | 확인할 점 |
|---|---|---|
0.0.0.0/0 | 전체 IPv4 대상 주소 | IPv6는 포함하지 않으며, Shadowrocket의 모든 요청이 반드시 이 항목을 선택한다는 뜻도 아닙니다. |
::/0 | 전체 IPv6 대상 주소 | 터널 주소, 원격 포워딩 및 접속 경로에서 IPv6를 지원해야 합니다. |
10.66.0.0/24 | 지정된 IPv4 서브넷 하나 | 주소 범위의 예시일 뿐, 실제 사용자에게 할당된 네트워크를 대신하지 않습니다. |
Home → Global Routing에서 확인할 때는 다음 두 설정 방식으로 ‘항목 자체가 작동하는지’와 ‘규칙이 해당 항목을 선택하는지’를 구분할 수 있습니다. 일상적인 설정은 기존 구성에 맞춰야 합니다. Global Routing의 Direct는 프록시 항목을 거치지 않으며, Scene은 상황별로 선택하는 기능입니다. 둘을 Allowed IPs의 주소 범위와 혼동하지 마세요.
Config: 기존 규칙 사용
권장현재 Config의 규칙과 정책에 따라 요청을 처리합니다. DOMAIN-SUFFIX, GEOIP, IP-CIDR 및 FINAL이 어떤 정책을 가리키는지 확인하고, 대상 요청이 해당 WireGuard 항목을 실제로 선택하는지 확인하세요.
적합한 경우: 규칙 설정이 이미 있으며, 평소 대상별로 트래픽을 분기하는 경우.
Proxy: 규칙 영향 분리
Config 규칙의 선택으로 생기는 변수를 줄이기 위해 일시적으로 현재 프록시 선택을 사용해 요청을 확인합니다. 이 방식으로 잘못된 키, 연결할 수 없는 엔드포인트 또는 원격 포워딩 문제를 해결할 수는 없으며 모든 유형의 트래픽이 작동한다고 보장하지도 않습니다.
적합한 경우: 선택한 항목을 잠시 확인한 후 원래 설정으로 되돌리는 경우.
5. MTU 입력 방법: 기존 값 유지 후 경로 문제 확인
WireGuard 편집 화면에서 MTU를 찾으면 먼저 기존 설정값을 유지하세요. MTU는 터널 내부에서 전송되는 IP 패킷 하나의 크기를 제한합니다. WireGuard의 외부 캡슐화에도 추가 공간이 필요하므로 터널 내부에서 사용할 수 있는 크기는 일반적으로 하위 링크의 MTU보다 작습니다. Wi-Fi나 셀룰러 네트워크의 MTU 값을 그대로 입력하면 안 됩니다.
연결은 되지만 짧은 요청만 완료되고 큰 응답이 멈출 때에만 경로 MTU를 원인 후보 중 하나로 고려하세요. 웹사이트가 열리지 않는다는 사실만으로 MTU 문제라고 단정할 수는 없습니다. DNS, 원격 출구, 트래픽 분기 선택도 비슷한 증상을 일으킬 수 있습니다. 자주 보이는 설정값 1420은 시작점일 뿐, 모든 네트워크에 적용되는 고정값은 아닙니다.
- 먼저 기록하세요: 원래 MTU, 현재 연결 네트워크, 테스트 대상과 실패 증상을 기록해 나중에 설정을 복원할 수 있도록 합니다.
- 그다음 MTU만 변경하세요: MTU만 바꾸고 연결을 다시 설정한 뒤 같은 대상을 반복 테스트하세요. DNS, 키, 규칙을 동시에 바꾸지 마세요.
- 필요한 경우 조금씩 낮추세요: 예를 들어 기존 값이
1420이라면 서비스 설정을 이해한 상태에서1380과 비교해 볼 수 있습니다. 이 값들은 진단을 위한 예시입니다. - IPv6에 유의하세요:
1280은 IPv6의 최소 링크 MTU입니다. IPv6를 사용하는 경우 임의로 더 낮은 값을 일반적인 해결책으로 적용하지 마세요. - 개선되지 않으면 원래 값으로 복구하세요: MTU를 낮추면 같은 데이터를 전송하는 데 필요한 패킷 수가 늘어납니다. ‘작을수록 안정적’이라는 원칙을 장기 설정에 적용해서는 안 됩니다.
6. 증상별 문제 해결: 저장은 됐지만 접속되지 않을 때
Home에서 방금 저장한 WireGuard 항목을 선택한 뒤 연결 스위치와 실제 요청에 적용되는 정책부터 확인하고 결과를 살펴보세요. 시스템에 VPN 표시가 나타나면 해당 네트워크 확장이 실행 중이라는 뜻이지, 원격 서버와 핸드셰이크가 완료됐다는 뜻은 아닙니다. WireGuard는 사용하지 않을 때 업무 트래픽이 계속 발생한다고 보장하지 않으므로, 반복해서 확인할 수 있는 테스트 요청을 직접 보내세요.
| 확인된 증상 | 먼저 확인할 항목 | 다음 조치 |
|---|---|---|
| 저장할 때 필드 형식 오류가 표시됨 | 키가 완전한지, 포트가 숫자인지, 주소 형식이 올바른지 확인합니다. | 원본 설정과 대조해 항목별로 붙여 넣고 불필요한 공백을 지우세요. 키를 새로 만들어 입력하지 마세요. |
| 연결 후 요청이 계속 시간 초과됨 | Endpoint, UDP 연결 가능 여부, 원격 Public Key, 서버에 등록된 클라이언트 Public Key를 확인합니다. | 설정값을 그대로 둔 채 사용할 수 있는 다른 네트워크에서 다시 테스트하고, 서비스 제공업체에 핸드셰이크 기록을 확인해 달라고 요청하세요. |
| 원격에서 핸드셰이크는 확인됐지만 접속할 수 없음 | 로컬 터널 주소, Allowed IPs, 원격 포워딩 및 출구 설정을 확인합니다. | 먼저 주소 할당을 확인한 다음 대상 접속 실패와 도메인 이름 조회 실패를 구분하세요. |
| 일부 도메인만 실패하고 다른 요청은 정상 작동함 | DNS 결과, Config에서 일치한 정책, IPv4와 IPv6 경로 차이를 확인합니다. | 같은 대상의 DNS 조회와 연결 기록을 비교하세요. 바로 키 문제로 단정하지 마세요. |
| 작은 응답은 정상이지만 큰 응답은 멈춤 | 경로 MTU, 패킷 손실 및 원격 링크 상태를 확인합니다. | 기존 값을 기록한 뒤 MTU만 바꿔 비교 테스트하세요. 요청 한 번의 결과만으로 결론을 내리지 마세요. |
Settings → On Demand에서 자동 연결 조건을 확인해 수동으로 연결을 끊은 뒤 조건에 따라 다시 연결되는 일이 없도록 하세요. 그러면 테스트 상태를 잘못 판단할 수 있습니다. On Demand는 연결을 시작할 시점을 정하는 기능이지 WireGuard 설정값을 수정하는 기능이 아닙니다. 점검을 마친 뒤에는 기존 Global Routing과 On Demand 설정을 복원하고 유효한 설정값을 기록해 두세요.
7. 저장 전 최종 점검 및 앱 받기
항목 편집 화면으로 돌아가 아래 목록을 마지막으로 확인한 뒤 설정을 저장하세요. 기존 구독에서 가져온 항목이라면 다음 업데이트 후에도 주요 필드가 서버 설정과 일치하는지 확인해야 합니다. 로컬에서 직접 수정한 값과 구독 원본의 차이는 사용자가 직접 기록하고 관리해야 합니다.
- Private Key는 현재 클라이언트의 키이고 Peer Public Key는 원격 서버의 키인지 확인하세요. 두 값을 바꿔 입력하면 안 됩니다.
- Pre-shared Key는 양쪽에서 합의한 경우에만 입력하고, 설정되어 있지 않다면 비활성 상태로 두세요.
- Address와 Port는 원격 엔드포인트에 해당합니다. 로컬 터널 주소에는 할당된 주소와 프리픽스 길이를 사용하세요.
- Allowed IPs가 대상 주소 범위와 일치하는지, Global Routing과 Config 정책이 의도한 항목을 선택하는지 확인하세요.
- 근거가 있는 MTU 값을 유지하고, 테스트 중 변경한 설정은 모두 원래 값과 함께 기록하세요.
Shadowrocket을 받으려면 먼저 이 사이트의 정품 확인 페이지를 방문한 뒤 App Store로 이동하세요. 개발자는 Shadow Launch Technology Limited이며 앱 ID는 932747118입니다. Shadowrocket은 한 번 구매하면 사용할 수 있는 클로즈드 소스 상용 앱입니다. 앱 구매는 네트워크 서비스 요금제와 별개이며, 연결 설정값은 사용자가 기존에 이용하는 서비스 설정에서 가져와야 합니다. 주로 iPhone과 iPad에서 사용하며, 다른 Apple 기기의 호환성과 시스템 요구 사항은 App Store 페이지를 기준으로 확인하세요.