WireGuard: VPN계의 스타

왜? VPN이 필요할까?… 하는 생각을 하던 시절이 있었다. 사실 딱히 감출 것도 없는데… 한국에서는 지금도 대부분이 같은 생각일 것이다.

VPN은 사생활과 개인정보 보호목적으로 흔히들 사용한다. 하지만 이런 목적으로 VPN을 사용하는 개인 이용자들이 얼마나 될까? 아마 일반적으로 사용하는 대부분의 목적은 ‘우회’하기 위함일 것이다.

From: Collateral business impacts of The Great Firewall of China
Collateral business impacts of The Great Firewall of China

중국에 거주하고 있는 외국인들은 유튜브나 구글, 페이스북 등의 서비스를 이용하기 위해 VPN을 이용한다. 이른바 GFW( Great Fire Wall )라고 불리는 장벽을 우회하기 위함이 주 목적이다. 이 GFW는 요즘 시중에 판매 되고 있는 인터넷 공유기에 집에 있는 아이들이 접속 불가능한 사이트를 설정하거나, 특정 게임사이트의 접속 가능 시간대, 광고 차단 기능 등을 설정하는 것과 같은 역할을 한다고 이해하면 된다. 단지 집에 있는 인터넷 공유기를 관리하는 주체는 ‘가장’이고, GWF의 관리 주체는 ‘중국정부’라는 점이다. 그러나 만약 집에 있는 아이가 공유기를 통하지 않고 핸드폰 자체 4G/5G 망을 이용한다면 이러한 설정들이 무의미하게 된다. VPN을 이용하는 중국에 거주하는 많은 외국인들도 결국 그 우회하는 방법을 애타게 찾아 사용하고 있는 것이다.

VPN과 관련된 정보들은 인터넷에서 너무 많기에 생략하고 이곳에서는 중국에서 WireGuard의 활용에 대한 이야기를 할까 한다.

wireguard
WireGuard Fast, Mordern, Secure VPN Tunnel

중국에서는 VPN을 통해 국가가 금지하고 있는 사이트에 접속하는 것을 법으로 제한하고 있다. 그래서인지 VPN을 사용하기 위한 각종 클라이어트 앱들이 중국 앱스토어에서는 찾을 수가 없다. WireGuard 앱도 적어도 중국 애플앱스토에서는 찾을 수 없다. 그리고 지속적으로 VPN 서비스를 감시하고 막아 잘 쓰고 있던 것이 갑자기 먹통이 되거나 심각하게 속도가 늦어지는 등의 일들이 발생한다.

그렇다면 중국내에서 VPN을 사용할 수 없는가?

결론적으로 아니다. GFW을 넘어 외국서버로의 연결은 불가능하지만 중국내 컴퓨터간의 접속은 문제 없이, 안정적으로 이용 가능하다. 일면 상식적인 일이다. 중국과 같은 국토 면적이 큰 나라에서 서로 멀리 떨어진 그리고 여러 도시에 분산된 본사와 지사를 공용망을 사용하여 인트라넷으로 연결하기 위해서는 VPN이 가장 현실적인 대안일 것이다.

개인적으로 VPN을 사용하는 목적은 고객과 관련된 술전/술후/시술 사진을 효과적으로 관리하고 운영하기 위함이며 시술고객에게 적시에 필요한 추가 지시를 통해 더 나은 결과를 만들기 위함이다. 그렇다면 본인은 어떠한 필요성으로 어떻게 VPN망을 구축 하였을까?

고려 사항 :

  1. 내 의지와 상관없이 바뀌는 서버주소에 대한 해결책
  2. 실시간 정보 업데이트 및 자동화
  3. 병원에 대한 요청/요구는 병원에서 수용가능한 최소 범위

목표 시스템 :

  1. 여러 곳에 흩어져 있는 병원에서 고객이 매 방문마다 촬영하는 사진을 집에 있는 서버에 자동으로 업데이트 처리가 되어야 함.
  2. 해당 병원에 있는 시스템 관리자의 추가적인 도움 없이 해결이 가능 해야 함.
  3. 해당 병원에 이를 처리하기 위한 별도의 시스템 요구가 최소화 되어야 함.
  4. 스크립트를 해당 병원에 제공하여 사용이 받아들여져야 함.
  5. 다양한 시스템 운영 환경에서도 적용 가능한 시스템

1. 만약 집에 사진 보관을 위한 서버가 있다고 가정하자. 외부에서 집에 있는 서버에 접속하기 위해서 외부에서 접근하기 위한 주소가 필요한데, 문제는 이 주소가 자주 바뀐다는 것이다. 쉽게 이야기 하면 집으로 사과를 택배로 보내고 싶은데 집주소가 내 의지와는 상관없이 자주 바뀐다는 것이다. 외우기도 쉽지 않은 주소가 하물며 자주 바뀌기까지 한다면? 현실 세계에서는 발생할 수 없는 일이지만 인터넷에서는 늘 발생하는 일이다.

해결 방법은 DDNS를 사용하는 방법인데… 이게 중국에서는 안정성이 많이 떨어진다. 안정성이 떨어진다는 것은 결국 사람이 관여해야 하는 경우가 많아진다는 것이고 스크립트 (일종의 업무 자동화 처리서로 프로그램이라고 생각하면 된다) 등을 통한 자동화에 어려움이 따르게 된다.

2. 실시간 정보 업데이트는 빠른 대응을 위한 필수적인 요소이다. 만약 한달에 1회 방문하는 병원이 있다고 가정하자. 그 병원에서 고객은 시술을 받고 일반적으로 1, 3, 5 7, 14일에 와서 치료를 하고 사진을 촬영한다. 그 병원에서 3일을 진료하였다면 술전, 시술, 1, 3일 사진은 복사헤서 가져 올 수 있지만 이후의 사진은 다음번 방문에서 복사를 하여야 한다. 만약 중간에 고객에게서 문제가 발생했다고 한다면, 고해상도의 사진을 중국에서 아무런 어려움 없이 송신하는 방법을 아는 직원은 아마 찾기가 어려울 것이다. 일반적으로 가능한 정도는 모니터에서 사진을 띄워 놓고 WeChat 등의 메신저 프로그램을 사용하여 사진을 찍어 전송하는 것이다.

이렇게 전송된 사진은 이후 관리도 쉽지 않다. 따라서 가장 확실한 방법은 사진실에서 촬영한 원본을 그대로 백업 받는 것이다. 또한 관리상 부주의로 사진들이 소실되는 경우가 허다하여 제 3의 장소에 안전하게 보관하는 것도 반드시 필요하다.

3. 모든게 자동화로 되어야 하며 병원에 대한 요청/요구는 최소로 해결할 수 있어야한다. 당연한 요구 사항이다. 출장이 많은 경우 이러한 모든 일들을 하나 하나 수작업으로 해야 한다면 상당히 곤혹스러울 것이다. 그리고 이를 위해 병원에 있는 시스템에 설정을 변경하거나 추가하는 것은 어느 병원도 허락하지 않을 것이다. 또한 한달에 한 두번 정도 방문하는 의료진을 위해 진료실에 놓여진 사용하지도 않는 컴퓨터를 꺼지 않고 두거나 다른 사람의 사용을 막는 경우도 생각하기 어려울 것이다.

4. 시스템의 오작동이 발견되었을 때 어디서든 해결 할 수 있는 방법을 마련해야 한다. 만약 사진의 업데이트에 문제가 생겼다면? 원격으로 다시 접속하여 무슨 문제인지 파악하고 해결할 수 있어야 한다. 하지만 이를 위해 라우터의 외부 접속 포트를 개방해 줄 병원은 아마 전세계 어디에도 찾기 어려울 것이다. 사용자 입장에서 선택 할 수 있는 것이 reverse SSH와 VPN이다.

WireGuard는 이러한 시스템을 구축하는데 있어 최적의 운영환경을 제공하여 준다. 접속의 안정성, 설정의 간편함, 빠른 속도, 어느 시스템( 윈도우, 맥, 리눅스 환경 )에서나 구축이 가능한 지원환경, 찾기 쉬운 관련 정보 등. WireGuard 이전에 사용하던 방법은 reverse SSH와 OpenVPN 등이었으나 요즘은 TailScale을 주로 사용하고 있다. TaileScale 역시 WireGuard를 기반으로 한 VPN이다.

WireGuard는 중앙에서 모든 클라이언트의 접속을 관장하는 서버와 서버를 통해 접속을 하는 클라이언트로 구성된다.

전체적으로 서버와 클라이언트는 같은 방식으로 구동되지만 서버는 클라이언트가 접속하기 위한 포트를 외부에 노출해야 ( 간단하게 설명하면 배달원이 확인 할 수 있는 문패를 집 앞에 설치 ) 한다. 따라서 해당 포트를 외부로 노출 시킬지 말지, 그리고 해당 네트워크의 어느 컴퓨터로 연결할지 결정 할 수 있는 위치에 있어야 한다. 간단하게 집에서는 라우터 설정으로 본인이 바꿀 수 있지만, 기업이나 회사의 경우 시스템 관리자의 승인을 얻어야 하는 일이며 일반적으로 허가를 받기는 불가능한 일이다. 또한 서버는 클라이언트들이 접속할 수 있도록 고정 IP 주소를 가지는 것이 유리하다. 그리고 완전히 자기가 통제할 수 있어야 한다. 한국이라면 DDNS 설정과 집에 늘 켜져 있는 컴퓨터 활용으로 충분히 가능할 것으로 생각된다.

경험적으로 가장 안정적인 방법은 상용 VPS를 이용하는 것이다. 구글, 아마존, Vultr, Digital Ocean, Linode 등 수 많은 서비스 제공업체들이 매우 저렴한 가격, 1개월에 $5 정도의 비용,으로 이용가능하다. 본인은 GFW를 거치지 않을 수 있는 중국 내 텐센트서비스를 이용하고 있다. 매우 저렴하고 안정적이며 속도 또한 불만없는 정도이다. 해당 서비스에 이용자로 등록하고 VPS(Virtual Private Server)를 생성 한 후 WireGuard 서버로 설정하고 나머지 클라이언트를 연결하면 훌륭한 VPN 환경이 구축된다.

WireGuard 클라이언트 구축 : 각 병원에서의 설정.

우선 대부분의 병원 상담실에는 컴퓨터와 랜포트가 구비되어 있다. 컴퓨터는 매일 출근하지 않는 이상 공용으로 관리된다. 결국 개인 목적으로 사용할 수 가 없다. 그래서 본인은 라스베리 파이 4( Raspberry Pi 4 )를 사용한다. 최소 사양으로도 문제가 없으나, 시스템을 위한 Micro SD 카드는 되도록 안정성을 보장하는 제품(삼성 Micro SD Pro, Pro+ 계통)을 선택하는 것이 좋다. 대부분의 큰 문제는 Micro SD카드에서 발생한다. 비행기를 타고가서 문제가 발생한 Micro SD 카드를 교체하고 싶지 않다면 가격차는 크게 중요하지 않다. 8G, 16G, 32G 제품의 가격차이가 크지 않다면 큰 사이즈가 좋겠지만 8GB도 전혀 문제 없다. 가격이 매우 저렴한 네트워크 스위치도 필요하다.

우선 진료실에 설치되어 있는 컴퓨터에 연결된 랜케이블을 준비한 네트워크 스위치에 Rasperry Pi와 함께 연결한다. 두 컴퓨터 모두 인터넷에 연결이 되는지를 먼저 확인해야 한다. 연결에 문제가 없다면 필요한 소프트웨어(wireguard-tools)를 설치하고 클라이언트 환경을 설정한다. 또 하나의 중요한 작업은 설치한 Raspberry Pi에 사진실 서버의 사진폴더를 mount.cifs 등을 이용하여 마운트하는 것이다. 이렇게 설정 함으로 Raspberry Pi에는 추가적인 저장장치가 필요없게 된다.

설치가 완료되면, 서버를 포함하여 WireGuard VPN 네트워크에 참여하고 있는 모든 컴퓨터간 이론적으로 안전한? 연결이 가능해진다. 이렇게 구축된 망을 어떻게 활용할지는 그 이후의 선택사항이다.

위에서 이론적으로 안전하고 한 것은, 첫번째로 WireGuard는 아직도 개발중인 프로젝트이며, 두번째는 모든 VPN이 갖는 문제가 아닌 전반적인 보안과 관련된 문제이다. VPN은 연결된 두 컴퓨터간의 통신 보안이 주 목적이다. 각 컴퓨터에 도착한 정보에 대한 보안은 VPN의 범위를 벗어난다. 과연 이용하고 있는 텐센트에 설치된 WireGuard 서버로 활용 중인 VPS는 충분히 안전할까? 만약 누군가가 그 VPS를 해킹할 수 있다면, 공을 들여 구축한 각지에 흩어져 있는 컴퓨터들에 대한 고속도로를 그 해커에게 제공해 주는 셈이된다.

가장 확실한 보안은 인터넷과의 연결을 하드웨어적으로 단절하는 것이다. 그것이 불가능하다면 그나마 저렴한 비용으로 고려할 수 있는 것은 YubiKey와 같은 하드웨어 보안키를 활용하는 방법이다. 하지만 인터넷 세상에서 보안이란게 존재하지 않는다고 생각하는 것이 마음 편할 것이다. 그리고 중국에서는 기대자체가 사치이다.

—————————-
실루엣 스타일리스트
성형외과 전문의 황 욱 배

Leave a Reply