Shadowrocket WireGuard 설정 방법: Private Key, Peer, MTU 필드 설명

WireGuard 설정의 Private Key, Public Key, Address, Peer, MTU, DNS 필드와 제공된 설정값 입력법, 자주 하는 실수를 정리했습니다.

이 글 미리보기

WireGuard를 설정할 때는 먼저 로컬 Interface와 원격 Peer를 구분해야 합니다. Private Key는 로컬 장치에, Peer의 Public Key는 원격 장치에 속하며 터널 Address는 서버 Endpoint와 다릅니다. 사용할 수 있는 WireGuard 설정을 이미 보유한 사용자를 위해 필드 대응 관계, 추가 절차, 문제별 점검 방법을 설명합니다. Shadowrocket에서 키, 주소, UDP 포트, MTU, DNS를 확인하고, 매개변수를 무작정 바꿔가며 문제를 해결하려 하지 않도록 돕습니다.

먼저 Interface와 Peer 구분하기

WireGuard 설정은 보통 [Interface]와 하나 이상의 [Peer] 섹션으로 구성됩니다. Interface는 로컬 장치의 터널 ID와 주소를, Peer는 로컬 장치와 통신하는 상대방을 설명합니다. 제공받은 설정을 Shadowrocket에 입력하기 전에 두 역할에 따라 필드를 정리한 뒤 Home에서 항목을 추가하세요. 필드 이름에 Key나 Address가 들어 있다는 이유만으로 바로 붙여 넣지 마세요.

이 글은 사용자가 서비스 제공업체와 설정을 이미 보유하고 있다는 전제에서 작성했습니다. Shadowrocket은 폐쇄형 상용 앱이며, 앱을 구매해도 회선 요금제가 포함되지는 않습니다. 이 사이트는 노드나 구독을 제공·판매·추천하지 않습니다. WireGuard 필드가 유효하려면 양쪽 설정이 서로 맞아야 하며, 앱을 구매한다고 사용할 수 있는 원격 Peer가 생성되는 것은 아닙니다.

로컬 측 Interface

Private Key
로컬 Private Key. 원본 설정의 PrivateKey에 해당합니다.
Address
로컬 장치에 할당된 터널 IP 주소와 프리픽스 길이입니다.
MTU
터널 인터페이스가 허용하는 최대 IP 패킷 크기입니다.
DNS
설정에 지정된 리졸버 주소입니다. 실제 적용 범위를 확인하세요.

로컬 키와 터널 주소는 동일한 유효 설정에서 가져와야 합니다.

원격 측 Peer

Public Key
원격 공개 키. Peer 섹션의 PublicKey에 해당합니다.
Endpoint
원격 서버 주소와 UDP 포트입니다.
AllowedIPs
해당 Peer에 연결된 터널 주소 범위입니다.
Preshared Key
양측에서 합의한 선택적 사전 공유 키입니다.

로컬 공개 키를 원격 Public Key 필드에 입력하지 마세요.

Private Key, Public Key, Preshared Key

PrivateKey와 PublicKey는 한 쌍으로 사용되는 신원 정보입니다. 로컬 Private Key에 대응하는 로컬 공개 키를 원격 측에 등록해야 합니다. 반대로 로컬 설정의 Peer Public Key에는 원격 공개 키를 입력해야 합니다. 양쪽이 서로를 식별하는 구조이므로 같은 공개 키를 모든 필드에 복사하면 안 됩니다.

WireGuard 표준 키는 32바이트 데이터이며, 일반적으로 44자의 Base64 문자열로 표시되고 끝에 =가 붙습니다. 길이가 맞더라도 형식이 그럴듯하다는 뜻일 뿐, 현재 계정이나 Peer에 속한 키인지는 확인할 수 없습니다. 복사할 때 끝 문자를 유지하고 실수로 붙은 따옴표, 줄바꿈, 앞뒤 공백은 제거하세요. 키 값만 받는 입력란에 PrivateKey = 전체를 붙여 넣지 마세요.

Address와 Endpoint: 서로 바꿔 쓸 수 없는 주소

Interface의 Address는 터널 내부 주소입니다. 예를 들어 10.66.0.2/32에서 /32는 IPv4 프리픽스 길이이지 포트가 아닙니다. Endpoint는 WireGuard 통신을 시작할 때 접속해야 하는 원격 네트워크 주소이며, 보통 도메인이나 IP 주소와 UDP 포트로 구성됩니다. 둘은 역할이 다릅니다. 화면에 모두 Address라고 표시되더라도 어느 항목에 속하는지 확인하세요.

원본 설정 값의미입력 시 확인 사항
Address = 10.66.0.2/32로컬 터널 IPv4 주소로컬 터널 주소 필드에 입력하고, 입력란의 형식에 맞춰 프리픽스를 유지하세요.
Address = fd66::2/128로컬 터널 IPv6 주소원본 설정에 해당 주소가 할당된 경우에만 입력하세요. 임의로 추가하지 마세요.
Endpoint = 192.0.2.10:51820원격 IPv4 주소와 UDP 포트입력란이 분리되어 있으면 Address에 IP를, Port에 51820을 입력하세요.
Endpoint = [2001:db8::10]:51820원격 IPv6 주소와 UDP 포트주소와 포트를 한 문자열로 표시할 때는 대괄호로 IPv6 주소와 포트를 구분하세요. 입력란이 나뉘어 있다면 각 필드 형식에 맞춰 입력하면 됩니다.

표에 나온 주소는 형식을 설명하기 위한 예시이며 실제 서버로 사용할 수 없습니다. 51820은 흔히 쓰이는 포트이지 필수값은 아닙니다. 원본 설정에 다른 포트가 적혀 있다면 해당 값을 그대로 입력하세요. Endpoint 앞에 https://를 붙이거나 구독 링크를 입력하면 안 됩니다. 도메인을 사용하는 경우 원격 장치로 WireGuard 핸드셰이크 패킷을 보내기 전에 로컬에서 도메인을 조회할 수 있어야 합니다.

Home에서 추가한 뒤 항목별로 테스트하기

먼저 원본 설정을 따로 보관한 다음 앱을 조작하세요. 아래 절차는 기존 WireGuard 매개변수를 직접 입력하는 방법입니다. 이미 구독에서 매개변수를 관리하고 있다면 업데이트 시 해당 항목이 덮어써지는지 먼저 확인하세요. 화면 배치에 따라 터널 매개변수가 각각의 항목으로 나뉠 수 있습니다. 필드의 소속은 Interface와 Peer를 기준으로 확인하고, 설정 파일의 섹션 표시를 필드 값으로 입력하지 마세요.

  1. 매개변수 정리

    Interface의 PrivateKey와 Address, Peer의 PublicKey와 Endpoint를 각각 옮겨 적으세요. PresharedKey, MTU, DNS가 있다면 함께 기록합니다. Peer가 여러 개라면 입력할 항목을 먼저 확인하세요.

  2. 유형 선택

    Home → 오른쪽 위 «+» → Type → WireGuard로 이동한 뒤 항목의 메모와 원격 주소 정보를 입력하세요. 메모는 항목을 구분하기 위한 것이며 키 인증에는 사용되지 않습니다.

  3. 역할 확인

    로컬 Private Key와 터널 Address, 원격 Public Key를 입력하고 원본 설정에 따라 나머지 매개변수를 추가하세요. 저장하기 전에 항목별로 대조하고, 특히 Endpoint의 Port에 터널 프리픽스 길이를 잘못 입력하지 않았는지 확인하세요.

  4. 분리 테스트

    Home으로 돌아가 해당 항목을 선택한 뒤 Global Routing을 일시적으로 Proxy로 설정하고 연결을 켜세요. 접속이 확인된 대상을 열어 테스트합니다. 테스트가 끝나면 Global Routing을 원래 설정으로 되돌려 임시 설정을 평소 구성으로 남기지 마세요.

  5. 자동 연결 확인

    수동으로 연결을 끊은 뒤 다시 연결된다면 Settings → On Demand를 확인하세요. 테스트 중에는 자동 연결을 유발할 수 있는 조건을 먼저 비활성화하고, 확인을 마친 뒤 필요한 설정을 복구하세요.

시스템 VPN 상태가 연결로 표시된다고 해서 원격 핸드셰이크까지 성공한 것은 아닙니다. 우선 로컬 VPN 세션이 시작됐음을 나타냅니다. 원격 장치와 데이터를 주고받을 수 있는지는 실제 요청 결과, 확인 가능한 핸드셰이크 기록, 송수신 카운터를 함께 살펴봐야 합니다. 스위치가 켜졌다는 이유로 키와 Endpoint 확인을 건너뛰지 마세요.

AllowedIPs와 Global Routing의 역할

표준 WireGuard 설정에서 AllowedIPs는 주소 범위를 특정 Peer에 연결하며, 수신 데이터의 소스 주소 검증에도 사용됩니다. 0.0.0.0/0은 모든 IPv4 주소 범위를, ::/0은 모든 IPv6 주소 범위를 뜻합니다. 이 값만으로 원격 측이 해당 IP 버전의 트래픽을 전달할 수 있는 것은 아닙니다.

Shadowrocket의 Global Routing은 앱이 요청을 어떤 경로로 처리할지 결정합니다. Proxy는 프록시 연결, Direct는 직접 연결, Config는 현재 설정에 따른 처리, Scene은 선택한 시나리오에 따른 처리를 뜻합니다. AllowedIPs는 Config에 사용하는 도메인 규칙이 아닙니다. 주소 목록에 DOMAIN-SUFFIX나 FINAL을 입력할 수 없습니다.

MTU: 원래 값부터 사용하고 증상에 따라 조정

MTU는 터널 인터페이스가 전달할 수 있는 최대 IP 패킷 크기를 정합니다. WireGuard는 UDP로 데이터를 캡슐화하며, 바깥쪽에는 IP와 UDP, 프로토콜 자체가 차지하는 공간도 필요합니다. 추가 확장이 없는 일반적인 데이터 캡슐화에서 외부 IPv4 오버헤드는 약 60바이트, 외부 IPv6 오버헤드는 약 80바이트입니다. 실제 사용 가능한 값은 접속 네트워크와 전체 경로에 따라 달라집니다.

60바이트
일반적인 외부 IPv4 캡슐화 오버헤드
80바이트
일반적인 외부 IPv6 캡슐화 오버헤드
1420
외부 MTU가 1500이고 80바이트를 예약했을 때의 계산값

1420은 흔히 쓰이는 참고값이지 모든 네트워크에 최적인 값은 아닙니다. 원본 설정에 MTU가 명시되어 있다면 먼저 그대로 입력하세요. 값이 없다면 앱의 기본 처리를 우선 유지합니다. 핸드셰이크와 작은 요청은 정상이지만 큰 페이지나 업로드가 계속 멈출 때만 MTU를 점검하세요. 잘못된 키를 바로잡는 대신 MTU를 낮춰서는 안 됩니다.

  1. 현재 MTU와 재현할 대상을 기록하고, 같은 네트워크에서 작은 요청, 큰 페이지, 업로드를 각각 테스트하세요.
  2. 다른 필드는 그대로 둔 채 예를 들어 1420에서 1380으로 조정한 다음, 다시 연결해 동일한 요청을 반복하세요. 이는 점검 방법의 예시이며 실제 측정 결과가 아닙니다.
  3. 증상이 개선되지 않으면 원래 값으로 되돌린 뒤 UDP 연결 가능 여부, DNS, 원격 트래픽 전달을 확인하세요. 개선된다면 Wi-Fi와 셀룰러 네트워크를 전환한 뒤에도 같은 결과가 나타나는지 확인합니다.

DNS: Endpoint 조회와 터널 내부 조회 구분하기

WireGuard 암호화 프로토콜 자체는 DNS를 전달하지 않습니다. 일반적인 설정의 DNS는 클라이언트가 처리하는 추가 설정입니다. 원본 파일의 DNS 값을 입력한 뒤에도 실제 조회 경로를 확인하려면 Shadowrocket의 현재 Config에서 DNS 설정을 살펴봐야 합니다. 필드가 있다는 이유만으로 모든 조회가 해당 리졸버를 이용한다고 단정하지 마세요.

통신을 시작하기 전에 Endpoint 도메인을 조회하는 단계와 연결 후 웹사이트 도메인을 조회하는 단계는 서로 다릅니다. Endpoint가 도메인이고 지정된 DNS에 접속하려면 터널이 먼저 연결되어야 한다면 초기 도메인 조회를 위한 별도의 경로가 필요합니다. 문제를 확인할 때는 먼저 현재 접속 네트워크에서 원격 도메인을 조회할 수 있는지, 그다음 터널 내부 DNS에 접속할 수 있는지 확인해 두 종류의 실패를 혼동하지 마세요.

자주 묻는 질문: 증상에 따라 범위 좁히기

Private Key를 입력했는데도 트래픽이 없는 이유는 무엇인가요?

먼저 Peer의 Public Key와 Endpoint를 대조한 뒤, 원격 측에 현재 Private Key에 대응하는 로컬 공개 키가 등록되어 있는지 확인하세요. 원본 설정에 PresharedKey가 있다면 그것도 입력해야 합니다. 로컬 Private Key가 올바르다는 사실만으로 양쪽의 인증 정보가 서로 맞는 것은 아닙니다.

Port는 반드시 51820으로 입력해야 하나요?

그렇지 않습니다. 보유한 설정의 Endpoint 포트를 기준으로 하고, 해당 UDP 포트로 통신할 수 있는 경로인지 확인하세요. 포트만 443으로 바꿔도 WireGuard가 HTTPS로 바뀌거나 UDP 제한이 자동으로 해결되지는 않습니다.

간단한 페이지는 열리는데 큰 페이지가 계속 로딩되는 경우 어떻게 하나요?

먼저 같은 네트워크에서 요청을 반복해 특정 웹사이트의 문제인지 확인하세요. 키와 Endpoint는 그대로 둔 채 현재 MTU를 기록하고 한 번 낮춰 테스트합니다. 도메인 요청만 실패한다면 MTU만 원인으로 단정하지 말고 DNS도 확인하세요.

셀룰러 네트워크로 바꾸면 연결되지 않습니다. 키를 다시 입력해야 하나요?

현재 네트워크에서 UDP 통신이 가능한지, Endpoint 도메인을 조회할 수 있는지 확인한 다음 Settings → On Demand가 연결 동작을 바꿨는지 살펴보세요. 네트워크가 바뀌었다고 키를 교체할 필요는 없습니다. 원본 설정에 PersistentKeepalive가 있다면 원래 값을 유지하세요. 이 설정은 UDP 경로가 연결되지 않는 문제를 해결하지는 못합니다.

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

각 기기마다 별도의 키와 터널 주소를 사용하는 것이 좋습니다. 두 기기에서 같은 Private Key를 동시에 사용하면 원격 측이 최근 인증 패킷에 따라 Endpoint를 갱신해 트래픽이 기기 사이에서 오갈 수 있습니다. MTU를 높이거나 DNS를 바꿔도 이처럼 신원 정보를 공유하는 문제는 해결되지 않습니다.

작업을 마친 뒤 매개변수 출처, 선택한 항목, Global Routing 설정, 테스트 네트워크, 변경 전후의 MTU를 정리한 기록을 남기세요. 민감한 정보는 가려야 합니다. 원래 Config와 On Demand 설정을 복구한 뒤 실제로 접속을 다시 테스트해 임시 테스트 결과가 일상 사용에서도 유지되는지 확인하세요.

App Store 정품 확인