WireGuard를 설정할 때는 먼저 로컬 기기의 신원, 원격 피어의 신원, 터널 주소를 구분한 뒤 Endpoint와 AllowedIPs를 확인하세요. 이미 서비스 제공업체의 설정이나 직접 관리하는 엔드포인트 정보를 보유한 사용자를 대상으로, 표준 WireGuard 필드를 Shadowrocket에 입력하는 방법과 키 오류, UDP 연결 불가, 라우팅 범위 부족, 부적절한 MTU를 구별하는 방법을 안내합니다.
1. Add Server에서 WireGuard 추가하기
Shadowrocket의 WireGuard 프로필에는 서로 맞물리는 여러 매개변수가 필요합니다. 원격 주소와 포트만으로는 연결을 구성할 수 없습니다. 로컬 PrivateKey에 대응하는 PublicKey가 원격에 등록되어 있어야 하며, 터널 주소와 허용 주소 범위도 원격 설정과 일치해야 합니다. 아래 주소는 필드 설명용 예시이며 실제 연결에 사용할 수 없습니다.
-
매개변수 확인
기존 설정에서
[Interface]와[Peer]를 구분하세요. 전자에는 로컬 PrivateKey와 Address 등이, 후자에는 원격 PublicKey, Endpoint, AllowedIPs 등이 포함됩니다. 대조할 수 있도록 원본 정보를 먼저 보관하세요. -
유형 선택
Home → 오른쪽 위 ‘+’ → Add Server → Type으로 이동해 WireGuard를 선택하세요. Type을 확인한 뒤 매개변수를 입력하고, WireGuard 키를 다른 프로토콜의 비밀번호 입력란에 넣지 마세요.
-
필드 대응
Endpoint의 호스트와 포트를 Address 및 Port에 각각 입력하세요. Interface의 PrivateKey와 Peer의 PublicKey는 각각 해당 키 필드에 입력합니다. 터널 IP는 로컬 주소 필드에 입력해야 하며 원격 Address에 입력하면 안 됩니다. 구체적인 항목 구성과 필드 표시는 현재 앱 화면을 기준으로 확인하세요.
-
저장 후 확인
저장한 뒤 Home으로 돌아가 해당 프로필을 선택하고 Global Routing을 확인한 다음 연결 스위치를 켜세요. 시스템 안내에 따라 VPN 구성을 허용한 후 Connectivity Test와 실제 대상에 대한 접속을 각각 확인하세요. 스위치가 켜졌다고 원격 핸드셰이크가 성공한 것은 아닙니다.
항목을 직접 추가하면 필드를 하나씩 확인하기 좋습니다. 기존 구독에서 가져온 항목이라면 업데이트가 수동 변경 사항을 덮어쓰는지 먼저 확인하세요. 문제를 해결할 때는 별도 사본을 보관하고 수정 내용을 기록하세요. 이 사이트는 노드나 구독을 제공·판매·추천하지 않으며, 아래 단계는 사용자가 이미 보유한 설정을 다룹니다.
2. PrivateKey와 PublicKey: 어느 쪽의 키인지 먼저 확인
WireGuard는 키 쌍으로 신원을 확인합니다. 로컬 PrivateKey와 로컬 PublicKey가 한 쌍이며 원격에도 별도의 키 쌍이 있습니다. Shadowrocket의 Peer PublicKey에는 원격 공개 키를 입력해야 합니다. 현재 PrivateKey에서 파생되는 로컬 공개 키가 아닙니다. 수동 설정에서 가장 자주 뒤바뀌는 항목입니다.
로컬 Interface
- PrivateKey
- 로컬 개인 키로, 기기 신원에 사용되므로 안전하게 보관해야 합니다.
- PublicKey
- 로컬 PrivateKey에서 파생되며 원격에 전달해 Peer로 등록합니다.
- Address
- 로컬 터널 주소입니다. 예:
10.66.0.2/32. 공인 엔드포인트 주소가 아닙니다.
로컬 PrivateKey를 변경하면 원격에 등록된 로컬 PublicKey도 함께 변경해야 합니다.
원격 Peer
- PublicKey
- 원격 공개 키입니다. 클라이언트의 해당 Peer PublicKey 필드에 입력합니다.
- PresharedKey
- 선택 사항인 추가 공유 키입니다. 사용한다면 양쪽 설정이 일치해야 합니다.
- Endpoint
- 접속 가능한 원격 호스트와 UDP 포트입니다. 예:
192.0.2.10:51820.
클라이언트에는 원격 PrivateKey가 필요하지 않습니다. 양쪽의 개인 키를 서로 교환하지 마세요.
표준 WireGuard 키는 32바이트 데이터를 Base64로 표현한 값이며, 보통 44자이고 끝에 =가 붙습니다. 붙여 넣을 때 마지막 문자까지 유지하고 따옴표, 공백, 줄바꿈은 추가하지 마세요. 길이와 형식이 맞더라도 올바른 Peer의 키라는 뜻은 아닙니다.
3. Address, Endpoint, DNS: 서로 다른 주소를 구분하세요
표준 설정 파일에서 Address는 터널 내부 주소를 뜻하지만, 서버 추가 화면의 Address는 보통 원격 호스트 주소로 사용됩니다. 같은 영어 단어도 문맥에 따라 의미가 다르므로 필드가 속한 그룹을 확인하세요. 10.66.0.2/32를 원격 호스트 주소로 입력해도 공인 엔드포인트를 찾을 수는 없습니다.
| 설정 항목 | 예시와 의미 | 입력 시 확인 사항 |
|---|---|---|
| Interface Address | 10.66.0.2/32: 로컬 터널 IPv4 주소입니다. | 설정 출처에 따라 로컬 주소 필드에 입력하고, 주소와 함께 프리픽스 길이도 확인하세요. |
| Peer Endpoint | 192.0.2.10:51820: 원격 호스트와 UDP 포트입니다. | 화면에서 Address와 Port가 분리되어 있다면 호스트와 51820을 각각 입력하세요. |
| IPv6 Endpoint | [2001:db8::10]:51820: 대괄호로 호스트와 포트를 구분하는 형식입니다. | 호스트와 포트 입력란이 분리되어 있다면 전체 조합 문자열을 호스트 입력란에 넣지 마세요. |
| DNS | 이름 확인을 담당하는 서버 주소 또는 DNS 설정입니다. | 이름 확인 경로에 접속할 수 있는지 확인하세요. DNS는 Endpoint나 터널 주소를 대신하지 않습니다. |
192.0.2.10과 2001:db8::10은 문서용 예시 주소입니다. 실제 포트는 본인의 설정을 사용하세요. 51820은 흔히 쓰이는 예시일 뿐 WireGuard에서 반드시 사용해야 하는 포트가 아닙니다. WireGuard는 UDP를 사용하므로 일반 TCP 포트 테스트의 성공이나 실패만으로 해당 UDP 엔드포인트의 사용 가능 여부를 판단할 수 없습니다.
Endpoint에 도메인을 사용하는 경우 클라이언트는 핸드셰이크 데이터를 보내기 전에 해당 도메인을 확인해야 합니다. 엔드포인트 도메인조차 확인되지 않으면 현재 네트워크의 DNS 설정부터 점검하세요. 엔드포인트에는 접속할 수 있지만 웹사이트 도메인만 열리지 않는다면 DNS 요청이 실제로 어디로 전달되는지 확인하세요. 이 두 문제를 모두 ‘키 오류’로 취급하지 마세요.
4. AllowedIPs와 Global Routing: 두 단계의 선택을 따로 확인
WireGuard에서 AllowedIPs는 주소 범위를 Peer와 연결하고 수신 데이터의 출발지 주소 범위를 확인하는 데 사용됩니다. 앱 도메인 규칙도 아니고 ‘접속을 허용할 원격 서버 목록’도 아닙니다. 예를 들어 10.66.0.0/24는 IPv4 네트워크 하나를, 0.0.0.0/0은 모든 IPv4 주소를, ::/0은 모든 IPv6 주소를 나타냅니다.
- 지정한 네트워크만 접속: 기존 설정의 허용 범위가
10.66.0.0/24뿐이라면 임의의 공인 IP 목적지까지 해당 Peer를 통해 접속할 수 있다고 기대하지 마세요. 원격에도 해당 라우팅과 접근 권한이 있어야 합니다. - IPv4와 IPv6 모두 포함:
0.0.0.0/0에는 IPv6가 포함되지 않습니다. 듀얼 스택이 필요하면::/0, 로컬 터널 주소, 원격의 IPv6 포워딩 기능을 함께 확인하세요. - 설정 매핑 확인: 가져오기 형식에 따라 AllowedIPs가 내부 설정으로 변환될 수 있습니다. 수동 입력 화면에 같은 이름의 필드가 없다면 다른 입력란에 임의로 넣지 말고, 해당 형식의 지원 여부와 저장 후 설정을 확인하세요.
- 앱의 트래픽 분기 확인: Home → Global Routing → Config에서 현재 설정 규칙에 따라 트래픽 처리 방식을 선택합니다. DIRECT에 일치하는 요청은 AllowedIPs 범위를 넓혀도 자동으로 해당 WireGuard 프로필을 통과하지 않습니다.
Shadowrocket의 Global Routing과 WireGuard Peer의 주소 범위는 서로 다른 설정입니다. 규칙의 영향을 줄이기 위해 일시적으로 Proxy를 선택할 수 있지만, 앱의 처리 범위와 터널 매개변수, 원격 네트워크 기능의 제약은 그대로 적용됩니다. Direct를 선택하면 WireGuard의 포워딩 경로를 확인할 수 없습니다. 테스트가 끝나면 기존 설정으로 되돌리고, 임시 문제 해결 설정을 상시 설정으로 사용하지 마세요.
5. MTU와 PersistentKeepalive: 증상에 따라 조정
MTU는 터널 안에서 전송할 수 있는 패킷의 최대 크기에 영향을 줍니다. 캡슐화 과정에서 오버헤드가 추가되며 적절한 값은 하위 네트워크와 경로에 따라 달라집니다. 작은 요청은 성공하지만 큰 페이지나 대용량 전송이 멈추는 등 패킷 크기 문제가 의심될 때 MTU를 비교해 보세요. 핸드셰이크 자체가 실패한다면 먼저 Endpoint, UDP, 키를 확인하세요.
기존 MTU 설정 유지
권장기존 설정에 값이 있다면 그대로 사용하고, 별도 지정이 없다면 앱의 기본 처리에 맡기세요. 현재 네트워크, 대상, 증상을 기록해 이후 비교 기준을 마련하세요. 흔히 쓰이는 특정 값을 모든 네트워크의 정답으로 간주하지 마세요.
적합한 경우: 처음 설정하거나 패킷 크기 문제가 있다는 근거가 아직 없는 경우
MTU를 조금 낮추기
현재 값이 1420이라면 사본을 보관한 뒤 1380으로 한 번 비교 테스트할 수 있습니다. 이는 문제 해결을 위한 예시이며 실제 측정 결과가 아닙니다. 같은 네트워크와 대상에서 다른 매개변수는 그대로 두고 테스트하세요. 개선되지 않으면 원래 값으로 되돌리세요.
적합한 경우: 데이터는 오가지만 대용량 전송이 반복해서 멈추는 경우
PersistentKeepalive의 단위는 초이며, 주기적으로 유지 신호를 보내 NAT나 방화벽에 설정된 매핑을 유지하는 데 도움을 줍니다. 25는 흔히 쓰이는 설정 예시일 뿐, 실제 필요에 따라 선택해야 합니다. 재인증용 비밀번호나 속도 설정이 아니며, 잘못된 PublicKey나 접속할 수 없는 포트를 해결하지 못합니다.
- 일정 시간 유휴 상태가 지난 뒤 통신이 복구되지 않을 때 유지 신호와 네트워크 매핑을 중점적으로 확인하세요.
- MTU와 PersistentKeepalive 중 한 번에 하나만 변경해 어떤 변경이 증상에 영향을 줬는지 확인하세요.
- Wi-Fi와 셀룰러 네트워크를 전환할 때마다 결과를 따로 기록하세요. 서로 다른 하위 네트워크에서 얻은 결과를 한 번의 비교로 묶지 마세요.
6. 양쪽 설정 맞춰 보기: 클라이언트와 원격 확인 목록
한쪽에서 연결이 켜져 있다고 해서 상대쪽에서 해당 신원을 승인했다는 뜻은 아닙니다. 문제를 해결할 때는 클라이언트가 어느 곳으로 데이터를 보내는지, 원격에서 어떤 기기를 허용하는지, 응답 트래픽이 어떻게 로컬 기기에 돌아오는지 각각 확인하세요. 특히 여러 기기에서 같은 신원과 터널 주소를 그대로 재사용하지 마세요. 원격에서 출발지 엔드포인트 매핑이 서로 바뀌어 연결이 끊겼다 이어지는 증상이 생길 수 있습니다.
확인 방법: 로컬 Interface와 원격 Peer를 쌍으로 점검
Shadowrocket 로컬 설정
- PrivateKey는 현재 기기의 키이며, 이에 대응하는 PublicKey가 원격에 등록되어 있습니다.
- Peer PublicKey는 접속 대상 원격의 공개 키이며 Endpoint 호스트와 UDP 포트가 모두 올바릅니다.
- 터널 주소, 주소 범위, DNS가 기존 설정과 일치합니다.
- Home에서 올바른 프로필을 선택했으며 Global Routing이 테스트 목적에 맞게 설정되어 있습니다.
원격 설정
- 해당 Peer에 등록된 키가 다른 기기의 키가 아니라 현재 기기의 PublicKey입니다.
- 로컬 기기에 고유 주소를 할당하고 반환 경로를 설정합니다. 예:
10.66.0.2/32. - 실제로 수신 대기 중인 UDP 포트와 방화벽에서 허용한 포트가 일치합니다.
- 외부 네트워크에 접속해야 한다면 해당 포워딩, 라우팅, 접근 권한이 갖춰져 있습니다.
키 쌍을 먼저 확인한 다음 주소와 포워딩을 점검하세요. 클라이언트의 필드 하나를 변경해도 원격에 필요한 설정을 대신할 수는 없습니다.
7. 자주 하는 입력 오류와 확인 방법
Connectivity Test는 접속 가능성을 판단하는 데 참고할 수 있지만, 단일 지연 시간 값으로 처리량이나 핸드셰이크 상태를 판단해서는 안 됩니다. 테스트 대상, 방식, 하위 네트워크를 기록해 두세요. 원격을 직접 관리한다면 최근 핸드셰이크 시각과 송수신 카운터도 함께 확인해 데이터 도달 여부를 살펴보세요. 아래 답변은 관찰된 증상을 기준으로 하며 모든 실패가 같은 필드에서 비롯된다고 전제하지 않습니다.
PrivateKey를 저장하자마자 오류가 나면 무엇부터 확인해야 하나요?
Home에서 해당 프로필의 편집 화면으로 돌아가 PrivateKey = 행 전체나 따옴표, 줄바꿈까지 복사했는지 확인하세요. 보통 필드에는 등호 오른쪽의 키 값만 입력하면 됩니다. 끝의 =는 Base64 값에 포함되므로 그대로 두세요. 문자를 임의로 추가해 문제를 해결하려 하지 마세요.
스위치는 켜졌는데 왜 데이터가 오가지 않나요?
먼저 Home에서 대상 프로필을 선택했는지 확인한 다음 Global Routing을 점검하세요. 이어서 Endpoint, UDP 포트, 원격 PublicKey를 확인합니다. 원격 관리 권한이 있다면 최근 핸드셰이크와 송수신 카운터도 확인하세요. 시스템 VPN이 시작되었다는 것은 로컬 터널이 설정되었다는 뜻일 뿐, 원격에서 응답했다는 증거는 아닙니다.
내부 주소에는 접속되는데 공인 웹사이트는 열리지 않나요?
먼저 AllowedIPs가 내부 네트워크만 포함하는지 확인하고 DNS와 원격 포워딩 조건을 각각 점검하세요. Global Routing이 Config라면 실제 대상에 적용되는 규칙도 확인해야 합니다. AllowedIPs를 모든 주소로 바꿨다고 해서 원격에 공인 네트워크 포워딩 기능이 생기는 것은 아닙니다.
연결을 끈 뒤 다시 자동으로 연결되면 필드 입력이 잘못된 건가요?
Settings → On Demand에서 현재 자동 연결 조건을 확인하세요. 수동으로 문제를 해결하는 동안에는 관련 자동 실행을 잠시 중지한 뒤 Home으로 돌아가 다시 테스트하세요. On Demand는 연결을 언제 실행할지 결정하는 기능이며 WireGuard 키의 유효성과는 별개의 문제입니다. 자동 연결 문제를 해결하려고 키를 바꾸지 마세요.
다른 기기에서는 연결되는데 설정 전체를 복사해도 되나요?
먼저 원격에서 두 기기에 각각 별도의 신원과 주소를 할당했는지 확인하세요. 각 기기는 자체 PrivateKey를 사용하고 해당 PublicKey를 원격에 등록해야 합니다. 같은 엔드포인트 정보를 복사해도 신원까지 복사되는 것은 아닙니다. 설정을 별도로 보관한 뒤 같은 네트워크에서 비교 테스트하세요.
최종 확인에는 최소 세 가지 항목이 포함되어야 합니다. 대상 요청이 의도한 프로필로 전달되는지, 필요한 주소 범위에 접속할 수 있는지, 유휴 상태 이후 통신이 예상대로 복구되는지 확인하세요. 완료되면 원본 설정과 변경 기록을 보관하고 문제 해결 과정에서 만든 중복 항목은 삭제하세요. 구독 관리를 사용한다면 다음 업데이트가 확인된 매개변수를 덮어쓰지 않는지도 확인하세요.