오늘은 AdguardHome DNS 서버를 설치해볼 예정입니다. 이전에도 계속 사용했지만 일단 로컬에서 오는 DNS 서버는 속도면에서 1차적으로 빠르고 Adguard에서 제공하는 필터를 사용할 수 있어 단순 도메인 네임으로 필터링되지만 그래도 어느정도 광고 차단된다는 점에서도 이점이 있습니다.


이 글에서는 Docker와 시스템에 대한 내용을 모두 서술하며 크게 3가지 부분으로 나누어져 있습니다.

  • AdguardHome 설치하기
  1. 시스템 상에 서비스로 설치하기
  2. Docker에 설치하기
  • AdguardHome 설정하기
  1. 업스트림 DNS 서버 설정하기
  2. DNS 필터 설정하기
  • 라우터 및 기기에 DNS 설정 적용하기

DNS 단에서의 광고 차단이란

먼저 DNS에서 광고를 차단했다고 모든 광고가 차단되는 것은 아닙니다. DNS로 광고가 차단된다는 것은 특정 웹 사이트 전체의 요청을 차단(접근 불가능한 곳으로 우회)한다는 것이 됩니다. 그러므로 광고가 있는 특정 웹 사이트 A를 사용하는 사람에게 A가 DNS 단에서 차단되어 있다는 뜻은 동시에 특정 웹 사이트 A의 모든 기능을 사용할 수 없다는 것과 같은 말이 되니 주의하시기 바랍니다.

해당 웹 사이트 A는 누군가에게 필요한 웹 사이트일 수 있으므로 공공을 위해 웹 사이트 A는 차단되지 않을 것입니다. 이렇게 DNS 상에서의 광고 차단은 세밀한 차단을 지원하지 않는다는 단점을 가집니다.

AdguardHome 설치하기

원래는 직접 Bind9으로 캐싱 서버를 구성하려 했으나 지금 보니깐 Adguard 팀에서는 AdguardHome이라는 소프트웨어를 이미 개발하여 쉽게 Adguard DNS를 집에서도 구현할 수 있도록 해놓았습니다. 또한 문서 상에는 ARM 아키텍쳐인 Raspberry Pi도 정상적으로 지원하는 것 같으니 많은 분들이 쉽게 사용하실 수 있을거라고 봅니다.

AdguardTeam/AdGuardHome
Network-wide ads & trackers blocking DNS server. Contribute to AdguardTeam/AdGuardHome development by creating an account on GitHub.

시스템 서비스로 설치하기

이 글에서는 2가지 설치 방법을 다룰 예정입니다. Docker와 시스템에 즉시 설치하는 방법입니다. 보통의 경우에는 시스템에 바로 설치하는 방안을 권해드리지만 더 깔끔한 설정을 위해서는 Docker를 사용할 수 있습니다.

종속성 패키지 설치하기

먼저 최소한으로 필요로하는 패키지들을 설치해줍니다. 보통의 경우에는 추가로 설치될 패키지가 없을 것입니다.

# Promote permission level to 'admin'
sudo su

# Fetch the latest APT repository cache
apt update

# Install minimal necessary packages on your system
apt install sudo nano bind9-host

AdgaurdHome 바이너리 다운로드

벌써 거의 다 왔습니다. Adguard 팀에서 호스트부터 서비스 등록까지 이미 벌써 Bash 스크립트로 구현을 해둔 상태이기 때문입니다. 물론 세세하고 더 깔끔할 설정이 필요한 환경인 경우에는 직접 문서를 살펴보시는 것이 맞습니다.

# Download AdguardHome binaries
wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz

# Extract it
tar xvf AdGuardHome_linux_amd64.tar.gz

Adguard Home 설치하기

이제 여기에 다음 한 줄만 입력하면 시스템 서비스로 AdguardHome이 설치됩니다.

sudo ./AdGuardHome -s install

Docker로 설치하기

Docker로 설치하면 컨테이너 내에서 활동하게 되므로 더욱 깔끔하게 AdguardHome을 실행할 수 있습니다.

Docker 이미지 가져오기

먼저 AdguardHome의 Docker 이미지를 가져옵니다.

docker pull adguard/adguardhome

데이터 볼륨 설정하기

Docker 컨테이너를 만들기 전에 AdguardHome에게 작업할 영역을 지정해주어야 합니다. 이 영역은 AdguardHome이 실행될 컨테이너에 하나의 볼륨으로 들어가게 됩니다. 저는 /opt/adguardhome 디렉터리를 사용하기로 했습니다. 아래와 같이 작업 영역과 설정 영역을 따로 만들어줍니다.

mkdir /opt/adguardhome
mkdir /opt/adguardhome/work
mkdir /opt/adguardhome/conf

Docker 컨테이너 생성하기

이제 모든 준비가 완료되었습니다. Docker 컨테이너를 실행할 차례입니다. 기본적으로는 아래와 같이 되겠습니다.

docker run --name adguardhome -v /opts/adguardhome/work:/opt/adguardhome/work -v /opts/adguardhome/conf:/opt/adguardhome/conf -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 68:68/tcp -p 68:68/udp -p 80:80/tcp -p 443:443/tcp -p 853:853/tcp -p 3000:3000/tcp -d adguard/adguardhome
  • 시스템의 /opts/adguardhome/work 폴더를 컨테이너의 /opts/adguardhome/work 폴더로 연결
  • 시스템의 /opts/adguardhome/conf 폴더를 컨테이너의 /opts/adgaurdhome/conf 폴더로 연결
  • adguardhome이라는 이름으로 실행하고 adguard/adguardhome 이미지를 사용

AdgaurdHome 설정하기

이제 서버의 3000번 포트에 접속하시면 다음과 같은 화면을 보게 되면 차례차례 설정해주시면 됩니다.

  • 시스템에서 설치한 뒤 설정 중에 대부분 53번 포트가 이미 시스템 서비스에 의해서 사용되고 있을 경우에는 '수정' 버튼으로 해결하실 수 있습니다.

몇 가지만 설정하면 자신이 선택한 포트에 웹 패널이 호스트되고 있는 것을 확인할 수 있습니다. 보통의 경우에는 패널은 공유기에서 외부 접속이 불가능하도록 포트포워드 설정을 하는 것이 좋습니다. 혹은 보안을 확실히 하기 위해 Nginx 등을 리버스 프록시로 사용해주세요.

웹 패널에 로그인하면 지금 어떤 쿼리가 오가고 있는지 확인하는 탭 등등 수많은 기능을 확인할 수 있습니다. 이제 설정 메뉴에서 DNS 설정 항목을 클릭하여 업스트림 DNS 서버를 Adguard DNS로 설정하면 됩니다.

아래 웹 사이트에서 Adguard DNS의 주소를 찾아주세요.

기본 적으로 다음의 주소를 사용할 수 있습니다.

  • '기본' 서버
  1. 176.103.130.130
  2. 176.103.130.131
  • '자녀보호' 서버
  1. 176.103.130.132
  2. 176.103.130.134

그리고 업스트림 DNS 서버 란에 한 줄에 하나 씩 추가하면 Adguard DNS가 집에서도 캐싱되므로 더욱 쾌적한 환경에서 사용할 준비가 완료됩니다. 하지만 이미 DNS 필터는 서버 자체에서 제공하고 있기 때문에 (필터의 DNS 차단 목록 탭에서도 볼 수 있음) 사실 실제로 저희가 생각해야 할 것은 속도와 보안입니다. 보통은 CloudFlare를 DoH 혹은 DoT 클라이언트로 삼기 위해서 다음의 설정을 사용할 수도 있습니다.

  • DoH: https://1.1.1.1 (보통은 /dns-query에서 호스트됨)
  • DoT: tls://1.1.1.1

공유기에 등록하기

공유기의 관리자 페이지를 열고 DNS 서버를 AdguardHome이 설치된 서버의 IP 주소로 수정합니다. 단, 2차 DNS 서버에는 1.1.1.1 혹은 8.8.8.8 등등의 상용 DNS 서버 주소를 입력하여 AdguardHome 서버가 다운되었을 경우에도 지속적인 인터넷 사용이 가능하도록 하세요. 저는 집에서 ipTIME 공유기를 사용 중이기 때문에 다음과 같이 변경하였습니다.

여기까지 설정한 후에 네트워크에 다시 연결하면 DNS 서버가 성공적으로 변경되었고 정상적으로 작동하는 것을 확인하실 수 있게 됩니다.

끝입니다. 그럼 쾌적한 인터넷 생활되세요.