랜섬웨어 예방 : OpenVPN 서버 구축으로 가능할까? 라는 글을 쓰면서, 마지막 부분에 "홈서버에 OpenVPN 서버를 구축하겠다"는 계획을 밝혔었습니다.

 

그런데 홈서버가 안정적으로 돌아가고 있는 상황에서 테스트 없이 네트워크망을 흔드는 작업을 무작정 시도하기는 불안하더군요. 그래서 클라우드 컴퓨팅 서비스에서 테스팅을 해보고, 체계가 잡히는대로 홈서버에도 OpenVPN 서버 프로그램을 설치하려고 합니다.

 

 

구글 클라우드 플랫폼(GCP) 무료 서버에 가입해볼까? 접속 방법 정리

▲ 위 글에서 Google Cloud 무료 서비스에 가입하고, 미국 리전에 인스턴스를 개설하는 과정을 적어 두었습니다.

 

개설한 인스턴스는 유동IP 체계였고, 고정IP로 전환하면 (무료 기간 이후) 그에 따른 비용이 청구된다고 하네요.
그래서 고정IP로 전환하지 않고 DDNS 서비스에 유동IP를 연결하여 접속하기 쉽게 조치했습니다.

( [우분투,리눅스] 무료 DDNS - 홈서버에 DuckDNS를 설치해보자 )

 

그리고
IP의 전송계층에서 사용되는 프로토콜인 "TCP, UDP"라는 용어를 본 적이 있으실 거예요.
OpenVPN도 패킷을 전송하는 과정이 포함되기 때문에 TCP를 쓸지 UDP를 쓸지를 마음 속으로 정해두어야 할 것 같았습니다.

 

저는 OpenVPN을 연결한 다음 WoL 매직패킷도 보내고 할 거라, 핸드셰이크가 이루어져야만 교신을 할 수 있는 TCP 방식은 적합하지 않을 것 같았어요. UDP Broadcast를 써야만 0,7,9번 포트로 WoL 매직패킷을 잘 보낼 수 있기 때문에 OpenVPN 서버를 UDP 방식으로 구축할 생각입니다.

 

TCP 방식으로 OpenVPN 서버를 구축하는 것이 무조건 나쁜 것은 아니에요. TCP는 UDP 보다 느리고 오버헤드도 크지만, 443 같은 포트를 이용해서 방화벽 우회가 가능한 장점도 있으니 취사선택하는 것이 좋을 것 같습니다. 구글에서 OpenVPN 서버 구축하는 과정을 찾아보면 TCP 기반으로 진행하는 경우가 굉장히 많이 나오더군요.

 

그리고 나무위키의 OpenVPN 문서를 봤더니 흥미로운 내용이 보이더군요.

 

L2TP나 PPTP가 막혀 있는 곳에서도 OpenVPN은 연결될 가능성이 높다.

다만 방화벽이 패킷을 일일히 다 까보는 애플리케이션 방화벽이라면 답이 없다. 특히 인터넷 검열에 적극적인 중국과 이집트에선 2013년에 이미 막혔다. 이런 환경에서 OVPN을 쓰려면 cipher를 AES-256-CFB로 설정하거나SSL 또는 SSH[1] 터널(stunnel 등)로 감싸 주거나, XOR 패치를 쓰거나, Obfsproxy 등의 위장을 갖출 필요가 있다.

 

※ 단 SSH는 식별 가능하므로 대량의 트래픽을 보내기에 매우 부적합하다.

 

OpenVPN 서버는 무료/오픈소스(GPL)인 OpenVPN Community Edition과, 웹GUI같은 추가 기능을 더 제공하는 유료 OpenVPN Access Server의 2종류가 있다.
OpenVPN Community Edition은 기본적으로 별도의 설정용 GUI를 제공하지 않으므로 커맨드라인과 텍스트 파일만을 이용해서 서버를 구축해야 한다. 하지만 인터넷에서 설정 방법을 얼마든지 찾을 수 있고, DD-WRT와 같은 커스텀 펌웨어가 적용된 라우터와 같이 서드파티 wrapper를 만들어 GUI상에서 서버 구축을 할 수 있도록 해 놓은 경우도 있다.

 

사전 준비는 여기까지.
틈이 나는대로 다음 과정을 진행하겠습니다.

 

※ 다음 글 : 구글 클라우드 플랫폼(GCP)에 OpenVPN 서버 구축(1) : 용어 파악

반응형