grep

우리 팀에 맞는 VPN 찾기

인프랩

2024년 10월 31일

원문에서 보기 ↗

안녕하세요. 인프랩 데브옵스 엔지니어 구피입니다!

다들 많이 사용하시다시피, 인프랩에서도 사설망 내부 자원에 대한 접근 관리를 위해 VPN을 쓰고 있습니다. VPN 구축을 위해 AWS Client VPN, Firezone을 사용하다 현재는 Tailscale을 선택하여 사용하고 있는데요.

이번 글에선 인프랩에서 VPN 툴을 선택하면서 고려했던 기준과 경험을 공유하고자 합니다.

VPN이란?

VPN(Virtual Private Network, 가상 사설망)은 공공 네트워크를 통해 사설 네트워크에 안전하게 접근할 수 있도록 해주는 기술입니다. VPN은 암호화된 연결을 통해 사용자의 기기와 사설 네트워크 간의 데이터를 보호하며, 인증된 사용자의 트래픽만 사설망에 접근 가능하도록 인가합니다.

기업에서는 회사에서 사용하는 리소스의 보안성을 지키고 네트워크 접근을 통제하기 위해 VPN을 사용합니다. 즉, 재택근무를 하거나 카페에서 인터넷을 사용할 때에도 개발 서버나 DB에 안전하게 접근할 수 있는 환경을 만듭니다.

VPN 구조

AWS Client VPN

AWS Client VPN https://aws.amazon.com/vpn/client-vpn

처음 VPN 구축을 위해 사용했던 것은 AWS Client VPN이었습니다.

AWS Client VPN은 OpenVPN 프로토콜을 지원하는 AWS의 관리형 VPN 서비스입니다. OpenVPN 기반 VPN 클라이언트를 이용하여 AWS VPC 네트워크에 접속할 수 있도록 합니다.

AWS Client VPN을 선택한 이유

아쉬웠던 점

AWS Client VPN을 1년 간 사용했으나 모바일 앱, 웹 QA를 진행할 필요성이 생기면서, AWS Client VPN의 모바일 클라이언트에서 SAML 기능을 지원하지 않는다는 점이 불편했습니다. 모바일에서 QA를 진행하거나 admin에 접근해야하는 경우가 많아졌기에 모바일 인증이 가능한 다른 VPN을 모색하였습니다.

Firezone

Firezone https://www.firezone.dev

그 다음으로 사용한 것은 WireGuard 프로토콜 기반 VPN 오픈소스인 Firezone이었습니다.

Firezone을 선택한 이유

아쉬웠던 점

Firezone을 2년간 만족스럽게 사용했지만, 아래와 같은 아쉬운 점이 있었습니다.

오픈소스 지원 중단

세션 및 권한

CloudFront에 대한 Split tunnel

Tailscale

Firezone의 유료화를 계기로, 권한 및 세션 관리, Split tunnel 등 세부적인 요구사항을 같이 충족할 수 있는 솔루션을 탐색했습니다.

Tailscale과 Netbird

Tailscale https://tailscale.com Netbird https://netbird.io

고민을 거쳐 찾은 두 개의 솔루션이 Tailscale과 Netbird였습니다. Tailscale은 SaaS 제품이고, Netbird는 BSD-3 라이센스의 오픈소스입니다. 두 서비스는 기능적으로 비슷한 특징이 많습니다.

기본 기능

VPN 서버 구조

도메인에 대한 Split tunnel

Tailscale을 선택한 이유

마무리

결론적으로, 인프랩은 내부 자원 접근 관리를 위해 AWS Client VPN → Firezone → Tailscale로 VPN 솔루션을 발전시켜왔으며 각 단계에서는 아래 요구사항들의 필요성과 충족도를 고려하여 의사결정이 진행됐습니다.

  1. 사용자 경험

    • 모든 운영체제(데스크톱, 모바일)에서의 안정적인 작동
    • SSO 등 편리한 계정 인증 방식 지원
    • 세션 갱신, 관리의 용이성
  2. 관리

    • 운영 및 유지보수에 필요한 리소스
    • 업데이트 및 보안 패치의 안정성
    • 세부적인 접근 권한 관리 기능
  3. 기술적 요구사항

    • Split tunneling 지원 및 도메인 옵션 지원 여부
    • 네트워크 성능 (속도와 레이턴시)

입사 후 Tailscale PoC 작업을 진행하며 VPN 솔루션 선택 시 고려했던 사항들에 대해 정리해보았는데요. 부족한 글이지만 참고하실 수 있는 인사이트를 드렸길 희망합니다.

여러분의 환경에서도 안전하고 효율적인 VPN을 구성하실 수 있길 바랍니다!

읽어주셔서 감사합니다 :)