집에서 AdGuard Home을 사용하다가 인터넷이 제대로 연결되지 않는 문제를 겪었다.
평소에는 잘 사용하고 있었는데, AdGuard Home을 재시작한 뒤 문제가 발생했다. 처음에는 공유기 문제인지, AdGuard Home 문제인지 감이 잡히지 않았다.
당시 사용하던 공유기는 GL.iNet MT6000(Flint 2)이었다. Home Assistant에서 AdGuard Home을 실행하고 있었고, 원격 접속을 위해 Tailscale도 사용하고 있었다.
처음에는 MT6000의 펌웨어가 문제일 수도 있겠다고 생각했다. 당시 베타 펌웨어를 사용하고 있었기 때문이다.
그런데 DNS 설정을 확인하다 보니 공유기뿐 아니라 Home Assistant 자체에도 신경 쓰이는 설정이 하나 있었다.
MT6000 공유기 DNS에 Home Assistant IP가 들어 있었다

당시 Home Assistant의 내부 IP는 `192.168.1.5`였다.
AdGuard Home을 Home Assistant에서 실행하고 있었기 때문에 공유기의 DNS 서버에도 이 주소를 지정해 두었다.
문제는 AdGuard Home이 재시작되는 동안이었다.
집 안의 기기들이 AdGuard Home을 DNS 서버로 사용하고 있다면, 해당 서비스가 응답하지 않는 동안에는 도메인 주소를 조회하는 데 문제가 생길 수 있다.
물론 이것만으로 당시 인터넷 연결 문제가 전부 DNS 때문이었다고 확정할 수는 없다. 하지만 우선 공유기에서 AdGuard Home을 바라보는 설정을 변경해 보기로 했다.
MT6000의 DNS 설정에서 Home Assistant IP인 `192.168.1.5`를 제거했다.
AdGuard Home에 설정해 둔 상위 DNS는 Cloudflare의 `1.1.1.1`과 `1.0.0.1`이었다. 이 설정과 공유기에서 사용하는 DNS 서버 주소는 별개이기 때문에, AdGuard Home의 상위 DNS가 정상적으로 설정되어 있다고 해서 공유기 쪽 설정까지 문제가 없는 것은 아니었다.
그런데 Home Assistant도 자기 IP를 DNS로 사용하고 있었다

공유기 설정을 확인한 뒤 Home Assistant의 IP 설정도 살펴봤다.
여기서 또 하나 발견한 것이 있었다.
Home Assistant 자신의 DNS 서버에도 `192.168.1.5`가 들어 있었다.
즉, AdGuard Home이 실행되는 장치가 DNS 서버로 자기 자신의 IP를 사용하고 있었다.
처음에는 공유기에서 AdGuard Home으로 전달되는 DNS 요청만 생각했는데, 정작 Home Assistant 자신도 같은 주소를 사용하고 있었던 것이다.
같은 장치에서 DNS 서버를 실행하고 자기 IP를 DNS로 사용하는 구성이 무조건 잘못된 것은 아니다. 하지만 AdGuard Home을 재시작할 때 문제가 발생했던 만큼, 이 설정도 영향을 주었을 가능성이 있다고 생각했다.
그래서 Home Assistant의 IP 설정에서도 DNS 서버로 지정되어 있던 `192.168.1.5`를 제거했다.
결국 공유기와 Home Assistant, 두 곳의 DNS 설정을 모두 변경한 셈이다.
실제로 변경한 설정은 두 가지
이번에 바꾼 내용을 정리하면 간단하다.
| 변경한 곳 | 변경 내용 |
|---|---|
| MT6000 공유기 | DNS 설정에서 Home Assistant IP인 192.168.1.5 제거 |
| Home Assistant | 자신의 IP 설정에서 DNS 서버로 지정된 192.168.1.5 제거 |
두 설정을 변경한 뒤에는 처음 겪었던 연결 문제가 해결된 것처럼 보였다.
다만 어느 쪽 설정이 직접적인 원인이었는지는 아직 확실하지 않다. 두 곳을 모두 변경했고, 설정을 하나씩 원래대로 되돌려 동일한 문제가 다시 발생하는지까지 확인한 것은 아니기 때문이다.
MT6000의 펌웨어 문제도 의심했지만, 펌웨어 버그였다는 사실을 확인한 것은 아니다.
현재로서는 공유기와 Home Assistant의 DNS 설정을 함께 변경한 뒤 문제가 정상화된 것으로 보였다는 정도가 내가 실제로 확인한 결과다.
Tailscale DNS 설정은 또 별개였다
이번에 DNS 설정을 확인하면서 Tailscale 쪽도 신경이 쓰였다.
Home Assistant에는 Tailscale이 설치되어 있었고, Tailscale 관리 화면에도 Home Assistant의 Tailscale IP를 DNS 서버로 지정해 둔 상태였다.
Tailscale의 DNS 설정은 공유기의 DHCP DNS 설정과 별개다.
따라서 공유기에서 `192.168.1.5`를 제거했다고 해서 Tailscale을 사용하는 기기의 DNS 설정까지 자동으로 같은 방식으로 바뀌는 것은 아니다.
이번에 실제로 변경한 것은 MT6000과 Home Assistant 자신의 DNS 설정이었다. Tailscale에 대해서는 별도의 설정 변경이나 장애 재현 결과를 확인하지 않았다.
인터넷이 연결되는 것과 광고 차단이 작동하는 것은 다른 문제
여기서 한 가지는 구분할 필요가 있다.
이번에는 인터넷 연결 문제를 점검하면서 공유기 DNS에서 AdGuard Home이 실행되는 장치의 IP를 제거했다.
그런데 이렇게 설정을 변경하면 집 안의 기기들이 이전처럼 AdGuard Home을 거쳐 DNS 요청을 보내는지도 달라질 수 있다.
인터넷이 정상적으로 연결된다고 해서 AdGuard Home의 광고 차단까지 이전과 똑같이 작동한다는 의미는 아니다.
AdGuard Home을 계속 사용하려면 각 기기가 실제로 어떤 DNS 서버를 이용하는지, AdGuard Home의 쿼리 로그에 해당 기기의 요청이 남는지도 확인해야 한다.
이번 글에서는 변경 후 모든 기기의 광고 차단 상태까지 검증했다고 말하지는 않겠다.
같은 문제가 생긴다면 공유기만 확인하지 말자
이번 일을 겪으면서 가장 의외였던 부분은 Home Assistant 자신의 DNS 설정이었다.
처음에는 공유기에서 AdGuard Home을 가리키는 주소만 신경 쓰고 있었는데, Home Assistant의 IP 설정에도 자기 자신의 주소가 DNS 서버로 들어 있었다.
공유기와 Home Assistant 양쪽의 설정을 확인하지 않았다면 이 부분을 놓쳤을 것 같다.
AdGuard Home을 재시작한 뒤 인터넷이 잘 안 된다면 공유기 DNS만 볼 것이 아니라, AdGuard Home을 실행하는 장치가 어떤 DNS 서버를 사용하고 있는지도 한 번 확인해 볼 만하다.
내 경우에는 MT6000과 Home Assistant에서 각각 `192.168.1.5`를 제거했다.
모든 환경에서 같은 방법이 정답이라는 뜻은 아니다. 다만 여러 곳에 DNS 서버를 지정해 둔 홈네트워크라면, 어느 장치가 어느 DNS 서버를 바라보고 있는지부터 확인하는 것이 문제를 살펴보는 출발점이 될 수 있다.
