Shadowrocket WireGuard 설정 방법: PrivateKey, Peer, AllowedIPs, MTU 설명

Shadowrocket에 WireGuard를 추가할 때 각 항목의 의미와 제공받은 설정을 입력하는 방법, MTU·DNS를 잘못 설정했을 때 나타나는 증상을 설명합니다.

이 글의 핵심 내용

이 글은 제공받은 WireGuard 설정을 보유하고 있으며 Shadowrocket에서 매개변수를 확인하려는 사용자를 위한 안내입니다. 먼저 기기 자체의 설정과 원격 Peer를 구분한 뒤 Address, 키, AllowedIPs, DNS, MTU를 확인하세요. 마지막으로 한 번에 한 항목씩 변경해 연결 문제를 찾아봅니다. 글에 나오는 주소와 포트는 항목 간 관계를 설명하기 위한 예시이며, 실제 연결 정보가 아닙니다.

1. Interface와 Peer의 역할부터 구분하기

WireGuard 설정에서 [Interface]는 기기의 터널 인터페이스를, [Peer]는 통신을 허용할 원격 대상을 나타냅니다. Shadowrocket의 추가 화면에서는 이 항목들이 각각의 입력란으로 나뉠 수 있으므로 파일에 적힌 순서대로만 입력해서는 안 됩니다. 두 위치의 키를 서로 바꿔 입력하는 것도 피하세요.

기기의 PrivateKey는 기기의 신원을 나타내며, 원격 Peer에는 이에 해당하는 기기의 공개 키가 등록되어 있어야 합니다. 기기 설정의 Peer에 있는 PublicKey는 원격 Peer의 신원을 확인하는 데 사용됩니다. 두 키 모두 Base64 문자열인 경우가 많으므로 길이나 끝 문자만 보고 입력란을 판단할 수 없습니다.

항목 구분: 기기 인터페이스와 원격 Peer

Interface: 기기 신원
  • PrivateKey: 기기의 개인 키로, 안전하게 보관해야 합니다.
  • Address: 서버가 기기에 할당한 터널 주소입니다.
  • MTU: 터널 인터페이스에서 전송할 수 있는 패킷 크기 제한입니다.
  • DNS: 설정 파일에 포함될 수 있는 이름 해석 설정으로, WireGuard 핸드셰이크 매개변수는 아닙니다.
Peer: 원격 신원과 경로
  • PublicKey: 원격 Peer의 공개 키입니다. 기기의 공개 키가 아닙니다.
  • PresharedKey: 선택 항목인 사전 공유 키로, 양쪽 설정이 일치해야 합니다.
  • Endpoint: 원격의 공인 주소와 UDP 포트입니다.
  • AllowedIPs: 이 Peer와 연결되는 목적지 및 출발지 주소 범위입니다.

각 매개변수가 어느 쪽에 속하는지 먼저 확인한 뒤 입력란에 대응시키세요. 기기의 PrivateKey를 변경하면 원격에 등록된 기기의 공개 키도 함께 변경해야 합니다.

2. 주소, 키, 포트를 항목별로 확인하기

Address는 터널 내부 주소이지 원격 서버 주소가 아닙니다. 예를 들어 10.66.0.2/32는 하나의 IPv4 호스트 주소를 나타냅니다. 여기서 /32는 프리픽스 길이이므로 임의로 /24로 바꾸면 안 됩니다. 화면에서 주소와 프리픽스를 별도로 입력하도록 되어 있다면 각 항목에 나눠 입력하고, 전체 행을 그대로 붙여 넣지 마세요.

출처 항목입력할 값자주 하는 입력 실수와 확인 방법
PrivateKey기기의 WireGuard 개인 키입니다.원격 PublicKey를 입력하지 마세요. 복사할 때 줄바꿈, 공백, 누락된 문자가 없는지 확인하세요.
Address기기에 할당된 IPv4 또는 IPv6 터널 주소입니다.Endpoint를 입력하지 마세요. 기존 프리픽스 길이를 유지하고, 듀얼 스택 설정은 각각 확인하세요.
Peer PublicKey원격 Peer의 공개 키입니다.기기의 공개 키로 대신하지 마세요. 실제로 연결할 원격 Peer의 키와 일치해야 합니다.
PresharedKey양쪽이 함께 사용하는 선택 사항인 키입니다.기존 설정에 없다면 임의로 만들지 마세요. 한쪽에만 값이 있으면 통신이 실패합니다.
Endpoint원격 주소와 UDP 포트입니다.192.0.2.10:51820에서는 주소와 포트를 각각 해당 입력란에 입력해야 합니다. 이 주소는 설명용 예시입니다.
PersistentKeepalive유휴 상태에서 NAT 매핑을 유지하기 위해 전송하는 간격이며, 단위는 초입니다.25는 일반적인 예시일 뿐, 반드시 입력해야 하는 공통값이나 연결 시간 제한이 아닙니다.

WireGuard는 UDP를 사용합니다. 포트 51820은 흔히 쓰이는 설정 예시일 뿐, 프로토콜에서 강제하는 포트가 아니며 해당 포트를 입력한다고 모든 주소에 연결할 수 있는 것도 아닙니다. Endpoint가 IPv6 주소라면 설정 파일에서는 보통 [2001:db8::10]:51820처럼 표기합니다. 화면에서 주소와 포트를 따로 입력한다면 대괄호와 콜론은 해당 입력란의 형식에 맞춰 처리하세요.

UDP
WireGuard의 외부 전송은 UDP를 사용합니다. TCP 포트에 연결할 수 있어도 터널이 작동한다는 뜻은 아닙니다.
51820
Endpoint 포트 예시입니다. 실제 값은 보유한 설정을 따르세요.
25초
PersistentKeepalive 간격 예시이며 기본 필수값은 아닙니다.

3. Home에서 추가하고 재현 가능한 테스트 진행하기

작업 전에 원본 설정을 복사해 두고, 현재 사용 중인 Wi-Fi 또는 셀룰러 네트워크와 기존 Global Routing 설정을 기록하세요. 보유한 구독에서 가져온 설정이라면 구독에 WireGuard 항목이 실제로 포함되어 있는지 먼저 확인합니다. 업데이트 시 항목이 다시 생성될 수 있으므로 직접 수정하기 전에 변경 사항을 기록해 두세요. 그래야 이후 변경 내용이 덮어써진 것을 설정이 저장되지 않은 문제로 오해하지 않습니다.

  1. 원본 정보 준비

    정보에 기기의 PrivateKey, 터널 Address, 원격 PublicKey, Endpoint가 포함되어 있는지 확인하세요. 공개 키만 있거나 포트만 제공된 경우에는 원래 설정을 제공한 곳에 먼저 확인해야 합니다. 그 정보만으로 전체 연결 매개변수를 추론할 수는 없습니다.

  2. 프로토콜 선택

    Home → + → Type → WireGuard로 이동합니다. 편집 화면에 표시되는 항목에 맞춰 원격 주소와 포트, 기기의 키와 터널 주소를 입력하세요. 화면에 따라 주소와 프리픽스가 나뉠 수 있으므로 전체 설정 파일을 하나의 키 입력란에 붙여 넣지 마세요.

  3. 원격 Peer 확인

    Peer PublicKey를 입력하고 기존 정보의 PresharedKey, AllowedIPs, 연결 유지 간격을 확인하세요. 현재 화면에 해당 입력란이 없다면 이름이 비슷한 다른 항목에 대신 입력하지 말고, 현재 가져오기 방식에서 해당 매개변수를 지원하는지 먼저 확인하세요.

  4. 저장 후 연결

    저장한 뒤 Home으로 돌아가 방금 추가한 항목을 선택하고 연결 스위치를 켭니다. 처음 연결할 때는 시스템 안내에 따라 VPN 구성을 허용하세요. 시스템에 VPN 상태가 표시된다는 것은 터널 인터페이스가 시작되었다는 뜻일 뿐, 원격에서 응답했다는 증거는 아닙니다.

  5. 테스트 결과 기록

    Home → Global Routing → Proxy에서 잠시 비교 테스트를 진행해 선택한 항목이 대상 요청을 처리할 수 있는지 확인하세요. 테스트 대상, 오류 증상, 네트워크 유형을 기록합니다. 테스트가 끝나면 원래 Config 또는 평소 설정으로 되돌려 테스트 설정을 장기간 유지하지 않도록 하세요.

테스트 중에는 Settings → On Demand에 자동 연결 조건이 설정되어 있는지 확인하세요. On Demand는 시스템의 연결 시점을 제어하며, 특정 도메인에 어떤 규칙을 적용할지는 결정하지 않습니다. 네트워크 전환 후 자동으로 연결이 다시 시작된다면 기록에 남겨 두세요. 자동 재연결을 WireGuard 매개변수 변경 효과로 오해하지 않도록 하기 위해서입니다.

4. AllowedIPs와 Global Routing은 서로 다른 계층의 규칙입니다

WireGuard의 AllowedIPs는 IP 대역을 Peer와 연결합니다. 데이터를 보낼 때는 목적지 주소에 도달할 Peer를 선택하고, 데이터를 받을 때는 해당 Peer가 사용할 수 있는 내부 출발지 주소를 제한합니다. 도메인 이름은 허용하지 않으며 Shadowrocket의 DOMAIN-SUFFIX, GEOIP, IP-CIDR, FINAL과도 다릅니다.

Shadowrocket에서는 요청이 최종적으로 WireGuard 항목을 선택하는지도 확인해야 합니다. Config에서는 현재 설정의 규칙과 정책에 따라 요청이 처리됩니다. 규칙에 일치하지 않는 트래픽이 반드시 직접 연결된다고 단정할 수 없으며, 최종 결과는 기본 처리 설정에 따라 달라집니다. AllowedIPs의 범위가 넓더라도 DIRECT에 일치하는 요청이 선택한 WireGuard 경로로 자동 전환되지는 않습니다.

Config: 설정에 따라 처리

권장

현재 설정의 규칙과 정책에 따라 요청을 처리합니다. 대상이 예상한 규칙에 일치하는지, 해당 정책이 실제로 WireGuard 항목을 선택하는지 확인하고 FINAL의 기본 처리 방향도 점검하세요.

적합한 경우: 터널이 정상 작동하는 것을 확인한 뒤 평소 규칙 분기로 돌아갈 때

Proxy: 프록시 경로 비교

선택한 프록시 경로를 잠시 확인해 규칙 선택이 문제 해결에 미치는 영향을 줄입니다. 이 설정으로 잘못된 키, 연결할 수 없는 UDP Endpoint, 원격에 없는 경로가 해결되지는 않습니다.

적합한 경우: “경로 선택이 해당 항목으로 이어지지 않는 문제”와 “항목 자체가 작동하지 않는 문제”를 구분할 때

Direct: 직접 연결 기준선

직접 연결을 기준으로 삼아 프록시 경로를 거치지 않을 때 같은 대상이 어떻게 작동하는지 확인합니다. Direct에서 웹페이지가 정상적으로 열린다고 해서 WireGuard 매개변수가 올바르다는 뜻은 아닙니다.

적합한 경우: 현재 네트워크가 원래 테스트 대상에 접근할 수 없는지 확인할 때

5. 연결 후에도 문제가 있으면 DNS와 MTU 확인하기

DNS는 이름을 어떻게 해석할지 결정합니다

WireGuard 핸드셰이크는 설정 파일의 DNS 항목에 의존하지 않습니다. 다만 Endpoint를 도메인 이름으로 입력했다면 외부 연결을 시작하기 전에 해당 이름을 해석해야 합니다. 터널이 연결된 뒤에도 웹사이트 도메인을 해석해야 합니다. 따라서 “Endpoint 이름 해석 실패”와 “서비스 도메인 이름 해석 실패”를 구분해 기록하세요. 둘 다 키 오류로 뭉뚱그려서는 안 됩니다.

설정 파일의 DNS는 보통 클라이언트 설정 도구가 추가하는 항목이며, WireGuard 프로토콜 자체에서 주고받는 매개변수는 아닙니다. 가져온 뒤에는 Config에서 현재 활성화된 설정의 DNS 항목을 확인하고 DNS 요청이 실제로 어떤 경로를 사용하는지 살펴보세요. 원본 파일의 DNS가 Shadowrocket의 기존 설정을 반드시 덮어쓴다고 가정하지 마세요.

MTU는 터널 내부 패킷의 최대 크기를 결정합니다

MTU가 너무 크면 연결된 것처럼 보이고 짧은 텍스트는 받아 오지만, 큰 페이지나 업로드 또는 대용량 데이터 전송이 멈추는 경우가 있습니다. 이는 문제를 추정하는 단서일 뿐 확정적인 진단은 아닙니다. 원격 서버 혼잡, UDP 패킷 손실, 서버 제한도 비슷한 증상을 일으킬 수 있습니다. MTU가 너무 작으면 패킷 수와 캡슐화 오버헤드가 늘어날 수 있으므로 작을수록 안정적인 것은 아닙니다.

  1. 먼저 설정 제공자가 지정한 MTU를 유지하고 같은 네트워크와 대상, 같은 작업에서 나타나는 증상을 기록하세요.
  2. 기존 값이 1420이라면 비교 테스트에서 조금 낮춘 값인 1380을 사용해 볼 수 있습니다. 두 값 모두 테스트 예시이며 모든 네트워크에 가장 적합한 값은 아닙니다.
  3. 저장한 뒤 연결을 끊었다가 다시 연결하고 같은 테스트를 반복하세요. 이번에는 DNS, Endpoint, 키를 동시에 변경하지 마세요.
  4. 개선되지 않으면 원래 값으로 되돌리고 경로의 패킷 손실과 원격 상태를 확인하세요. IPv6 터널에서는 최소 링크 MTU인 1280보다 낮은 값으로 임의 설정하지 마세요.

6. 한 번의 지연 시간 측정에 의존하지 말고 증상별로 확인하기

지연 시간 테스트는 특정 테스트 방식에서의 결과일 뿐, 서비스 트래픽이 정상적으로 흐른다는 보장은 없습니다. 외부 UDP 연결 가능 여부, Peer 신원 일치, 터널 주소와 원격 경로, DNS, 앱 요청 순서로 확인하세요. 원격 핸드셰이크와 송수신 카운터를 볼 수 있다면 화면에 연결 아이콘이 표시되는지만 확인하지 말고, 명확한 요청을 한 번 보낸 시점과 함께 살펴보세요.

VPN 아이콘은 표시되는데 웹페이지가 열리지 않는 이유는 무엇인가요?

Home으로 돌아가 대상 WireGuard 항목이 선택되어 있는지 확인한 다음 Global Routing → Proxy로 잠시 전환해 비교하세요. 그래도 문제가 계속되면 Endpoint, UDP 포트, 양쪽 공개 키의 연결 관계부터 확인하세요. 인터페이스만 시작되고 원격 응답이 없다면 DNS나 MTU를 먼저 바꾸는 것으로 해결되지 않는 경우가 많습니다.

셀룰러 네트워크에서는 연결되지 않습니다. PrivateKey를 바꿔야 하나요?

먼저 키를 바꾸지 마세요. 기존 매개변수를 그대로 사용해 Wi-Fi와 셀룰러 네트워크에서 각각 테스트하고 결과를 기록한 뒤, 두 네트워크에서 Endpoint의 이름 해석과 UDP 연결이 가능한지 확인하세요. 일정 시간 유휴 상태일 때만 연결이 끊긴다면 PersistentKeepalive가 필요한지 기존 설정 제공자에게 문의하세요. 개인 키를 바꾸면 원격에 공개 키를 다시 등록해야 합니다.

작은 페이지는 열리는데 파일 업로드가 멈추면 어떻게 해야 하나요?

같은 네트워크와 테스트 대상을 유지하면서 MTU만 낮춰 테스트하고, 다시 연결한 뒤 결과를 확인하세요. 변화가 없다면 원래 MTU로 되돌리세요. 이후 패킷 손실, 원격 출구, 대상 서비스의 제한을 확인하고 모든 대용량 전송 실패를 MTU 문제로 단정하지 마세요.

같은 설정을 iPhone과 iPad에서 함께 사용할 수 있나요?

가능 여부는 원격에서 주소를 할당하는 방식에 따라 달라집니다. 두 기기에서 같은 개인 키와 터널 주소를 동시에 사용하면 원격에서 관찰되는 Endpoint가 서로 바뀔 수 있습니다. 두 기기를 동시에 사용해야 한다면 같은 항목을 복사하는 대신 기존 설정 제공자에게 별도의 Peer, 키, 주소 할당을 확인하세요.

구독을 업데이트했더니 직접 바꾼 MTU가 원래대로 돌아갔습니다. 어떻게 해야 하나요?

업데이트 전후의 항목을 비교해 설정이 구독에 의해 다시 생성됐는지 확인하세요. 구독에서 관리하는 매개변수는 기존 구독의 관리 방식을 따라야 합니다. 별도로 테스트하려면 원래 항목을 보존하고 로컬 복사본의 용도를 기록해 자동 업데이트 항목과 혼용하지 마세요.

7. 문제 해결 기록과 사용 범위

유용한 문제 해결 기록은 같은 사용자가 같은 조건에서 문제를 재현할 수 있으면서도 연결 인증 정보를 노출하지 않아야 합니다. 관련 없는 여러 항목을 연달아 바꾸기보다 정상 작동하는 원래 매개변수를 보존하는 편이 더 중요합니다. 확인을 마친 뒤 평소 Global Routing 설정으로 되돌리고 On Demand가 예상대로 설정되어 있는지 확인하세요.

App Store에서 정품 확인 →