본문 바로가기
IT적응기

WireGuard VPN (보안 설계, 직접 설치, Split Tunneling)

by IT적응기 2026. 4. 28.

VPN 외부 접속 완벽 가이드 – 초보자도 따라하는 집 네트워크 원격 접속 보안 설정 4단계 참고 이미지
초보자도 따라하는 집 네트워크 원격 접속 보안 설정 4단계

외부에서 집 NAS에 접근하려고 포트 포워딩을 열었다가, 며칠 만에 외부 스캔 공격 로그가 수백 건씩 쌓이는 걸 보고 등골이 오싹했습니다. 그때부터 제대로 된 VPN을 찾기 시작했고, 결국 WireGuard에 정착했습니다. 직접 설치해서 운영한 지 꽤 됐는데, 그 과정에서 느낀 것들을 솔직하게 풀어보겠습니다.

포트 포워딩의 공포, 그리고 WireGuard를 선택한 이유

처음엔 시놀로지 DS923+에서 제공하는 QuickConnect를 썼습니다. 설정이 간단하고 편리했지만, 제 데이터가 시놀로지 서버를 경유한다는 사실이 계속 마음에 걸렸습니다. 회사 파일까지 올려두고 있었으니 더욱 그랬습니다. 그래서 직접 포트 포워딩을 열어봤는데, 이게 더 큰 문제였습니다. 공유기 로그를 보니 외부에서 SSH 포트나 웹 포트를 끊임없이 두드리는 시도가 수백 건씩 쌓여 있었습니다. 무작위로 IP를 스캔하며 열린 포트를 찾아다니는 자동화 공격이었습니다.

그때 본격적으로 검토한 것이 OpenVPN, IPSec, 그리고 WireGuard였습니다. 여기서 공격 표면(Attack Surface)이라는 개념이 중요합니다. 공격 표면이란 외부에서 시스템을 공격할 수 있는 진입점의 총합을 의미합니다. OpenVPN은 코드베이스가 수십만 줄에 달해 잠재적인 취약점이 숨어 있을 가능성이 그만큼 높습니다. 반면 WireGuard는 커널 수준에서 동작하는 코드가 약 4,000줄에 불과합니다. 코드가 적다는 것은 보안 감사(Security Audit), 즉 코드 전체를 검토해 취약점을 찾는 작업이 훨씬 쉽다는 뜻입니다. WireGuard를 만든 Jason A. Donenfeld는 논문에서 이 점을 핵심 설계 철학으로 명시하고 있습니다(출처: WireGuard 공식 논문).

제가 직접 비교해보니 체감 차이도 컸습니다. OpenVPN은 TLS 핸드셰이크 과정이 복잡해 연결 자체에 수 초가 걸리는 경우가 있었는데, WireGuard는 터널이 거의 즉각적으로 연결됐습니다. 암호화 알고리즘도 WireGuard는 ChaCha20-Poly1305와 Curve25519 같은 현대적인 방식만을 고집해서 설정 실수로 취약한 암호화를 선택할 여지 자체가 없습니다.

WireGuard를 선택하게 만든 핵심 이유를 정리하면 다음과 같습니다.

  • 코드 약 4,000줄로 다른 VPN 대비 압도적으로 가벼운 구조
  • ChaCha20, Curve25519 등 현대적 암호화 알고리즘만 사용
  • 커널(Kernel) 레벨 동작으로 인한 빠른 속도
  • UDP 51820 포트 하나만 개방하면 되는 단순한 구성
  • 보안 감사가 용이한 최소 코드 철학

WireGuard 직접 설치, 30분 만에 가능한 이유

Ubuntu 22.04가 올라간 홈 서버에 설치를 시작했습니다. 솔직히 이건 예상 밖이었습니다. apt 명령어 하나로 설치가 끝났고, 가장 복잡하다고 느낀 부분은 키 페어(Key Pair) 생성이었는데 이것도 생각보다 단순했습니다.

키 페어란 공개 키(Public Key)와 개인 키(Private Key)로 구성된 한 쌍의 암호화 키를 말합니다. 쉽게 말해 자물쇠(공개 키)와 열쇠(개인 키)를 동시에 만드는 작업입니다. WireGuard는 서버와 클라이언트 각각에 대해 이 키 페어를 생성하고, wg0.conf라는 설정 파일에 각자의 공개 키를 등록하는 방식으로 신뢰 관계를 맺습니다. 개인 키는 절대 외부로 나가지 않고 각 기기 안에서만 보관됩니다.

설정 파일 작성 과정에서 AllowedIPs 항목을 처음 봤을 때 가장 헷갈렸습니다. AllowedIPs란 이 터널을 통해 주고받을 수 있는 IP 대역을 지정하는 항목입니다. 여기에 0.0.0.0/0을 넣으면 모든 트래픽이 VPN을 통하고, 집 내부 네트워크 대역만 넣으면 그 트래픽만 터널로 들어옵니다. 이게 바로 다음에 설명할 Split Tunneling의 핵심 설정입니다.

공유기에서 열어준 포트는 UDP 51820 하나가 전부였습니다. 이 점이 포트 포워딩과 근본적으로 다릅니다. 기존에 포트 포워딩으로 NAS 웹 포트를 열어뒀을 때는 포트 스캔 공격에 즉시 노출됐지만, WireGuard의 UDP 포트는 올바른 암호화 키 없이는 응답 자체를 하지 않습니다. 존재 자체를 숨기는 셈입니다. LinuxServer.io의 WireGuard 운영 가이드에서도 이 '스텔스' 특성을 WireGuard의 주요 보안 강점으로 꼽고 있습니다(출처: LinuxServer.io).

스마트폰에 WireGuard 앱을 설치하고 서버에서 생성한 QR 코드를 스캔했더니 클라이언트 프로파일이 즉시 등록됐습니다. 카페에서 처음 연결했을 때, 터널이 올라가는 데 1~2초도 안 걸렸습니다. 제가 직접 써봤는데 OpenVPN과 비교하면 체감 속도 차이가 상당했습니다.

Split Tunneling 설정으로 속도 저하 없이 쓰는 법

WireGuard를 처음 설치하고 모든 트래픽을 VPN으로 보내도록 설정했더니, 유튜브나 일반 웹 서핑 속도가 눈에 띄게 느려졌습니다. 집 인터넷을 한 번 더 경유하는 구조이니 당연한 결과였습니다. 그래서 Split Tunneling을 적용했습니다.

Split Tunneling이란 특정 트래픽만 VPN 터널을 통하고, 나머지는 기기에서 직접 인터넷으로 나가도록 분리하는 기술입니다. AllowedIPs 항목에 집 내부 네트워크 대역, 예를 들어 192.168.0.0/24만 입력하면, NAS 접근 트래픽은 암호화된 터널로 들어오고 유튜브나 일반 웹은 그냥 직접 연결됩니다. 이 설정 하나로 속도 문제가 완전히 해결됐습니다.

제 경험상 이건 좀 다릅니다. Tailscale이나 ZeroTier 같은 서비스들은 이 모든 과정을 GUI로 단순하게 만들어줍니다. 처음 써보면 정말 편리합니다. 하지만 이런 서비스는 결국 외부 조정 서버(Coordination Server)를 거쳐 피어 간 연결을 중개합니다. 트래픽 자체는 암호화되지만, 연결 메타데이터가 제3자 서버에 남습니다. 진정한 프라이버시를 원한다면 이 차이가 꽤 중요합니다.

WireGuard를 직접 운영하는 방식의 장단점을 솔직하게 정리하면 다음과 같습니다.

  • 키 관리, conf 파일 작성, 포트 포워딩 등 기술 이해가 필요해 진입장벽이 높음
  • 외부 서버를 완전히 배제하므로 메타데이터 노출 없는 완전한 자기 통제 가능
  • PiVPN 같은 설치 자동화 도구를 활용하면 진입장벽을 상당히 낮출 수 있음
  • 클라이언트 수가 많아질수록 키 관리와 설정 파일 관리가 번거로워짐

WireGuard가 기술적으로 훌륭하다는 것은 분명합니다. 그런데 저는 이 기술이 더 많은 사람에게 닿으려면 PiVPN이나 Netbird 같은 UI 도구가 함께 성숙해야 한다고 생각합니다. 보안 철학은 WireGuard, 사용성은 그 위에 얹는 도구가 담당하는 구조가 이상적입니다.

WireGuard 직접 운영이 처음에는 어렵게 느껴지더라도, 한 번 설정해두면 이후로는 거의 손댈 일이 없습니다. 포트 스캔 공격 로그가 수백 건씩 쌓이는 걸 보고 겁먹었던 그날 이후, 지금은 외부에서 NAS에 접근할 때 아무런 불안이 없습니다. 기술에 약간의 시간을 투자할 의향이 있다면, QuickConnect나 포트 포워딩보다 훨씬 나은 선택이 될 것입니다. 처음 설정에는 공식 문서와 PiVPN을 함께 참고하시면 30분 안에 끝낼 수 있습니다.


참고 출처


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 깜짝,황금이 아빠 IT적응기

서치어드바이저