WireGuard 설정의 핵심은 기기와 원격 Peer를 구분하는 것입니다. Private Key는 이 기기의 키이고, Peer의 Public Key는 원격 키이며, Endpoint는 원격 서버의 공인 주소, Address는 이 기기의 터널 주소입니다. 이미 보유한 WireGuard 설정을 기준으로 Shadowrocket에서 각 항목을 입력하는 방법을 살펴보고, Allowed IPs, 라우팅 방식, DNS를 차례로 확인해 “연결은 켰지만 접속되지 않는” 원인을 찾습니다.
1. 추가하기 전에 Interface와 Peer 구분하기
표준 WireGuard 설정은 보통 [Interface]와 [Peer] 두 부분으로 구성됩니다. 앞부분은 이 기기의 신원과 터널 주소를, 뒷부분은 연결할 상대를 설명합니다. Shadowrocket의 항목 배치가 설정 파일과 다르더라도 각 값이 어느 쪽에 속하는지 확인해 입력해야 하며, 양쪽 키를 서로 바꾸면 안 됩니다.
먼저 보유 중인 서비스 제공자의 전체 설정을 준비하고, 아직 유효한지 확인하세요. Endpoint 하나나 Public Key만으로는 연결할 수 없습니다. 서버에도 이 기기의 Private Key에 대응하는 Public Key가 등록되어 있어야 하며, 이 기기에 할당된 터널 주소를 사용할 수 있어야 합니다. 이 문서는 설정을 입력하고 확인하는 방법만 다루며 노드, 구독, VPN 서비스 또는 초대 코드를 제공·판매·추천하지 않습니다.
요약: 먼저 항목의 소속을 구분한 뒤 입력하세요
원래 설정의 Interface와 Peer를 각각 확인하세요. 키가 어느 쪽에 속하는지 확실하지 않다면 설정을 제공한 곳에 먼저 문의하세요. 키를 서로 바꿔가며 반복해서 연결을 시도하지 마세요.
2. Add Server에서 순서대로 입력하기
아래 설명은 iPhone/iPad의 Home 화면을 기준으로 합니다. Home → + → Add Server → Type → WireGuard로 이동한 뒤 이 기기의 정보를 먼저 입력하고 Peer 정보를 이어서 입력하세요. 현재 화면에서 Endpoint가 주소와 포트로 나뉘거나 Peer가 별도 편집 영역에 표시되면 각 항목의 의미에 맞게 입력하세요. 전체 설정 텍스트를 주소 입력란에 붙여 넣으면 안 됩니다.
-
유형 선택
Home 화면 오른쪽 위의 “+”를 누르고 Add Server로 이동해 Type을 WireGuard로 설정하세요. 항목을 쉽게 식별할 수 있도록 알아보기 쉬운 이름을 입력하면 기존 서버와 혼동하지 않습니다.
-
이 기기 정보 입력
Interface의 PrivateKey를 Private Key에 입력하고, Address는 이 기기의 터널 주소에 입력하세요. 주소 뒤의 프리픽스 길이도 유지해야 합니다. 예:
10.66.0.2/32. -
원격 Peer 정보 입력
Peer에 해당하는 영역으로 이동해 Peer의 PublicKey와 Endpoint를 입력하세요. 주소와 포트가 별도 항목으로 표시되면 호스트 주소와 숫자 포트를 나누어 입력합니다.
-
옵션 확인
원래 설정을 기준으로 Allowed IPs, Preshared Key, MTU, DNS, Persistent Keepalive를 확인하세요. 제공되지 않은 선택 항목을 다른 계정의 설정에서 복사하지 마세요.
-
저장 후 테스트
저장한 뒤 Home으로 돌아가 원형 표시를 눌러 해당 서버를 선택하고 연결 스위치를 켜세요. 처음 연결할 때 시스템 안내에 따라 VPN 구성을 허용한 다음 Connectivity Test를 실행합니다.
서버 항목이 구독에서 생성된 경우 구독의 원래 설정값을 우선 확인하세요. 구독을 업데이트하면 항목이 새로 생성되어 수동 수정 내용이 덮어써질 수 있습니다. 문제를 확인할 때는 먼저 기존 값을 기록해 두어 업데이트 후 변경 사항이 유지된 것으로 착각하지 않도록 하세요. 일반 구독 주소를 WireGuard의 Endpoint로 사용하면 안 됩니다.
3. Private Key, Public Key, Preshared Key 입력 항목
Private Key는 이 기기의 개인 키입니다. Interface의 PrivateKey 값이며, 공개 토론방이나 스크린샷에 노출하지 마세요. WireGuard의 Base64 키 문자열은 보통 44자입니다. 다만 글자 수가 맞더라도 형식이 올바를 가능성이 있다는 뜻일 뿐, 서버에 등록된 정보와 일치한다는 의미는 아닙니다.
| 원래 설정의 항목 | 입력할 항목 | 확인할 사항 |
|---|---|---|
| Interface / PrivateKey | Private Key | 이 기기의 개인 키. 공백이나 줄바꿈 없이 전체 복사 |
| Interface / Address | 이 기기의 터널 주소 | 공인 Endpoint가 아닙니다. CIDR 프리픽스를 유지하세요 |
| Peer / PublicKey | Peer의 Public Key | 원격 공개 키이며 이 기기의 공개 키가 아닙니다 |
| Peer / PresharedKey | Preshared Key | 선택 항목인 사전 공유 키. 양쪽 값이 일치해야 합니다 |
| Peer / Endpoint | 원격 주소 및 포트 | 접속 가능한 원격 UDP 서비스 주소를 가리켜야 합니다 |
Peer의 Public Key는 원격 공개 키입니다. 이 기기의 Private Key에서 파생된 공개 키를 여기에 입력하지 마세요. 이 기기의 Public Key는 원격 서버가 이 기기를 식별하는 데 사용하고, Peer의 Public Key는 이 기기가 원격 서버를 식별하는 데 사용합니다. 두 키의 용도는 서로 반대입니다.
Preshared Key는 추가 사전 공유 키입니다. 원래 설정에 값이 없으면 보통 비워 둡니다. 한쪽에만 입력하거나 양쪽 값이 다르면 핸드셰이크가 실패합니다. 로그인 비밀번호가 아니며 구독 token으로 대체할 수도 없습니다.
4. Endpoint와 Allowed IPs: 주소와 라우팅은 다릅니다
Endpoint는 원격에서 WireGuard UDP 패킷을 실제로 받는 주소입니다. 예: 192.0.2.10:51820. 문서용 예시 주소이므로 연결에 사용할 수 없습니다. 51820도 흔히 쓰이는 포트일 뿐 필수 값은 아닙니다. 원래 설정에 적힌 포트를 사용하고 임의로 443으로 바꾸지 마세요.
- 화면에서 주소와 포트가 별도 입력란으로 나뉘면 주소란에는 호스트 이름이나 IP만, 포트란에는 10진수 포트 번호만 입력하세요.
- Endpoint에 도메인 이름을 사용하는 경우 연결 전에 해당 도메인을 해석할 수 있어야 합니다. 이름 해석에 실패하면 아직 WireGuard 핸드셰이크 단계에 도달하지 않은 것입니다.
- 주소와 포트를 함께 입력하는 형식에서는 IPv6 Endpoint의 주소와 포트를 구분하기 위해 대괄호를 사용합니다. 예:
[2001:db8::10]:51820. 이 주소 역시 문서 설명용입니다. - Address는 터널 내부에서 사용하는 이 기기의 주소이고, Endpoint는 원격 접속 지점입니다. 두 값은 서로 바꿔 쓸 수 없습니다.
Allowed IPs는 원래 설정의 AllowedIPs에 해당하며, 해당 Peer와 연결된 터널 내부 IP 범위를 나타냅니다. WireGuard는 이를 기준으로 패킷을 보낼 Peer를 선택하고, 수신 패킷의 출발지 주소가 해당 Peer에 속하는지도 확인합니다. “접속을 허용할 웹사이트 도메인 목록”이 아니며 example.com을 입력할 수도 없습니다.
0.0.0.0/0
::/0
10.20.0.0/16
위의 세 행은 각각 모든 IPv4 주소, 모든 IPv6 주소, 특정 IPv4 대역을 나타내는 범위 예시입니다. 모두 그대로 입력하라는 뜻은 아닙니다. 기존 설정에서 10.20.0.0/16만 허용한다면 이를 전체 주소 범위로 바꾸더라도 원격의 인터넷 포워딩 기능이 저절로 생기지 않습니다. 원격 측에 해당 라우팅과 포워딩 및 접속 권한이 갖춰져 있어야 합니다.
5. MTU, DNS, Persistent Keepalive 설정 순서
MTU는 터널 인터페이스가 처리할 수 있는 IP 패킷 크기를 정하며, 대역폭 상한이 아닙니다. 원래 설정에 MTU가 있으면 우선 그대로 사용하세요. 값이 없다면 우선 기본 처리 방식을 사용하고, 처음부터 값을 반복해서 바꾸지 마세요. 외부 네트워크의 캡슐화 방식과 경로 MTU는 환경마다 다르므로 한 네트워크에서 작동한 값이 모든 네트워크에 맞는 것은 아닙니다.
| 매개변수 | 기능 | 설정 기준 |
|---|---|---|
| MTU | 터널 패킷 크기 제한 | 작은 요청은 정상인데 큰 요청이 멈출 때 확인합니다. 예를 들어 1420에서 1380으로 조정한 뒤 같은 대상을 다시 테스트하세요 |
| DNS | 도메인 이름을 해석할 서버 지정 | 현재 라우팅으로 DNS 서버에 연결할 수 있는지 확인하고 실제 적용 중인 DNS 설정도 점검하세요 |
| Persistent Keepalive | NAT 매핑 유지를 돕기 위해 주기적으로 keepalive 패킷 전송 | 원래 설정에 맞춰 입력하세요. 25초는 흔히 드는 예시일 뿐 필수 값이 아닙니다 |
DNS는 WireGuard 핸드셰이크 프로토콜의 일부가 아니며, 설정 파일의 DNS는 클라이언트나 설정 도구에서 처리되는 경우가 많습니다. 따라서 원본 파일에 DNS가 적혀 있다는 이유만으로 Shadowrocket에서 해당 값을 사용한다고 단정할 수 없습니다. 서버 항목의 DNS 매개변수와 Settings → DNS 설정을 모두 확인하세요. 현재 Config 파일에 DNS 설정이 있다면 어떤 설정이 실제로 적용되는지도 확인해야 합니다.
DNS 주소가 10.66.0.1처럼 터널 내부 주소라면 Allowed IPs에 해당 주소가 포함되어 있고 DNS 요청이 실제로 터널을 통과하는지 확인하세요. 그렇지 않으면 Endpoint에는 접속할 수 있고 터널도 연결된 것처럼 보이지만 도메인 이름 해석은 시간 초과될 수 있습니다. DNS 서버만 바꾸고 해당 서버에 도달하는 경로를 놓치지 마세요.
- MTU를 조정할 때는 한 번에 값 하나만 바꾸세요. 다시 연결한 뒤 같은 대상으로 같은 종류의 요청을 보내 개선 여부를 기록합니다.
- 작은 요청은 성공하지만 큰 파일 전송이 멈추는 현상은 MTU 점검의 단서일 뿐입니다. 원격 포워딩이나 대상 서버의 문제일 수도 있으므로 이것만으로 원인을 단정할 수 없습니다.
- Persistent Keepalive는 유휴 연결의 NAT 매핑 유지에 도움이 되지만, 잘못된 공개 키나 포트, 또는 원격 서버에 이 기기의 공개 키가 등록되지 않은 문제를 해결하지는 못합니다.
6. Proxy, Config, Direct를 구분해 확인하기
Home의 연결 스위치가 켜졌다는 것은 클라이언트 연결 절차가 활성화되었다는 뜻일 뿐, 모든 대상 연결이 WireGuard를 통과한다는 뜻은 아닙니다. 테스트 전에 원형 표시를 눌러 방금 저장한 항목을 선택한 다음 Global Routing을 확인하세요. 아래에서는 프로토콜 속도가 아니라 Shadowrocket 자체의 라우팅 방식을 비교합니다.
Proxy: 규칙의 영향을 분리해 확인
권장클라이언트가 관리하는 연결을 임시로 선택한 프록시 경로에 보내 이번 테스트에서 Config 라우팅 규칙의 영향을 줄입니다. Allowed IPs 범위를 넓히거나 원격 포워딩 기능을 추가하지는 않습니다.
적합한 경우: 인터넷 포워딩 기능이 있는 WireGuard 설정을 처음 확인할 때
Config: 규칙 적용 결과 확인
현재 활성화된 설정 파일에 따라 트래픽을 분배합니다. 먼저 대상에 어떤 규칙과 정책이 적용되는지 확인한 뒤 연결을 WireGuard로 보내야 하는지 판단하세요. 앞선 규칙에 일치하지 않은 연결은 마지막에 FINAL이 처리합니다.
적합한 경우: 기본 연결을 확인한 뒤 평소 사용하는 규칙 기반 라우팅을 복원할 때
Direct: 직접 연결과 비교
직접 연결 경로를 사용합니다. 이 상태에서 웹페이지가 열려도 WireGuard가 작동한다는 증거는 아니지만, 현재 네트워크에서 해당 대상에 원래 접속할 수 있는지 확인하는 데 도움이 됩니다.
적합한 경우: 로컬 네트워크 문제와 터널 경로 문제를 구분할 때
Global Routing의 Scene은 설정된 장면에 따라 라우팅을 처리합니다. 문제를 확인할 때는 장면 이름만 보는 대신 실제 적용되는 정책도 확인하세요. 수동으로 연결을 끊은 뒤 자동으로 다시 연결된다면 Settings → On Demand를 확인합니다. On Demand는 필요에 따른 연결 동작을 제어할 뿐 WireGuard 설정 오류를 해결하지 않습니다.
- 현재 Global Routing 방식을 기록하고 테스트할 서버를 선택한 뒤 연결을 켜서 Connectivity Test를 실행하세요.
- 현재 Allowed IPs 범위에 포함되고 접속이 허용된 것으로 확인된 대상을 테스트하세요. 내부 네트워크만 제공하는 설정이라면 내부 서비스를 대상으로 테스트해야 합니다.
- 사용 가능한 핸드셰이크 또는 트래픽 기록이 있다면 핸드셰이크가 완료되지 않은 경우와 완료 후에도 트래픽이 통하지 않는 경우를 구분하세요. 지연 시간 숫자 하나만으로 실제 서비스 연결을 확인할 수는 없습니다.
- Config를 복원한 다음 같은 대상에 다시 접속해 적용된 규칙, DNS, 연결 결과가 달라졌는지 확인하세요.
7. 입력 후 자주 발생하는 문제와 해결 방법
Private Key를 저장했는데도 연결되지 않는 이유는 무엇인가요?
저장 성공은 입력값을 받아들였다는 뜻일 뿐입니다. Home으로 돌아가 해당 항목을 편집하고 Interface의 PrivateKey, Peer의 PublicKey, PresharedKey가 각각 올바른 곳에 입력됐는지 확인하세요. 그런 다음 원격 서버에 이 개인 키에 대응하는 이 기기의 공개 키가 등록되어 있는지 확인합니다.
Endpoint 포트는 모두 51820으로 입력하면 되나요?
아닙니다. 51820은 흔히 쓰이는 예시일 뿐이므로 기존 설정에 지정된 UDP 포트를 사용해야 합니다. 주소와 포트가 별도 입력란이라면 콜론과 포트를 주소란에 함께 입력하지 마세요. 신뢰할 수 있는 다른 네트워크에서도 테스트하면 현재 네트워크에서 UDP에 접속할 수 있는지 구분하는 데 도움이 됩니다.
내부 주소에는 접속되지만 일반 웹페이지가 열리지 않으면 어떻게 하나요?
먼저 Allowed IPs에 내부 네트워크 대역만 포함되어 있는지 확인한 뒤, 해당 서비스가 원래 인터넷 포워딩을 제공하는지 확인하세요. 공용 인터넷 접속이 가능해야 하는 구성이라면 Global Routing과 DNS도 점검합니다. 모든 주소 범위를 추가하는 방식으로 해결하려고 하지 마세요.
구독을 업데이트한 뒤 수동으로 바꾼 MTU가 원래대로 돌아왔나요?
구독 항목은 업데이트 과정에서 원격 설정에 따라 다시 생성될 수 있습니다. 업데이트 전 기록과 비교해 매개변수가 어떻게 바뀌었는지 확인한 뒤, 이미 사용 중인 서비스의 설정 제공처를 통해 변경하세요. 수동 테스트 항목을 새로 만든다면 알아보기 쉬운 이름을 지정해 업데이트된 항목을 다시 선택하지 않도록 합니다.
문제 해결이 끝나면 필요한 항목 확인 내역만 보관하세요. 문제를 공유할 때는 Private Key, Preshared Key, 구독 token 등 민감한 정보를 숨겨야 합니다. 주소와 오류 상황을 보여줘야 한다면 계정 식별 정보도 먼저 삭제하세요. 여러 항목을 동시에 바꾸기보다 “신원 키 → Endpoint → Allowed IPs → DNS → MTU” 순서로 하나씩 확인하면 원인을 찾기 쉽습니다.