Shadowrocket WireGuard 설정 방법: Private Key, Peer Public Key, MTU 입력 안내

Shadowrocket에서 WireGuard 서버를 추가할 때 Private Key, Public Key, Address, MTU 등 각 항목에 입력할 내용을 설명합니다. 설정 정보는 이용 중인 서비스 제공업체에서 받으세요. 예시는 모두 임의의 값입니다.

이 글 한눈에 보기

이 글은 이용 중인 서비스 제공업체에서 WireGuard 설정을 받아 Shadowrocket에 직접 입력하려는 사용자를 위한 안내입니다. 먼저 기기의 Interface와 원격 Peer를 구분하고, Private Key와 Public Key, 터널 주소, 연결 Endpoint를 각각 확인한 다음 MTU와 트래픽 분기 설정을 점검합니다. 글에 나오는 주소, 도메인, 포트는 구조 설명용이므로 실제 연결 설정에 사용할 수 없습니다.

1. Interface와 Peer의 설정 항목 구분하기

Shadowrocket의 WireGuard 설정에는 두 가지 정보가 있습니다. 기기가 어떤 신원과 주소로 터널에 연결되는지, 그리고 어느 원격 서버에 연결하는지입니다. 일반적인 WireGuard 텍스트 설정은 [Interface]와 [Peer]로 구분됩니다. 직접 입력할 때는 텍스트에 나온 순서대로 붙여 넣지 말고, 각 항목의 의미에 맞춰 양식에 입력하세요.

Private Key는 이 기기의 신원을 식별하는 데 사용되고, Peer의 Public Key는 원격 Peer를 식별합니다. Address는 서비스 제공업체가 이 기기에 할당한 터널 내부 주소입니다. Endpoint는 네트워크에서 연결할 서버의 도메인 또는 IP 주소와 포트를 가리킵니다. 두 주소를 서로 바꿔 입력하면 안 됩니다.

항목 구분: 기기의 Interface와 원격 Peer

Interface(기기 인터페이스)
  • PrivateKey: 이 기기의 신원에 해당하는 Private Key
  • Address: 터널에서 사용하는 기기의 IPv4 또는 IPv6 주소
  • MTU: 터널 인터페이스가 전송할 수 있는 IP 패킷 크기
  • DNS: 설정에 포함된 경우 함께 사용할 DNS 서버 정보
Peer(원격 피어)
  • PublicKey: 원격 Peer의 공개 키. 기기의 공개 키가 아닙니다.
  • Endpoint: 원격 호스트 주소와 UDP 포트
  • PresharedKey: 양쪽이 함께 사용하는 선택적 사전 공유 키
  • AllowedIPs: 해당 Peer의 터널 라우팅 및 주소 범위 설정

먼저 각 항목이 어느 쪽에 속하는지 확인하세요. 기기의 Public Key를 Peer의 Public Key 항목에 입력하면 안 됩니다.

서비스 제공업체는 전체 설정 텍스트, QR 코드, 기존 구독에 포함된 항목 또는 개별 매개변수로 정보를 제공할 수 있습니다. 아래에서는 직접 입력하는 방법을 안내합니다. 화면에 표시되는 항목은 앱 인터페이스에 따라 다를 수 있습니다. 별도의 입력란이 없는 매개변수를 이름만 비슷한 다른 항목에 입력하지 마세요. 현재 가져오기 방식에 맞는 설정인지 확인해야 합니다.

2. Home에서 WireGuard 서버 추가하기

입력하기 전에 원본 설정을 온전히 보관하세요. 원본 자료에 서비스 제공업체 화면에 표시된 기기의 Public Key만 있고 Private Key가 없다면, 해당 신원 설정에 필요한 정보가 모두 갖춰진 것이 아닙니다. Public Key만으로 Private Key를 알아낼 수는 없습니다.

  1. 원본 설정 준비하기

    이용 중인 서비스 제공업체에서 전체 설정 정보를 받으세요. Interface의 PrivateKey와 Address, Peer의 PublicKey와 Endpoint를 각각 확인합니다. PresharedKey가 있다면 함께 보관하세요.

  2. 프로토콜 선택하기

    Home → 오른쪽 위 “+” → Type → WireGuard 순으로 선택합니다. 일반 서버 주소 입력란에 전체 설정 텍스트를 붙여 넣지 말고, 새 WireGuard 항목을 만드는지 확인하세요.

  3. Endpoint 입력하기

    Endpoint의 호스트 부분은 Address(서버 주소) 또는 해당 호스트 입력란에, 포트는 Port에 입력하세요. 예를 들어 가상의 Endpoint wg.example.com:51820은 wg.example.com과 51820으로 나눠 입력합니다. 웹 주소에 사용하는 프로토콜 접두사는 붙이지 마세요.

  4. 신원 정보 입력하기

    WireGuard 설정 항목에 기기의 Private Key, 원격 Peer의 Public Key, 터널 주소를 입력하세요. Preshared Key 항목이 있더라도 원본 설정에 해당 값이 있을 때만 입력해야 합니다. 다른 키로 대신하면 안 됩니다.

  5. 저장 후 연결 확인하기

    저장한 다음 Home으로 돌아가 방금 만든 항목을 선택하고 연결을 켭니다. 현재 Global Routing 설정과 테스트 네트워크를 기록한 뒤, 접근 권한이 있는 대상으로 실제 요청을 테스트하세요. 연결 스위치가 켜졌는지만 확인해서는 안 됩니다.

3. Private Key, Public Key, Preshared Key

WireGuard의 Private Key와 Public Key는 정해진 인코딩 형식을 사용합니다. 일반적으로 32바이트 데이터를 표현하는 Base64 문자열이며, 흔히 44자입니다. 길이가 맞더라도 복사 오류 일부를 걸러낼 수 있을 뿐, 해당 키가 현재 서버에 등록된 키인지 또는 양쪽 인증이 완료됐는지는 확인할 수 없습니다.

기기의 Private Key로 기기의 Public Key를 만들 수 있으며, 서버는 보통 이 Public Key로 클라이언트를 식별합니다. 기기에서 Private Key를 새로 생성하면 이에 대응하는 Public Key도 바뀝니다. 서버에 이전 Public Key가 등록된 상태라면 기존 신원으로 핸드셰이크를 완료할 수 없습니다. 따라서 키 재생성을 일반적인 해결 방법으로 사용하지 마세요.

항목 입력할 내용 자주 발생하는 오류
Private Key 기기의 신원에 할당된 Private Key. 일반적으로 Interface 섹션에서 가져옵니다. 기기의 Public Key를 복사했거나 다른 기기의 Private Key를 잘못 사용했습니다.
Public Key 원격 Peer의 Public Key. 일반적으로 Peer 섹션에서 가져옵니다. 기기의 Public Key를 입력했거나 PublicKey = 접두사까지 함께 붙여 넣었습니다.
Preshared Key 원본 설정에 지정된 추가 대칭 키. 양쪽에 같은 키를 입력해야 합니다. 원본 설정에 없는 항목을 임의로 만들었거나 로그인 비밀번호를 대신 입력했습니다.

복사할 때는 등호 오른쪽의 값만 가져오고 앞뒤 공백과 줄바꿈은 제거하세요. 키 자체의 문자는 그대로 유지해야 하며, 특히 끝에 올 수 있는 =를 지우지 마세요. 인코딩된 +를 공백으로 취급하거나 대소문자를 직접 바꾸지 마세요. 키는 사용자 이름, 로그인 비밀번호, 구독 링크와 다릅니다.

4. Address, Endpoint, DNS 입력 기준

Interface의 Address에는 보통 CIDR 주소 접두사 길이가 포함됩니다. 예를 들어 가상의 값 10.66.0.2/32에서 /32는 IPv4 호스트 주소 하나를 뜻합니다. IPv6 단일 주소에는 보통 /128을 사용합니다. 이는 포트도 서버의 공인 주소도 아닙니다. 화면에서 주소와 접두사를 따로 입력하게 되어 있다면 각각 나눠 입력하고, 슬래시 뒤의 숫자를 Port에 넣지 마세요.

기기 측 가상 예시

Address
10.66.0.2/32
IPv6 Address
fd42:66::2/128
DNS
10.66.0.1
MTU
1420, 매개변수 예시일 뿐입니다

이 값은 기기 측 항목의 형식을 설명하기 위한 것이며, 서비스 제공업체의 할당 방식을 유추하는 데 사용할 수 없습니다.

원격 측 가상 예시

Endpoint
wg.example.com:51820
Host
wg.example.com
Port
51820, UDP 포트
IPv6 Endpoint
[2001:db8::10]:51820

IPv6 Endpoint 전체 주소에서는 대괄호로 호스트와 포트를 구분합니다. 입력란이 나뉘어 있으면 화면의 형식에 맞춰 입력하세요.

WireGuard는 UDP를 사용합니다. 51820은 흔히 쓰이는 예시 포트일 뿐, 모든 서비스가 이 포트를 사용하는 것은 아닙니다. 실제 포트는 원본 설정에서 확인하세요. 현재 네트워크에서 해당 UDP 포트에 연결할 수 없다고 해서 숫자를 443으로 바꾸면 연결되는 것은 아닙니다. 원격 서버가 실제로 그 포트에서 서비스를 제공해야 합니다.

DNS는 두 단계를 구분해서 확인해야 합니다. Endpoint가 도메인 이름인 경우 터널을 연결하기 전에 해당 도메인을 조회할 수 있어야 합니다. 터널 내부의 도메인 요청은 Shadowrocket의 현재 DNS 및 설정에 영향을 받습니다. 원본 WireGuard 텍스트에 있는 DNS는 함께 사용할 DNS 정보입니다. 서버 항목을 직접 만들었다고 해서 원본 텍스트의 DNS 행까지 자동으로 적용됐다고 단정하지 마세요.

5. MTU의 의미와 조정 순서

MTU(최대 전송 단위)는 터널 인터페이스가 전송할 수 있는 IP 패킷의 크기를 정합니다. WireGuard 캡슐화에는 추가 오버헤드가 발생하므로 터널 MTU는 보통 하위 링크 MTU보다 작습니다. 하위 MTU가 1500인 일반적인 환경에서 바깥쪽 IPv4 캡슐화는 약 60바이트, IPv6는 약 80바이트를 차지합니다. 1420은 흔히 사용하는 값 중 하나지만 모든 네트워크 경로에 맞는 것은 아닙니다.

MTU가 너무 크면 작은 요청은 처리되지만 큰 응답이 멈추거나 일부 웹페이지가 끝까지 로드되지 않을 수 있습니다. 이는 점검에 참고할 만한 증상일 뿐 MTU 문제를 확정하는 근거는 아닙니다. DNS, 원격 서버의 외부 연결, UDP 패킷 손실, 규칙 선택도 비슷한 증상을 일으킬 수 있으므로 키와 Endpoint가 올바른지 확인한 뒤 조정하세요.

서비스 제공업체가 지정한 MTU 사용

권장

원본 설정에 MTU가 명시돼 있다면 우선 해당 값을 입력하세요. 지정된 값이 없다면 앱의 기본 설정을 유지하고, 재현 가능한 연결 상태를 먼저 확보하세요. 경험에만 의존해 여러 매개변수를 한꺼번에 바꾸지 마세요.

적합한 경우: 최초 설정, 지정된 값이 있는 경우, 연결이 정상인 경우

1420으로 비교 테스트

진단이 필요하고 화면에서 설정할 수 있을 때만 1420으로 한 번 비교 테스트하세요. 흔히 사용하는 터널 MTU 값이지 속도 설정이 아니며, 현재 경로에 맞는다고 보장할 수도 없습니다.

적합한 경우: MTU가 지정되지 않았고 한 가지 변수만 비교하려는 경우

일시적으로 1380으로 낮추기

1420에서 작은 요청은 정상이지만 큰 데이터 전송이 반복해서 멈춘다면 1380으로 일시 비교 테스트하세요. 저장할 때마다 연결을 다시 만든 뒤 같은 대상으로 테스트하고, 개선되지 않으면 원래 값으로 되돌리세요.

적합한 경우: 기본 설정 오류를 제외한 뒤 네트워크 경로를 점검할 때

네트워크 유형, MTU, 테스트 대상, 성공 또는 실패 등 네 가지를 기록하면 유용한 비교 자료가 됩니다. 예를 들어 같은 Wi-Fi에서 1420과 1380을 각각 테스트한 뒤 셀룰러 네트워크에서도 반복할 수 있습니다. 이는 테스트 방법일 뿐, 이 글에서 특정 회선을 실측한 결과가 아닙니다. 웹페이지가 한 번 열렸다고 최적의 MTU라고 판단하거나, 한 번의 속도 측정 결과만으로 결론 내리지 마세요.

6. AllowedIPs와 Global Routing의 설정 범위

표준 WireGuard 설정의 AllowedIPs는 Peer에 사용할 터널 라우팅 범위를 정하고, 해당 Peer에서 수신하는 소스 주소의 범위도 제한합니다. 예를 들어 0.0.0.0/0은 모든 IPv4 주소 범위, ::/0은 모든 IPv6 주소 범위를 뜻합니다. Shadowrocket의 도메인 규칙과는 다르며, Rule 항목에 그대로 붙여 넣어서는 안 됩니다.

Shadowrocket에서는 앱 수준에서 어떤 요청을 선택한 서버로 보낼지도 정해야 합니다. 키와 Endpoint가 모두 올바르더라도 Global Routing이 Direct로 설정돼 있으면 요청이 예상대로 WireGuard 항목을 통과하지 않습니다. Config 모드에서는 현재 활성화된 설정의 규칙이 적용되므로, 일치한 정책이 최종적으로 어디를 가리키는지 함께 확인해야 합니다.

아래 예시는 규칙 문법만 보여 주며 그대로 활성화할 수 있는 완성된 설정이 아닙니다. PROXY는 현재 설정에서 실제로 사용할 수 있는 정책 또는 정책 그룹을 가리켜야 하며, 최종 선택 항목도 원하는 WireGuard 서버여야 합니다. 규칙은 위에서 아래 순서로 확인하며, 먼저 일치하는 규칙이 요청 처리 방식을 결정합니다.

DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

DOMAIN-SUFFIX는 지정된 도메인과 하위 도메인을 일치시킵니다. IP-CIDR은 대상 IP 주소 범위를 일치시킵니다. GEOIP는 IP 데이터베이스의 지역 분류를 기준으로 일치시킵니다. FINAL은 앞선 규칙에 일치하지 않은 요청에 적용됩니다. 예시에 사용된 문서용 주소 범위는 문법 설명용이며 실제 서비스 대상이 아닙니다.

7. 저장 후에도 연결되지 않을 때 확인할 사항

다음 순서로 점검하세요. 설정 항목이 빠짐없이 입력됐는지 → Endpoint에 연결할 수 있는지 → 키와 신원이 일치하는지 → 요청이 해당 서버로 전달되는지 → DNS와 MTU 순입니다. 매번 변수 하나만 바꾸고 원래 값을 기록하세요. 연결 스위치가 켜진 것은 기기에서 연결 기능이 시작됐다는 뜻일 뿐, 원격 핸드셰이크 성공이나 서버를 통한 연결을 보장하지 않습니다.

Private Key를 입력했는데도 작동하지 않는 이유는 무엇인가요?

Home에서 해당 항목의 편집 화면으로 돌아가 키 값만 복사했는지, 앞뒤에 공백이 없는지 확인하세요. 그런 다음 Peer Public Key가 원격 Peer의 키인지 확인합니다. 기기의 Private Key를 새로 생성한 적이 있다면 서비스 제공업체에 등록된 클라이언트 Public Key도 함께 변경됐는지 문의하세요. 새 키를 반복해서 만들지 마세요.

연결 스위치는 켜졌지만 접속 결과가 그대로인가요?

Home에서 새로 만든 WireGuard 항목이 선택돼 있는지 확인한 다음 Global Routing을 점검하세요. Config를 사용하는 경우 Config에서 현재 활성화된 파일을 확인하고 테스트 대상에 적용되는 정책을 살펴보세요. 잠시 Proxy로 비교 테스트한 뒤 진단이 끝나면 원래 트래픽 분기 설정으로 되돌리세요.

Wi-Fi에서는 연결되지 않고 셀룰러에서는 된다면 무엇부터 바꿔야 하나요?

키와 터널 주소는 그대로 두고 먼저 Endpoint 도메인 조회, 지정된 UDP 포트에 대한 연결 가능 여부, 네트워크 제한을 비교하세요. 작은 요청은 성공하지만 큰 전송이 멈추는 증상이 있을 때만 MTU를 비교합니다. 네트워크를 바꾸면서 키, DNS, 포트를 동시에 변경하지 마세요.

같은 설정을 두 기기에서 함께 사용할 수 있나요?

먼저 서비스 제공업체가 기기마다 별도의 신원을 할당하는지 확인하세요. 두 기기가 같은 Private Key와 터널 주소를 동시에 사용하면 원격 서버가 동일한 Peer의 응답 Endpoint를 마지막으로 패킷을 보낸 기기로 바꿀 수 있어 연결이 서로 영향을 받을 수 있습니다. 두 기기를 동시에 사용해야 한다면 별도의 키 쌍과 주소를 발급받으세요.

설정 완료 후 확인 목록

Shadowrocket은 Apple 플랫폼용 클로즈드 소스 유료 앱으로, 주로 iPhone과 iPad에서 사용할 수 있습니다. 유일한 구입 경로는 App Store이며 시스템 요구 사항은 App Store 페이지를 확인하세요. 앱을 구입해도 회선 이용권이 포함되는 것은 아닙니다. 이 글은 이미 이용 중인 서비스 제공업체와 설정이 있는 사용자를 전제로 합니다. 앱을 구입하는 것만으로 Private Key, Peer Public Key 또는 원격 서버 설정이 제공되지는 않습니다.

App Store 정품 확인