개요

집 밖에서 홈서버·NAS·사무실 내부망에 안전하게 접속하려면 VPN이 필요하다. 포트포워딩으로 서비스를 인터넷에 직접 노출하는 대신, VPN 터널을 통해 마치 같은 네트워크에 있는 것처럼 접속하는 게 기본 원칙이다. 이 블로그에는 성격이 전혀 다른 세 가지 방식(Tailscale, WireGuard, wg-easy)을 다룬 글이 있는데, “VPN"이라는 이름은 같아도 설정 방식·보안 모델·운영 부담이 완전히 달라서 상황에 맞게 골라야 한다.

선택 기준

방식을 고르기 전에 아래 다섯 가지를 먼저 생각해보면 도움이 된다.

  • NAT/방화벽 환경 — 공유기 뒤에 있는 홈서버처럼 포트 개방이 번거롭거나 불가능한 환경인가, 아니면 공인 IP를 직접 붙일 수 있는 클라우드 서버인가.
  • 보안 모델 — 접속을 허용할 장치를 하나씩 명시적으로 등록하는 제로트러스트 방식이 필요한가, 아니면 전통적인 서버-클라이언트 VPN으로 충분한가.
  • 운영 부담 — 서버 인프라(키 관리, 방화벽 규칙, 업데이트)를 직접 유지보수할 여력이 있는가, 아니면 관리형 서비스에 맡기고 싶은가.
  • 디바이스/사용자 수 — 나 혼자 노트북 한두 대만 접속하면 되는지, 여러 사람이 각자 다른 권한으로 접속해야 하는지.
  • 성능 — 대용량 파일 전송처럼 처리량이 중요한지, 아니면 SSH 접속 정도의 가벼운 트래픽인지.

방식 비교

TailscaleWireGuardwg-easy
서버 운영불필요(관리형)직접 운영직접 운영(웹 UI)
포트 개방거의 불필요필요(UDP)필요(UDP)
설정 난이도낮음높음(CLI·설정 파일)중간(웹 UI)
세밀한 제어낮음높음중간
다중 사용자 관리tailnet ACL수동(Peer 등록)웹 UI에서 관리
적합한 상황빠르게 시작, 개인·소규모 팀인프라를 전부 직접 통제WireGuard를 편하게 관리

뭐부터 봐야 하나

실전 시나리오

  • 여행 중 노트북으로 집 NAS 파일 하나만 열어보고 싶다 → Tailscale
  • 회사 내부망 서버 여러 대를 팀원들에게 표준화된 방식으로 열어주고 싶다 → WireGuard
  • WireGuard 설정을 팀원이 각자 웹 UI에서 QR코드로 등록하게 하고 싶다 → wg-easy (단, MASQUERADE 예외 설정 필수)

Tailscale — 가장 빠르게 시작하는 방법

각 장치가 아웃바운드 연결만으로 tailnet에 합류하는 방식이라 별도 포트 개방이 거의 필요 없다. 직접 P2P 연결이 안 되면 DERP 릴레이로 우회한다. tailnet IP, accept-routes, serve/funnel 모드까지 상황별로 정리했다. 내부적으로 WireGuard 프로토콜을 그대로 쓰기 때문에 성능은 순정 WireGuard와 큰 차이가 없고, 대신 키 교환·NAT 통과·ACL 관리를 Tailscale이 대신 처리해준다는 게 핵심 차이다. 노트북 한두 대에서 홈서버 하나 접속하는 정도라면 가장 먼저 시도해볼 방식이다.

Tailscale Linux 설치 - 안전한 원격 VPN 구성

WireGuard — 직접 서버를 운영하는 방법

서버 키 생성부터 wg0.conf 설정, UDP 포트 방화벽 개방, 클라이언트 Peer 등록, MASQUERADE로 내부망 라우팅까지 전체 흐름을 정리했다. Tailscale과 달리 서버 운영·방화벽 관리를 직접 해야 하는 대신, 인프라를 전부 자기 손에 두고 싶을 때 맞는 방식이다. 커널 레벨 구현이라 오버헤드가 거의 없고, 설정 파일 하나로 여러 대의 서버·클라이언트 구성을 재현할 수 있어 인프라를 표준화해서 관리해야 하는 상황에 특히 유리하다.

WireGuard 설치와 클라이언트 접속 설정 방법

wg-easy — WireGuard를 웹 UI로 관리할 때 생기는 문제

wg-easy는 WireGuard 설정을 웹 UI로 편하게 관리해주지만, 기본 MASQUERADE 설정 때문에 서버를 거치는 모든 요청의 출발 IP가 VPN 서버 IP로 바뀌어버리는 문제가 있다. OpenVPN 클라이언트의 실제 사설 IP를 로그에 남기려면 iptables NAT 규칙에서 특정 대역을 예외 처리해야 한다. 순정 WireGuard의 설정 파일 관리 부담을 줄여주는 대신, 이런 웹 UI 특유의 기본값 문제를 별도로 점검해야 한다는 트레이드오프가 있다.

wg-easy WireGuard MASQUERADE 예외 설정으로 OpenVPN 클라이언트 IP 유지하기

결론

셋 다 결국 “누가 인프라를 관리하느냐"의 차이로 요약된다. 관리를 안 하고 싶으면 Tailscale, 전부 직접 통제하고 싶으면 WireGuard, 그 중간에서 웹 UI 편의성을 원하면 wg-easy(단 기본값 점검 필수)다. 세 방식 모두 이 블로그에서 다뤘으니 상황에 맞는 글부터 읽으면 된다.