dodaNote
posts
🔩 기술
라즈베리파이로 나만의 VPN과 DNS 서버 구축 이야기
라즈베리파이 3B+로 VPN과 개인용 광고 차단 DNS를 구축 한 후기입니다

서론

이번 여름은 폭염이 상당하다. 나는 외부(특히 카페)에서 개발을 자주 하는 편이라서, 카페의 공용 와이파이를 이용하고는 한다. 개인정보와 보안에 관심이 많아지게 되며 최근에는 내 정보의 보안에도 신경을 쓰고 있다. 근데 역시 공용 와이파이는 암호화가 되어 있더라도, 불안하기 마련이다 😔

다른 커뮤니티들에서는 공용 와이파이가 아니라 개인용 핫스팟을 이용한다고 하는데, 내 데이터 사정은 그리 여유롭지 못하다. 그래서 다른 대안을 생각했던 것이 바로 집에서 굴러다니는 라즈베리파이를 이용한 VPN 서버였다. 그렇게 계속 VPN 서버로 집에서 구동되는 라즈베리파이를 사용하고 있었는데... AdGuard Home이라는 AdGuard(상용 애드블럭 프로그램의 개발사이다. 크롬 확장으로 국내에도 어느 정도 이름을 알리고 있다) 사에서 유지보수하는 광고 차단 DNS 서버 오픈소스가 있더라. 많은 리소스를 요구하지 않는 것 같길래, 바로 라즈베리파이에 설치하였다. 오늘은 정말 잘 사용하고 있는 이 라즈베리파이 구축 과정에 대한 회고를 해 보고자 한다.

구성 정리

시스템

  • Raspberry Pi 3B+ (CPU: 1.4Ghz, RAM: 1GB)
  • Ubuntu Server 20.04 LTS (https://ubuntu.com/download/raspberry-pi)
    • GUI가 필요한 게 아니었고, 기존에도 Ubuntu Server를 사용하던 여러 경험이 있어서 Ubuntu를 선택하였다. 이 사양에 GUI까지 돌리려면 난리 날 거다.
  • KT GiGA Internet 500 Mbps ("반기가"... 라고 많이 부르더라)
    • 우리 집은 인터넷 망이 원할하여, 업/다운 모두 500 Mbps 피크를 찍어준다.

서비스

  • Docker
    • WireGuard
    • Outline VPN (Deprecated)
      • 구글의 자회사(?)인 Jigsaw에서 개발/유지보수 중인 프록시 소프트웨어. 현재는 사용하지 않지만 살려는 두고 있다.
  • AdGuard Home
  • Whatap Client (https://www.whatap.io)
    • 서버 상태를 모니터링해주는 서비스이다. 서버의 장애 시 Slack 및 이메일로 알려주는 역할을 한다. client의 리소스 소모가 매우 적어서 애용하고 있다.

AdGuard Home의 장점

WireGuard는 딱히 장점을 적기 애매할 것 같다. 내가 VPN에 대해 잘 아는 것도 아니고... 그래서 AdGuard Home을 사용하며 얻은 장점들에 대해 좀 서술해보겠다.

확실한 광고/추적 보호

이미지

네트워크 요청의 대부분에서 사용하는 DNS에서 도메인을 차단해주기 때문에, 소프트웨어 광고 차단으로는 차단되지 않았던 운영체제/소프트웨어들의 추적이나 광고를 확실하게 차단할 수 있다.

클라이언트별 상세 설정

이미지

AdGuard Home에서는 "클라이언트"라는 개념의 구분 방식을 제공한다. 이 구분 방식을 통해 특정한 규칙을 변경하거나 특정한 서비스를 차단할 수도 있다.

서비스 차단

이미지

DNS 기반으로 서비스를 매우 간단하게 차단할 수 있도록 도와준다. 물론 일반적으로는 쓸모 없겠지만...

그리고... 서비스 차단에 제일 중요한 서비스들이 안 들어간 것 같은데...?

사용하며 발생한 여러 문제점

저사양의 라즈베리파이에 관련된 문제

라즈베리파이 3B+를 사용하고 있는데, 이 친구의 사양이 가끔 발목을 잡는다. ARM 1.4Ghz 64bit 프로세서에 DDR2 1GB 램을 가지고 있는 친구라서 버벅일 때가 상당히 많다.

이미지

특히 서버로써는 중요한 이더넷 속도도 문제인데, 최대 속도가 300 Mbps라서 500 Mbps 인터넷을 사용하고 있는 나에겐 치명적인 단점이였다. (사실 현재 상태에서도 속도를 높게 사용하면 라즈베리파이의 CPU 사용량이 하늘을 찌르기 때문에, 더 높아도 500Mbps를 다 못 냈을 것 같기는 하다)

AdGuard Home의 불편?

이미지

기존의 애드블럭과는 조금 다르게, DNS 단에서 차단을 진행하기 때문에 일시적으로 광고 차단을 끄기 쉽지 않았다. React 기반의 반응형 Web GUI를 제공하여 그나마 간편하긴 했지만, 역시 프로그램이나 브라우저 확장 기반의 애드블럭보단 불편한 점이였다.

전원 문제

이건 사실 내 충전기 문제긴 했는데, 라즈베리파이에 전원을 공급해주는 충전기 친구가 매우 불안정하여 전원이 가끔 죽어버렸었다. 이 문제는 새 충전기를 구입하여 해결 한 상태이다.

여담이지만, 라즈베리파이 전원 공급이 생각보다 까다롭더라. 조금이라도 볼트 수가 낮은 전원에서 외부 장치를 연결하면 low voltage 감지 경고를 뱉는다...

설치 후, 라즈베리파이의 상태

이미지

간단하게 그려본 내 VPN 겸 DNS 라즈베리파이 서버의 다이어그램이다. 기존에는 Docker로 VPN을 구동하고 있었다. (WireGuard의 구동을 환경 변수 몇 개로 매우 간단하게 할 수 있다)

지금 생각해보니 AdGuard Home도 Docker 공식 이미지를 제공하는데, 그냥 도커로 설치할 걸이라는 생각이 들기는 하지만. 내 소유의 모든 모바일 기기와 데스크탑에도 보안 DNS 서버로 설정하여 사용하고 있다.

뭐 결과적으로는 만족! ☺️

마치며

이미지
자본때문에 꿈꾸지도 못할 NUC 랙 마운트... / 이미지 출처: https://simplynuc.com/3u-nuc-server-shelf/

라즈베리파이로는 한계가 있는 것을 느끼고, Intel NUC 같은 x86 기반 미니PC를 고려해보고는 있다. 혹은 기존부터 사용하던 자작 NAS의 발열 문제를 해결하고 난다면 NAS에 사용해도 좋을 것 같고.

추후 관련된 서버를 변경하게 된다면 다시 블로그에 글을 작성할 수 있었으면 좋겠다.

 
raspberry-pidnsvpn
프로필 이미지
Dohyun Jung (도다)

즐거운 개발을 추구하는 개발자 🧑‍💻


댓글 컴포넌트 로딩 중...