지금까지는 NAS에 서비스를 하나씩 올리고, 외부에서 접속할 수 있는 방법을 만들고, Tailscale을 이용해 내 기기와 NAS를 연결하는 과정까지 정리했다.
그런데 Tailscale을 사용하다 보니 한 가지가 더 궁금해졌다.
인터넷에 접속할 때 우리가 입력하는 주소는 실제로 어떻게 찾아가는 걸까?
예를 들어 브라우저에서 어떤 사이트의 주소를 입력하면 컴퓨터는 그 이름에 해당하는 서버의 주소를 찾아야 한다.
그 역할을 하는 것이 DNS였다.
평소에는 그냥 인터넷이 알아서 처리해주는 것처럼 생각했는데, NAS를 직접 운영하다 보니 이 DNS도 직접 관리해보고 싶어졌다.
그렇게 시작한 것이 AdGuard Home이었다.
처음에는 AdGuard Home을 광고 차단 프로그램 정도로 생각했다
처음 AdGuard Home이라는 이름을 봤을 때는 광고를 차단해주는 프로그램이라고 생각했다.
물론 그런 기능도 있지만, 직접 설치해보니 내가 생각했던 것보다 훨씬 재미있는 프로그램이었다.
AdGuard Home은 네트워크의 DNS 요청을 받아서 처리할 수 있었다.
쉽게 말하면
내 기기
↓
DNS 요청
↓
AdGuard Home
↓
외부 DNS 서버
같은 구조를 만들 수 있는 것이다.
이걸 직접 운영해보면 평소에는 보이지 않던 DNS 요청이 눈에 들어오기 시작한다.
NAS 안에 DNS 서버를 하나 더 만들었다
이미 Docker를 이용해 여러 서비스를 운영하고 있었기 때문에 AdGuard Home도 NAS에 구성했다.
NAS 안에서 하나의 서비스로 실행하고,
별도의 내부 주소를 사용해 DNS 서버 역할을 하도록 구성했다.
이때부터 NAS의 역할이 또 하나 늘어났다.
처음에는 파일 저장장치였고,
그다음에는 웹서비스를 운영하는 서버였고,
이제는 DNS를 처리하는 서버까지 된 것이다.
NAS
│
├─ WordPress
├─ Vaultwarden
├─ Jellyfin
├─ 기타 서비스
│
└─ AdGuard Home
↓
DNS
NAS 한 대에서 정말 많은 일을 하게 된 셈이다.
DNS라는 것을 직접 관리해보니 조금 다르게 보였다
예전에는 인터넷이 너무 자연스럽게 연결됐기 때문에 DNS가 어떤 역할을 하는지 크게 신경 쓰지 않았다.
그런데 직접 DNS 서버를 구성해보니 인터넷 접속 과정에서 DNS가 꽤 중요한 역할을 하고 있다는 것을 체감하게 됐다.
내 기기에서 어떤 사이트에 접속하려고 하면 먼저 주소를 찾아야 한다.
그 요청을 AdGuard Home이 받아서 처리하고,
설정해둔 상위 DNS 서버를 통해 결과를 받아오는 구조다.
그래서 이제는
“인터넷이 안 된다.”
라는 상황이 생기면 단순히 인터넷 회선만 생각하는 것이 아니라
DNS가 정상적으로 동작하고 있는지도 확인해야 한다
는 생각을 하게 됐다.
상위 DNS도 직접 설정했다
AdGuard Home을 설치하고 끝나는 것은 아니었다.
이제 AdGuard Home이 DNS 요청을 어디로 보낼지도 정해야 했다.
그래서 여러 상위 DNS 서버를 설정했다.
현재 내가 사용하고 있는 환경에서는 Cloudflare의 DoH,
Google의 DoH,
AdGuard의 DoT,
그리고 일반적인 DNS 서버도 함께 사용하도록 구성했다.
예를 들면 이런 형태다.
내 기기
↓
AdGuard Home
↓
상위 DNS
├─ Cloudflare DoH
├─ Google DoH
├─ AdGuard DoT
├─ 기타 DNS
└─ 기타 DNS
처음에는 왜 이렇게 여러 개가 필요한지도 잘 몰랐다.
하지만 직접 설정을 만져보면서 각각이 어떤 역할을 하는지 하나씩 이해하게 됐다.
DNS 설정 하나를 바꾸는 것도 결국 테스트가 필요했다
AdGuard Home을 구성하면서 느낀 것은
설정을 입력하는 것과 제대로 동작하는 것은 다른 이야기라는 것이었다.
주소를 입력했다고 바로 끝나는 것이 아니었다.
실제로 DNS 요청이 들어오는지,
AdGuard Home이 응답하고 있는지,
상위 DNS 서버와 통신이 되는지,
클라이언트에서 원하는 방식으로 사용하는지 등을 확인해야 했다.
그래서 설정을 하나 바꾸면 다시 테스트했다.
정상적으로 동작하면 다음 설정으로 넘어가고,
문제가 생기면 어디서 끊겼는지 확인했다.
이 과정이 조금씩 쌓이면서 DNS 구조도 자연스럽게 이해하게 됐다.
Tailscale과 DNS도 연결할 수 있었다
AdGuard Home을 구성하다 보니 앞에서 만들었던 Tailscale과도 연결할 수 있다는 것을 알게 됐다.
Tailscale에는 DNS를 설정할 수 있는 부분이 있었고,
여기에서 Global Nameservers를 지정할 수 있었다.
그래서 내가 사용하는 Tailscale 환경에서는 AdGuard DNS를 사용하도록 설정했다.
구조를 간단하게 보면
내 휴대폰 / 노트북
↓
Tailscale
↓
DNS 설정
↓
AdGuard DNS
형태다.
이렇게 하면서 앞에서 따로 구성했던 Tailscale과 이번에 만든 DNS 환경이 연결되기 시작했다.
처음부터 한 번에 끝난 것은 아니었다
이 부분도 기록해두고 싶다.
AdGuard Home과 Tailscale DNS를 연결하는 과정은 한 번에 끝나지 않았다.
어떤 설정을 어디에 넣어야 하는지 헷갈렸고,
DNS가 실제로 적용되는지도 확인해야 했다.
그래서
설정 변경
→ 접속 테스트
→ DNS 확인
→ 다시 설정 변경
과정을 여러 번 반복했다.
지금은 정상적으로 동작하지만,
처음부터 모든 구조를 정확하게 알고 만들었던 것은 아니다.
하나씩 확인하면서 완성한 환경이다.
AdGuard Home을 사용하면서 DNS 로그를 보기 시작했다

AdGuard Home의 재미있는 부분 중 하나는 DNS 요청을 직접 볼 수 있다는 점이었다.
평소 인터넷을 사용할 때는 어떤 DNS 요청이 발생하는지 신경 쓸 일이 별로 없다.
그런데 AdGuard Home을 직접 운영하니
내가 사용하는 기기에서 어떤 요청이 들어오고 있는지 확인할 수 있었다.
처음에는 로그 화면을 보는 것만으로도 신기했다.
“내가 인터넷을 사용하는 동안 이런 요청들이 계속 발생하고 있었구나.”
라는 생각이 들었다.
컴퓨터가 인터넷을 사용하는 과정이 이전보다 조금 더 구체적으로 보이기 시작했다.
광고 차단보다 ‘직접 관리한다’는 점이 더 재미있었다
처음에는 AdGuard Home의 광고 차단 기능 때문에 관심이 생겼던 부분도 있었다.
하지만 실제로 사용하면서 더 재미있었던 것은
내가 사용하는 네트워크의 DNS를 직접 관리할 수 있다는 것
이었다.
어떤 DNS를 사용할지 정하고,
필요하면 다른 상위 DNS를 추가하고,
설정이 제대로 적용되는지 확인할 수 있었다.
그동안 당연하게 생각했던 인터넷의 한 부분을 직접 들여다보게 된 것이다.
NAS가 점점 네트워크의 중요한 장비가 되어갔다
여기서 다시 NAS를 바라보게 됐다.
처음에는 NAS가 데이터를 저장하는 장비였다.
그런데 Docker를 사용하면서 여러 서비스를 실행했고,
Cloudflare Tunnel을 연결하면서 외부 서비스의 연결점이 됐고,
Tailscale을 사용하면서 개인 네트워크에 연결됐고,
이제는 AdGuard Home까지 설치하면서 DNS 역할도 하게 됐다.
정리하면 지금의 NAS는 단순한 저장공간과는 거리가 멀었다.
DS224+
│
┌─────────────┼─────────────┐
│ │ │
▼ ▼ ▼
서비스 운영 네트워크 DNS
│ │ │
Docker Tailscale AdGuard Home
│
WordPress
Vaultwarden
Jellyfin
기타 서비스
하나의 장비에 역할이 계속 추가되고 있었다.
AI가 없었다면 아마 DNS까지 직접 건드리지는 않았을 것 같다
이번 AdGuard Home 구성에서도 AI의 역할이 컸다.
Docker로 AdGuard Home을 어떻게 구성해야 하는지,
어떤 부분을 확인해야 하는지,
DNS 설정은 어디에 넣어야 하는지,
Tailscale의 DNS와 어떤 관계가 있는지,
설정을 변경한 뒤 무엇을 테스트해야 하는지.
모르는 것이 나올 때마다 바로 질문하면서 진행했다.
특히 DNS처럼 처음 접하는 개념은 책이나 블로그만 보고 따라가면
“설정은 했는데 왜 안 되지?”
라는 상황에서 다시 막히기 쉽다.
이번에는 현재 내가 만들어놓은 환경을 기준으로 질문할 수 있었기 때문에
문제가 생길 때마다 하나씩 해결하면서 앞으로 나갈 수 있었다.
결국 이것도 Docker를 시작했던 것과 비슷했다.
모든 것을 다 공부한 후 시작한 것이 아니라, 필요한 만큼 배우면서 실제 환경을 만들어갔다.
직접 운영해보니 DNS도 하나의 서비스였다
예전에는 DNS를 인터넷의 당연한 기본 기능처럼 생각했다.
그런데 직접 AdGuard Home을 운영해보니 DNS도 분명 하나의 서비스였다.
서비스가 정상적으로 실행되어야 하고,
상위 DNS와 통신할 수 있어야 하고,
클라이언트가 올바르게 연결되어야 한다.
그리고 설정을 잘못 바꾸면 인터넷 접속에도 영향을 줄 수 있다.
그래서 이제는 DNS도
설치하고 끝나는 프로그램이 아니라 계속 상태를 확인해야 하는 서비스
라고 생각하게 됐다.
작은 변화였지만 NAS를 사용하는 방식이 또 달라졌다
처음에는 AdGuard Home 하나 추가한 것뿐이라고 생각했다.
그런데 실제로는 NAS와 내 기기 사이의 네트워크 구조를 조금 더 이해하게 됐다.
Tailscale을 사용할 때 DNS가 어떻게 동작하는지도 보게 됐고,
인터넷 접속에서 DNS가 어떤 역할을 하는지도 알게 됐고,
문제가 생겼을 때 확인해야 할 범위도 하나 더 늘어났다.
결국 NAS를 직접 운영하면서 배우는 것은 프로그램 하나가 아니라
프로그램과 프로그램 사이의 관계
였던 것 같다.
지금의 AdGuard Home은 조용히 계속 일하고 있다
AdGuard Home을 설치하고 여러 번 설정을 조정한 뒤 지금은 별다른 문제 없이 사용하고 있다.
평소에는 특별히 신경 쓰지 않아도 된다.
내 기기에서 인터넷을 사용하면 DNS 요청이 들어오고,
AdGuard Home이 이를 처리한다.
필요한 경우 관리 화면에 들어가 상태를 확인할 수 있다.
처음에는 설치 과정이 꽤 복잡하게 느껴졌는데,
완성하고 나니 오히려 눈에 잘 띄지 않는 서비스가 됐다.
그런데 개인적으로는 이런 서비스가 NAS에서 가장 재미있는 부분인 것 같다.
한번 제대로 구성해놓으면 평소에는 조용히 자기 역할을 하는 것.
NAS는 계속 하나의 방향으로 발전하고 있다
지금까지의 과정을 돌아보면 조금 재미있는 흐름이 있다.
처음에는 저장장치였다.
그다음 Docker를 설치하면서 서버가 됐다.
WordPress와 여러 서비스를 운영하면서 애플리케이션 서버가 됐다.
Cloudflare Tunnel을 연결하면서 외부 서비스의 연결점이 됐다.
Tailscale을 사용하면서 내 기기와 연결되는 개인 네트워크의 한 부분이 됐다.
그리고 AdGuard Home을 설치하면서 DNS 서버 역할까지 하게 됐다.
처음 NAS를 구매할 때는 이런 모습까지 생각하지 않았다.
그냥 파일을 저장하려고 샀던 장비였다.
다음에는 서비스를 관리하는 방법이 필요해졌다
서비스가 하나둘 늘어날 때는 재미있었다.
그런데 어느 순간부터 새로운 문제가 생겼다.
“지금 NAS에서 실행되고 있는 서비스들이 모두 정상인지 어떻게 알지?”
WordPress가 살아 있는지,
Vaultwarden이 정상인지,
AdGuard Home이 동작하는지,
Docker 컨테이너가 멈추지 않았는지,
문제가 생겼을 때 바로 알 수 있는 방법이 필요해졌다.
그때부터 Uptime Kuma를 사용해보기 시작했다.
다음 글에서는 NAS 안에 계속 늘어나는 서비스를 한눈에 확인하기 위해 Uptime Kuma를 설치하고 모니터링 환경을 만들었던 과정을 기록해보려고 한다.
NAS를 하나씩 확장하다 보니,
이제는 새로운 서비스를 만드는 것만큼 지금 만들어놓은 서비스가 잘 돌아가고 있는지 확인하는 일도 중요해지고 있었다.