VPN 구성하고 내 삶에 응용하기 1 - Tailscale 설치 및 설정
VPN을 정확하게 뭘 하는데 쓰는걸까?
우리가 아는 VPN의 유일한 목적은 내 IP를 숨기는 용도였을 것이다.
예를들어, 내 IP를 공개하지 않고 댓글을 단다거나, 불법적으로 인터넷에서 무언가(?)를 다운받는 경우에 쓰는 것이다.
(이런 방식은 전부 추적이 된다. 불법적인 일 자체를 하지마시라.)
원래 VPN (Virtual Private Network)은 그런 목적으로 탄생한 건 아니다. VPN은 원격지 PC에 대한 접속할 때, 마치 내 PC와 원격지 PC가 직접 연결된 사설망처럼 사용할 수 있도록 암호화해주는 기술이다.
내 PC와 원격지 PC는 서로에 대한 Key를 가지고 있고, 이를 통해 서로 주고받는 패킷들을 암호화/복호화하게 된다. 패킷은 암호화한 상태로 인터넷을 통해 주고받는다. 이런 암호화를 통해, 인터넷이라는 환경을 사용하면서도, 마치 원격지 PC와 내 PC가 직접 연결되어 같은 네트워크에 존재하는 것과 같은 상태를 만들어주는 것이다. 이것이 VPN이다.
그럼 우린 이 VPN을 홈서버 혹은 개인의 생활에 어떻게 응용할 수 있을까?
필자가 VPN을 활용하는 방식
필자는 다음처럼 VPN을 활용한다.
-
사무실 PC에 원격 접속하기:
일반적으로 회사들은 전산실에서 방화벽으로 모든 포트들을 막아둔다. 그래서 공식적으로 사무실 PC에 원격접속하기 위해서는 필요한 포트 등을 고지하고 허가를 얻어야만 한다.
그러나 사용자 본인이 제대로 이해하고 안전하게 쓴다는 전제 하에서 tailscale VPN을 사용해 이를 우회할 수 있다. (포트를 열 필요조차 없다!)
필자는 사무실에서 딥러닝 학습을 실행해두고 원격으로 이를 관리하곤 한다. -
홈서버 내부망 서비스들에 접속하기:
홈서버를 운영할 때, 굳이 외부로 공개할 필요가 없는 서비스들은 내부망 전용 서비스로 구성하고 운영하게 된다. 문제는 이런 서비스들은 집 내부망을 벗어나는 순간 사용이 불가능하다.
그렇지만, VPN을 사용한다면 집 내부망이 아닌 외부에 있더라도 내부망에 있는 것처럼 내 서비스들을 전부 사용할 수 있다.
VPN 구성 방식 구분
VPN을 구성하는 방식은 다음처럼 두 가지로 구분이 가능하다.
1. 직접 VPN 서버를 구성하는 방식: wireguard
VPN이 가능하려면 내부망에서 외부로부터의 VPN 패킷을 받아주는 VPN 서버가 존재해야 한다. 중앙집중식이라고 볼 수 있겠다.
이런 방식으로 VPN을 사용하려면, 1)홈서버가 있어야하고, 2)개인 도메인이 있어야하며, 그리고 3)VPN 포트 개방이 가능한 환경이어야만 한다. 이렇게 VPN을 사용하는 가장 대표적인 사례가 wireguard이다.
이 방식은 어느정도 네트워크에 대한 이해도가 필요하고, PC들의 연결을 위해 직접 key 파일을 배포하고 각 클라이언트들에서 key를 받아 네트워크를 잡아주는 작업을 수행해줘야한다.
필자도 초기엔 이 방식을 사용했으나, 여러 PC를 하나의 내부망으로 묶거나 한 PC를 VPN 라우터로하여 다른 PC들이 별도의 VPN 연결 없이 내부망에 접속하게 만들고자 하는 등 복잡한 형태로 응용하기엔 어렵고 굉장히 번거로운 편이다.
2. VPN 구성 서비스 사용하기: tailscale
앞서 설명한대로 wireguard를 직접 설정하는 방식은 그 사용법이 꽤나 까다로운 편이다. 운좋게도 최근엔 이를 대체하기 위한 VPN 서비스들(?)이 등장했다. 대표적으로 tailscale이 있다. 이들도 물론 자유자재로 활용하려면 네트워크에 대한 이해도를 요구하나, 기본적 방식으로만 사용한다면 훨씬 손쉽게 사용할 수 있다.
그러면, 우선 tailscale이 가진 강점에 대해 알아보자.
Tailscale 개요
Tailscale은 wireguard 프로토콜에 기반한 VPN 서비스로, 다음과 같은 특징을 가지고 있다.
- 웹에 로그인을 하는 방식으로 사용자를 인증하며, 이를 통해 key를 주고받는 등 등록 절차를 수행할 수 있다.
- Tailscale에서는 중간에서 패킷을 전달해주는 node들(DERP 서버)을 제공해주는데, 그 덕분에 VPN을 위한 포트 개방 없이도 내 PC와 원격지 PC 간 VPN이 동작하도록 해준다. (이런 방식에 대해 크게 보안적으로 문제될 것은 없어보이는게, 어차피 패킷을 보내는 내 PC와 원격지 PC가 노드 간 암호화 통신을 하므로, 중간 tailscale node에서 이를 복호화할 수 없기 때문이다.)
- Windows, Linux, Mac, 그리고 휴대폰까지 네트워크에 연결하는 모든 기기들에 tailscale을 사용할 수 있다.
- 혼자서 쓴다면 왠만한 기능을 다 무료로 사용할 수 있다. (이를 회사 규모로 수 많은 사용자들을 연결하지 않는 한 말이다.)
Tailscale 요금표: 혼자서 쓴다면(1번) 대부분의 기능이 무료다. 그리고 기기는 100대까지 연결할 수 있다.(2번)
이 외에도 더 많은 기능과 특징이 있지만, 자세한 내용은 일단 사용하면서 천천히 알아가면 좋을 것 같다. 이번 포스팅에선 tailscale을 사용하는 아주 기초적인 사용법만 우선 알아보자.
Tailscale 기초 사용법
Tailscale 계정 만들기
Tailscale 홈페이지에서 가입을 하면 된다. 가입은 구글 아이디나 github 아이디를 사용하여 할 수 있다.
첫 기기 등록하기
회원가입을 하면 다음처럼 첫 기기를 등록하라는 화면이 뜬다. 필자는 첫 기기로 리눅스 머신을 등록하였다. 다른 OS를 선택하여 설치를 진행해도 된다.
sudo tailscale up을 해서 나의 tailnet에 연결해주자.
두 번째 기기 등록하기
이어서 두 번째 기기를 등록해보자. 필자는 또 다른 리눅스 머신을 첫 기기와 동일하게 동일해주었다.
두 번째 기기까지 입력되면, 이제 다음 이미지처럼 tailscale admin console이 나타나게 된다.
이제 두 리눅스 머신은 서로 같은 내부망에 있는 것처럼 연결되었다. 그래서 서로의 기기명 혹은 tailnet 내부망 ip로 ping이 간다.
정리하며
이번 포스팅에선 VPN 서비스인 tailscale의 간략한 개념을 살펴보고, 그 기본 사용법을 배웠다. 다음 포스팅에서는 이 tailscale을 내 삶에서 어떻게 응용하고 있는지를 다뤄볼 예정이다.