서버/홈서버

[홈서버구축하기 5] 클라우드를 사용해 게이트웨이 구축(feat.vpn)

for2gles 2024. 1. 6. 20:37
반응형

홈서버 구축하기 시리즈


내가 처음 홈서버 구축에 크게 걱정하던 것 중 하나가 DDoS이다.
첫째, Cloudflare에서 DDoS 보호모드가 있다라고는 해도, 무료플랜를 사용중이기 때문에 큰 기대를 하고 있지 않고, 또한, 클라우드플레어를 통해 필터링을 된다 하더라도 수많은 양의 요청들은 어쨌든 내 서버로 직접 들어올 수 있는 것이다.
둘째, 내 홈서버에서 모든 요청이 application으로 들어오게 된다면 모든 CPU를 최대로 사용해서 전기를 많이 사용하던지, 장비를 과하게 사용하는 등이 생기는것이 너무 싫었다.
셋째, 회선의 리소스를 모드 사용하게 되어서 인터넷을 못쓰는 그런 불상사 또한 상상하기도 싫었다.

일단, 직접적인 요청을 막기 위한 아이피를 가리기 위한 노력은 했고, 다음의 차선책에 대해 고민을 했고 이러한 아이디어가 나왔다.

Nginx 서버를 내 서버가 아닌 클라우드에 놓으면 어떨까?

모든 요청을 Nginx에서 우선적으로 받을 것인데, 이 Nginx를 클라우드에 올려놓아 이곳에서 모든 요청을 1차적으로 받고 이 내용을 내 서버로 전달 해 주는 것이다.

이 방법을 생각 한 이유는 다음과 같다.

  1. 만약에라도 DDoS 요청이 들어오게 된다면, 저사양 nginx 서버가 이미 뻗어버려 내 홈서버로 모든 요청을 전달하기 어려울 것이다.
  2. IP가 노출된다고 하더라도, IP 변경또한 집에 아이피보다 훨씬 쉽고 수월하다.
  3. 클라우드의 모니터링 시스템을 활용해서, 네트워크 사용량을 정확하게 확인할 수도 있다.
  4. 추후에 Bastion 서버와 같은 형태 구축을 할 수 있다.
  5. 추후에 홈서버 뿐만 아니라 클라우드를 통해 필요한 양의 서버를 자유롭게 확장할 수 있다.
    예를들어 홈서버와 AWS프리티어, 오라클 무료서버, GCP 무료서버 등을 묶어서 사용 할 수도 있는 것이다.

단점으로는

  1. 서버 운영에대한 비용이 발생할 수 있다.
  2. 트래픽 사용량이 크면, 큰 비용이 발생할 수 있다.
  3. 클라우드와 내 서버간의 통신은 외부망에 노출되어있으므로 보안적 문제가 발생한다.
  4. 한단계의 proxy가 또 생기므로 속도저하가 발생한다.

이 또한 모든 문제점을 해결할 수는 없겠지만, 최대한 문제를 해결해보는 방법을 강구 해 보았다.

클라우드 선정하기

클라우드 선정하는 글을 작성해서 AWS Lightsail, Vultr, Contabo 등의 클라우드사를 비교하는 내용을 작성하려고 하는데, 비교 할 필요 없이 압도적인 업체 하나가 있어 모든걸 스킵하고 해당 클라우드 설명으로 넘어가고자 한다.
위 클라우드사 장단점은 다른 글에서 작성 해 보도록 하겠다.

Oracle Cloud

오라클 클라우드가 익숙치 않을 수도 있다.
나도 오라클 클라우드를 메인으로 쓰는 회사를 사실상 본 적이 없다.
하지만, 상대적으로 최근에 클라우드 업계에 진출한 오라클 클라우드는 가격 경쟁력을 앞세워 시장의 점유율을 가져오고자 노력을 하고있다.
이는 무료티어에도 마찬가지이다. 오라클 클라우드는 무료 티어에 엄청난 혜택들을 제공한다.

Pasted image 20240102112639.png

오라클 무료티어는 AWS 프리티어 1년 혹은 GCP의 1년간 $300 제공 과는 차원이 다른 상시 무료 서비스를 제공한다. (상시 무료 = 평생 무료)

  • AMD 기반 VM 2개: 1/8 OCPU + 1GB Ram
    여기서 1OCPU는 1/4vCPU 로 이해하면 된다. 아래의 추가설명 참고
  • ARM 기반 4 OCPU + 24GB Ram
    1개 기기에 모두 사용해도 되고, 4개의 서버로 분리해서 개별 1 OCPU 8GB ram으로 사용해도 된다. 물론 자유롭게 설정이 가능하다.
  • 5개의 OCI Bastions? 이건 지금 처음 알았다. 한번 추가로 알아봐야겠다.
  • 2개의 데이터베이스도 제공해준다.. 오..
  • 모니터링 및 알람도 제공해주고..
  • 아웃바운드 데이터 전송 매월 10TB 와우!
    이는 정말 말도안되는 양이다. 한국에서는 보통 망 사용료 등에 의해서 네트워크에 대한 비용이 굉장히 예민하고 비싸다.
    • cafe24(서울)
      • 월 11,000원 요금제
      • 월 500GB 트래픽 제공
      • 초과시 165원/GB
    • iwinv(서울)
      • 모든 요금제
      • 월 600GB 트래픽 제공
      • 초과시 77원/GB
    • AWS lightsail(서울)
      • $5 요금제
      • 월 2TB 트래픽 제공
      • 초과시 $0.13/GB = 169원/GB(1300원 환율시/부가세 별도/DOC)
    • Vultr(서울)
      • $6 요금제
      • 월 2TB 트래픽 제공
      • 초과시 $0.01/GB = 13원/GB(1300원 환율시/부가세 별도)
    • Oracle(서울/춘천)
      • 무료요금제
      • 월 10TB 트래픽 제공
      • 초과시 $0.025/GB = 32.5원/GB(1300원 환율시/부가세 별도)
  • 적혀있지는 않지만, 서버별 Reserved IP 무료
    • 추가설명 -
      AMD 1 OCPU = 2vCPU / ARM 1 OCPU = 1vCPU*

사실 필자는 처음 홈서버를 구축할 때 오라클 클라우드의 존재를 전혀 몰랐다.
처음에는 Vultr를 보고 네트워크 비용이 이렇게 저렴할 수 있는 사실에 정말 놀랐다.
그래서 Vultr로 게이트웨이를 구축했었고 만족스럽게 사용하고있었다.
그렇게 운영하던 중 오라클 클라우드의 프리티어 정책을 보고 뒤로 놀라 자빠졌다.

정말 파격적으로 무료 기능들을 제공해주기 때문에 클라우드로는 사실 가능하다면 Oracle을 사용하는 것이 좋을 것으로 보인다.
하지만 Oracle의 단점 중 하나는 AMD서버는 문제 없으나, ARM서버를 항시 재고 문제가 있다. 수시로 서버 생성이 가능한지 확인이 필요하다.
만약에 오라클 사용이 어렵다라고 한다면 필자는 Vultr를 추천한다.
그리고 홈서버를 직접 구축 해 보기 이전에 Oracle의 경우에는 어차피 무료로 사용이 가능하므로 서버 세팅과 운영을 테스트 해 보는 것도 좋은 방법이라고 생각된다.

따라서 Oracle을 사용하면 걱정하던 서버 비용 + 네트워크 비용 모두 무료!
[[오라클 클라우드에 가상서버 생성할 때 두가지 꿀팁]]

외부망으로 연결된 네트워크 보안 - VPN 구축하기

엥? 내가 아는 그 VPN이 맞는건가? 라고 생각하시는 분들이 있을 수도 있다.
최근에는 VPN이라는 단어를 노드VPN과 같이 인터넷을 할 때 다른국가의 IP를 사용해 국가별 제한을 피하는 방법 혹은 내 아이피를 숨기는 용도의 목적으로 사용하기 때문이다.

ChatGPT는 VPN의 개념을 두가지로 분리해서 설명 해 주었다.

Pasted%20image%2020240102123036.png

필자가 말하는 VPN은 전통적인 VPN으로

VPN구축기획.png

이러한 모습으로 VPN을 구축하게되면 외부에 통신을 드러내지 않는 통신이 가능해진다.
어떻게 이것이 가능한지 알아보자.

VPN이란

Pasted image 20240106202332.png

출처: cloudflare
VPN(Virtual Private Network)은 가상 사설망을 말하며, 인터넷을 통해서 데이터 통신을 하지만 암호화를 통해 외부 해커가 내부 데이터를 볼 수 없도록 보안처리를 하는 것이다.
따라서 가상으로 만들어진 사설망 내부에 각각의 사설 아이피를 가지고 암호화 된 통신들을 하는 것이다.
하지만, 인터넷망에서 데이터를 통신할 때 보안을 위해 암호화가 필수적이기 때문에, 전송 및 송신할 때 데이터 암호화, 복호화 하는 작업이 필요해서 불가피하게 속도는 느려지는 단점이 있다.

이렇게 가상 사설망을 구축하는 프로그램은 여러가지가 있다.

  • OpenVPN
  • Wireguard
  • Tailscale(Wireguard 기반)

등 여러 VPN구축 프로그램들이 있다.
나는 이 중 Tailscale(Wireguard 기반)를 사용 하고있다.

그에 앞서 왜 가장 유명한 OpenVPN을 사용하지 않고, Wireguard기반 vpn을 사용했는지를 보여줄 수 있는 판단할 수 있도록 도와주는 네트워크 퍼포먼스 비교 게시글이 있다.
서버포럼 - 구축형 VPN 속도 비교하기.(Open VPN / Wireguard / Sophos IPsec)
VPN은 위에 앞서 말했듯이 인터넷망에서 안전하게 데이터 통신을 하기 위해서 암호화와 복호화를 상시 하게된다.
이 때문에 데이터 통신의 속도는 낮아질 수 밖에 없다.

위 글을 확인하면, OpenVPN은 100mbps 의 인터넷을 사용하더라도, 10mbps의 속도로 1/10로 현저히 속도가 줄어드는 반면에 Wireguard는 50~60mbps로 여전히 많이 느리지만 나쁘지 않은 속도를 유지 해 주는 것을 확인할 수 있다.
물론 대용량 파일을 공유하는 홈페이지가 아니라면, 속도보다 ping이 더 중요할 수도 있다. 하지만 대부분 ping은 15ms~

18ms로 체감하기 어려운 정도의 거의 동일한 수치임을 착안했을 때 Wireguard가 훌륭한 프로그램이라고 판단할 수 있었다.

Wireguard와 Tailscale 두가지를 모두 사용하고 있는 이유는 추후에 차차 설명하도록 할 것이다.

Wireguard를 활용하여 VPN 구축하기

Wireguard를 활용하여 VPN을 구축하는것은 다행히 너무나도 쉽다.
조금 손이 가는 부분이 없지않아 있는데, 리눅스에 익숙하지 않더라도 천천히 따라오다보면 얼마든지 구현이 가능하다.

공식문서를 통해 쉽게 따라 하기

Wireguard 공식홈페이지 Quick Start

손쉽게 필자 따라서 Wireguard 세팅 해보기

필자 방식대로 Wireguard 처음부터 끝까지 설정해보기

더 쉽게 Wireguard 구축하는 방법, Tailscale 세팅해보기

필자 방식대로 Tailscale 처음부터 끝까지 설정해보기


홈서버 구축하기 시리즈

반응형