VPS에서 WireGuard VPN을 설정하는 방법

ApexVPS 팀 작성 • 최종 업데이트: 2026년 7월 • 읽는 데 9분

이 WireGuard VPS 설정 튜토리얼은 Ubuntu 또는 Debian 서버에서 나만의 개인적이고 빠르며 현대적인 VPN을 구축하는 방법을 보여줍니다. WireGuard는 Linux 커널에 내장된 가벼운 VPN 프로토콜로, OpenVPN이나 IPsec보다 훨씬 간단하면서도 강력하고 최신의 암호화를 제공합니다. 이 튜토리얼을 마치면 실행 중인 서버, 최소 하나의 연결된 클라이언트, 그리고 완전히 제어할 수 있는 암호화된 터널을 갖게 됩니다. 타사 VPN 구독이 필요 없습니다.

자신의 머신에서 WireGuard를 실행하면 트래픽이 혼잡한 소비자 VPN 엔드포인트가 아닌, 임대한 하드웨어에서 종료됩니다. 개인 박스가 더 나은 기반인 이유를 더 깊이 알고 싶다면, 시작하기 전에 개인 VPN용 VPS 선택에 대한 가이드를 읽어 보십시오.

시작하기 전에 필요한 것

VPN에는 안정적이고 경합이 없는 엔드포인트가 중요합니다. 따라서 진정한 전용 리소스가 과도하게 판매된 공유 호스팅보다 낫습니다. 전용 IPv4는 ApexVPS Business 및 Enterprise 플랜에서 사용할 수 있어, 다른 사람과 공유되지 않는 주소로 터널을 운영할 수 있습니다.

1단계: 시스템 업데이트 및 WireGuard 설치

패키지 인덱스를 새로 고치고 WireGuard 사용자 공간 도구를 설치하는 것으로 시작하십시오. 최신 커널에서는 이 패키지 하나만 있으면 됩니다.

sudo apt update
sudo apt install wireguard -y

이 설치는 wgwg-quick를 설치합니다. 이 두 명령은 키, 인터페이스 및 구성을 관리합니다. 설치 확인은 wg --version로 할 수 있습니다.

2단계: 서버 키 생성

WireGuard는 SSH와 마찬가지로 공개/개인 키 쌍으로 피어를 인증합니다. 구성 디렉토리로 이동하여 umask로 파일 권한을 강화하고 한 단계로 키를 생성합니다.

cd /etc/wireguard
umask 077
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key

umask 077 줄은 개인 키를 root만 읽을 수 있도록 보장합니다. 두 값을 출력하여 다음 구성에 붙여넣을 수 있도록 하세요.

sudo cat /etc/wireguard/server_private.key
sudo cat /etc/wireguard/server_public.key

개인 키는 비밀로 유지하세요. 키를 가진 사람은 누구나 서버를 가장할 수 있습니다.

3단계: 서버 구성 파일(wg0.conf) 만들기

서버 인터페이스는 단일 파일 /etc/wireguard/wg0.conf로 설명됩니다. 선호하는 편집기로 생성하세요:

sudo nano /etc/wireguard/wg0.conf

아래 블록을 붙여넣고, <SERVER_PRIVATE_KEY>을 2단계의 개인 키로, eth0를 실제 인터페이스 이름으로 교체하세요(다를 경우).

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

여기서 10.8.0.1/24은 개인 VPN 서브넷, 51820/udp는 수신 포트, PostUp/PostDown 규칙은 클라이언트 트래픽이 서버의 공용 인터페이스를 통해 마스커레이드되도록 NAT를 추가 및 제거합니다. 인터페이스 이름을 찾으려면 다음을 실행하세요:

ip route list default

출력에서 dev 뒤의 단어(주로 eth0, ens3 또는 enp1s0)가 위의 두 방화벽 줄에 사용할 인터페이스입니다.

4단계: IP 전달 및 NAT 활성화

기본적으로 Linux는 인터페이스 간 패킷을 라우팅하지 않으므로 커널에 전달을 지시해야 합니다. sysctl 드롭인 파일로 영구적으로 활성화하세요.

echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf

IPv6도 터널을 통해 라우팅하려면 같은 파일에 net.ipv6.conf.all.forwarding = 1을 추가하세요. 3단계의 MASQUERADE 규칙이 NAT 자체를 처리하므로 전달이 켜지면 라우팅 경로가 완성됩니다.

방화벽 포트 열기

WireGuard UDP 포트를 허용하세요. ufw를 사용하는 경우 다음을 실행하고 SSH를 계속 열어 두어 잠기지 않도록 하세요.

sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
sudo ufw enable

ufw 대신 iptables로 규칙을 직접 관리하는 경우 PostUp 줄이 이미 전달 및 NAT 규칙을 추가하므로 인바운드 UDP 51820이 호스트 방화벽 또는 공급자 보안 그룹에서 허용되는지만 확인하면 됩니다.

5단계: systemd로 WireGuard 시작

wg-quick에는 systemd 서비스 템플릿이 포함되어 있어 지금 터널을 시작하고 재부팅 후 자동으로 복귀하도록 할 수 있습니다.

sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0

enable --now 플래그는 인터페이스를 시작하고 부팅 시 실행되도록 설정합니다. 간단한 확인으로 인터페이스가 올라왔는지 확인할 수 있습니다:

sudo wg show

wg0 인터페이스와 공개 키 및 수신 포트가 표시됩니다. 아직 피어가 없습니다. 다음 단계입니다.

6단계: 클라이언트(피어) 추가

연결되는 각 장치는 자체 키 쌍을 가진 피어입니다. 첫 번째 클라이언트의 키 쌍을 생성하세요:

wg genkey | sudo tee client1_private.key | wg pubkey | sudo tee client1_public.key

이제 서버에 클라이언트를 등록합니다. 클라이언트의 공개 키와 VPN 서브넷의 다음 사용 가능한 주소를 사용하여 [Peer] 블록을 /etc/wireguard/wg0.conf에 추가하세요.

[Peer]
PublicKey = <CLIENT1_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32

새 피어가 적용되도록 인터페이스를 다시 로드하세요:

sudo systemctl restart wg-quick@wg0

터널을 중단하고 싶지 않으신가요? 재시작 없이 피어를 핫 추가할 수 있습니다:

sudo wg set wg0 peer <CLIENT1_PUBLIC_KEY> allowed-ips 10.8.0.2/32

7단계: 클라이언트 구성 및 QR 코드 만들기

서버에서 클라이언트 구성 파일을 조립하세요. 이것이 장치(노트북 또는 휴대폰)가 로드할 내용입니다. 자리 표시자를 클라이언트의 개인 키와 서버의 공개 키 및 공용 IP로 교체하세요.

[Interface]
PrivateKey = <CLIENT1_PRIVATE_KEY>
Address = 10.8.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_PUBLIC_IP>:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0, ::/0 설정은 클라이언트의 모든 트래픽을 터널을 통해 라우팅합니다. 이는 고전적인 전체 VPN 동작입니다. PersistentKeepalive = 25는 NAT와 방화벽을 통해 연결을 유지합니다. 이 파일을 client1.conf로 저장하세요.

데스크톱의 경우 client1.conf을 컴퓨터에 복사하고 공식 WireGuard 클라이언트로 가져옵니다. 휴대폰의 경우 터미널에서 파일을 스캔 가능한 QR 코드로 직접 렌더링하세요:

sudo apt install qrencode -y
qrencode -t ansiutf8 < client1.conf

Android 또는 iOS에서 WireGuard 앱을 열고 "터널 추가"를 선택한 다음 "QR 코드 스캔"을 선택하면 몇 초 안에 터널이 가져와집니다. 공식 앱과 클라이언트는 모두 wireguard.com에서 연결됩니다.

8단계: 터널 확인

클라이언트에서 터널을 활성화한 다음 서버에서 핸드셰이크를 확인하세요. 정상적인 연결은 최근 핸드셰이크와 증가하는 전송 카운터를 보여줍니다.

sudo wg show

피어 아래에서 latest handshake 타임스탬프와 0이 아닌 transfer 값을 찾으세요. 마지막으로 클라이언트에서 공용 IP가 이제 서버의 IP인지 확인하세요:

curl ifconfig.me

VPS 주소가 반환되면 트래픽이 터널을 통해 흐르고 WireGuard VPS 설정이 완료된 것입니다. 더 많은 기기를 추가하려면 새 키 쌍과 10.8.0.0/24 범위의 다음 주소로 6단계와 7단계를 반복하세요.

연결이 되지 않을 때 문제 해결

wg show이 핸드셰이크를 보고하지 않으면 일반적인 원인을 순서대로 확인하세요. 먼저 포트가 실제로 열려 있는지 확인합니다. 다른 머신에서 nc -uzv <SERVER_PUBLIC_IP> 51820를 실행하고 공급자의 보안 그룹이나 방화벽이 TCP뿐만 아니라 인바운드 UDP 51820을 허용하는지 확인하세요. 둘째, IP 전달이 실제로 활성화되어 있는지 sysctl net.ipv4.ip_forward로 확인합니다. 1를 반환해야 합니다. 셋째, PostUp NAT 규칙의 인터페이스 이름이 ip route list default의 출력과 일치하는지 다시 확인하세요. 불일치가 트래픽이 인증되지만 인터넷에 도달하지 못하는 가장 흔한 원인입니다. 마지막으로 키가 바뀌지 않았는지 확인합니다. 서버 구성에는 서버의 개인 키와 클라이언트의 공개 키가 있고, 클라이언트 구성은 그 배열을 미러링합니다. 키 하나가 잘못되면 핸드셰이크가 조용히 차단됩니다.

WireGuard에 적합한 VPS 선택

WireGuard 자체는 매우 가볍습니다. 프로토콜이 CPU를 거의 사용하지 않아 입문자용 플랜으로도 개인 VPN을 편안하게 운영할 수 있습니다. 실제로 경험을 결정하는 것은 네트워크입니다. 대역폭, 지역까지의 지연 시간, IP가 독점인지 여부입니다. ApexVPS는 39개 지역에서 진정한 전용 vCPU, RAM, NVMe 스토리지를 제공하며 주요 지역에서 낮은 지연 시간을 제공하므로 처리량이 이웃의 노이즈로 인해 저하되지 않고 예측 가능하게 유지됩니다.

터널을 안정적이고 공유되지 않는 주소에서 운영하려면 Business 및 Enterprise 플랜에 전용 IPv4가 포함되어 있습니다. 개인 정보 보호가 VPN을 자체 호스팅하는 이유인 경우가 많으므로 가입 방법에 주목할 필요가 있습니다. ApexVPS는 KYC 없는 VPS로 이메일 전용 가입과 OxaPay를 통한 암호화폐 전용 결제를 제공하며 Bitcoin, Ethereum, USDT 및 30개 이상의 암호화폐를 지원합니다. 이름, 주소, 신용카드 또는 은행 계좌가 필요 없습니다.

자주 묻는 질문

VPS에서 WireGuard를 설정하는 것이 어렵나요?

아니요. WireGuard는 작고 읽기 쉬운 구성 파일과 몇 가지 표준 명령을 사용합니다. 새로운 Ubuntu 또는 Debian VPS에서 설치하고, 키를 생성하고, wg0.conf을 작성하고, 첫 번째 클라이언트를 약 10~15분 안에 연결할 수 있습니다.

WireGuard VPN에 전용 IP가 필요한가요?

전용 IP는 필수는 아니지만 다른 고객과 공유되지 않는 안정적인 엔드포인트를 제공합니다. ApexVPS에서는 Business 플랜에 전용 IPv4가 포함되고 Enterprise에는 두 개가 포함됩니다.

어떤 Ubuntu 및 Debian 버전이 WireGuard를 지원하나요?

WireGuard는 Linux 커널 5.6부터 내장되어 있으므로 Ubuntu 20.04 이상과 Debian 11 이상에는 기본으로 포함되어 있습니다. apt로 사용자 공간 도구만 설치하면 됩니다.

같은 서버를 휴대폰에서 사용할 수 있나요?

네. 휴대폰용으로 두 번째 피어를 추가하고 클라이언트 구성을 생성한 후 qrencode로 QR 코드로 렌더링하세요. 공식 WireGuard Android 및 iOS 앱이 코드를 스캔하여 즉시 연결합니다.

신용카드 없이 VPS를 결제할 수 있나요?

네. ApexVPS 결제는 암호화폐 전용이며 Bitcoin, Ethereum, USDT 및 30개 이상의 암호화폐를 지원합니다. 가입 시 액세스 세부 정보를 보내기 위한 이메일만 필요합니다. 이름, 주소, ID는 필요 없습니다.

자체 VPN을 호스팅할 준비가 되셨나요? 프라이빗 VPN에 ApexVPS가 최적인 이유를 확인하세요 →