Pi-hole 설치 가이드 – Docker로 집 전체 광고 차단하는 법
유튜브를 보다가 30초 광고에 짜증이 난 적, 뉴스 기사를 읽는데 팝업 광고가 화면을 덮은 적, 한두 번이 아닐 겁니다. 브라우저에 광고 차단 확장 프로그램을 설치하면 어느 정도 해결되지만, 스마트폰 앱이나 스마트TV에는 그런 확장 프로그램을 설치할 수가 없습니다. 그래서 등장한 것이 네트워크 레벨 광고 차단, 바로 Pi-hole입니다.
Pi-hole은 집 안의 모든 기기가 인터넷에 접속할 때 거치는 DNS 서버 역할을 하면서, 광고 서버와 트래커 도메인으로 향하는 요청을 아예 차단해 버립니다. PC, 스마트폰, 태블릿, 스마트TV, IoT 기기까지 — 공유기에 연결된 모든 장비에 광고 차단이 적용되는 셈이죠. 오늘은 라즈베리파이 없이도 Docker 하나로 Pi-hole을 설치하고 운영하는 방법을 처음부터 끝까지 안내해 드리겠습니다.

Pi-hole이 뭔가요? DNS 기반 광고 차단의 원리
DNS가 하는 일부터 이해하기
인터넷에서 어떤 사이트에 접속할 때, 브라우저는 먼저 그 도메인 이름(예: www.example.com)을 실제 서버의 IP 주소로 변환해야 합니다. 이 변환 작업을 해주는 것이 DNS(Domain Name System) 서버입니다. 보통은 통신사(KT, SK, LG U+)가 제공하는 DNS 서버를 자동으로 사용하게 되는데, 이걸 Pi-hole로 바꾸면 마법이 시작됩니다.
Pi-hole의 동작 방식
Pi-hole은 내 집 네트워크 안에서 DNS 서버 역할을 합니다. 기기가 “이 도메인의 IP 주소를 알려줘”라고 요청하면, Pi-hole은 먼저 자신의 블랙리스트를 확인합니다. 만약 요청된 도메인이 광고 서버나 트래킹 서버(예: ads.google.com, tracker.facebook.com)라면 “그런 주소 없어”라고 답변하고, 정상적인 도메인이라면 상위 DNS 서버(구글 8.8.8.8이나 Cloudflare 1.1.1.1)에 물어봐서 정상 응답을 돌려줍니다.
이 방식의 장점은 명확합니다. 광고 콘텐츠 자체가 아예 다운로드되지 않으니 페이지 로딩이 빨라지고, 데이터 사용량도 줄어들며, 개인정보 추적도 상당 부분 차단됩니다. 브라우저 확장 프로그램과 달리 앱 내부 광고까지 잡아내는 것도 큰 매력이죠.
브라우저 광고 차단과 Pi-hole의 차이
AdBlock이나 uBlock Origin 같은 브라우저 확장 프로그램은 웹페이지의 HTML·CSS·JavaScript를 분석해서 광고 요소를 숨기거나 제거합니다. 반면 Pi-hole은 그보다 한 단계 앞선 DNS 레벨에서 차단하기 때문에 광고 데이터 자체가 기기까지 전달되지 않습니다. 다만 유튜브 동영상 내 광고처럼 콘텐츠와 같은 도메인에서 제공되는 광고는 Pi-hole만으로는 완벽하게 차단하기 어렵습니다. 그래서 많은 분이 Pi-hole과 브라우저 확장 프로그램을 함께 사용합니다.
설치 전 준비 사항
어떤 하드웨어가 필요한가
Pi-hole이라는 이름 때문에 라즈베리파이가 반드시 필요하다고 생각하시는 분이 많은데, 전혀 그렇지 않습니다. Docker를 돌릴 수 있는 장비라면 무엇이든 됩니다. 가장 흔한 선택지를 정리하면 이렇습니다.
- 시놀로지 NAS — 이미 24시간 켜 놓고 쓰는 NAS가 있다면 가장 이상적입니다. Docker(Container Manager)가 기본 제공되므로 추가 장비 없이 바로 설치할 수 있습니다.
- 구형 노트북이나 미니PC — 서랍 속에 잠들어 있는 오래된 노트북도 충분합니다. Pi-hole은 CPU나 메모리를 거의 사용하지 않아서 10년 된 장비에서도 문제없이 돌아갑니다.
- 라즈베리파이 — 물론 원래 이름답게 라즈베리파이에서도 훌륭하게 작동합니다. 소비전력이 3~5W 수준이라 전기세 걱정도 없습니다.
- 클라우드 VPS — Oracle Cloud 무료 티어나 AWS Lightsail 같은 곳에 설치할 수도 있지만, 집 내부 네트워크용으로는 적합하지 않습니다.
필요한 소프트웨어
Docker와 Docker Compose만 설치되어 있으면 됩니다. 시놀로지 NAS를 사용한다면 DSM의 패키지 센터에서 Container Manager를 설치하면 Docker와 Compose가 함께 설치됩니다. 일반 리눅스 PC라면 터미널에서 몇 줄의 명령어로 Docker를 설치할 수 있고, 이전에 블로그에서 다룬 Docker 입문 가이드를 참고하셔도 좋습니다.
네트워크 정보 확인하기
설치 전에 두 가지 정보를 미리 확인해 두세요.
- Pi-hole을 설치할 장비의 내부 IP 주소 — 예를 들어 192.168.1.100 같은 형태입니다. 이 IP는 고정(static)으로 설정해야 합니다. DHCP가 IP를 바꿔 버리면 집 전체 인터넷이 먹통이 되니까요.
- 공유기 관리자 페이지 접속 방법 — 보통 192.168.1.1이나 192.168.0.1로 접속할 수 있습니다. 나중에 공유기의 DNS 설정을 Pi-hole로 바꿔야 하기 때문에 관리자 비밀번호를 미리 확인해 두세요.

Docker Compose로 Pi-hole 설치하기
1단계: 프로젝트 폴더 만들기
터미널을 열고 Pi-hole 설정 파일을 저장할 폴더를 만듭니다.
mkdir ~/pihole && cd ~/pihole
2단계: docker-compose.yml 작성
이 폴더 안에 docker-compose.yml 파일을 만듭니다. 아래는 2026년 최신 Pi-hole v6 기준의 설정입니다.
version: "3"
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
environment:
TZ: 'Asia/Seoul'
FTLCONF_webserver_api_password: 'my-secret-password'
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
restart: unless-stopped
각 설정의 의미를 하나씩 짚어 보겠습니다.
- ports 53:53 — DNS 요청을 받는 포트입니다. TCP와 UDP 모두 열어야 합니다.
- ports 80:80 — Pi-hole 관리 웹 대시보드에 접속하는 포트입니다. 만약 이미 80번 포트를 다른 서비스가 사용 중이라면 “8080:80″처럼 변경하면 됩니다.
- TZ: ‘Asia/Seoul’ — 시간대 설정입니다. 로그와 통계가 한국 시간 기준으로 표시됩니다.
- FTLCONF_webserver_api_password — 관리자 대시보드 비밀번호입니다. 반드시 안전한 비밀번호로 변경하세요.
- volumes — Pi-hole의 설정 파일과 데이터를 호스트에 저장해서 컨테이너를 재시작해도 설정이 유지되도록 합니다.
- restart: unless-stopped — 시스템이 재부팅되어도 Pi-hole이 자동으로 다시 실행됩니다.
3단계: Pi-hole 실행
설정 파일을 저장한 뒤 아래 명령어로 Pi-hole을 실행합니다.
docker compose up -d
처음 실행할 때는 Pi-hole 이미지를 다운로드하느라 1~2분 정도 걸립니다. 완료되면 아래 명령어로 정상 실행을 확인합니다.
docker compose logs -f pihole
로그에 “FTL started!” 메시지가 보이면 성공입니다. 이제 브라우저에서 http://[설치한_장비_IP]/admin 으로 접속하면 Pi-hole 관리 대시보드가 나타납니다.
시놀로지 NAS에서 설치할 때 주의사항
시놀로지 NAS에서는 53번 포트를 기본 DNS 서비스가 이미 점유하고 있을 수 있습니다. 이 경우 DSM 제어판에서 DNS Server 패키지를 중지하거나, 아래처럼 특정 네트워크 인터페이스에만 바인딩하는 방법을 사용합니다.
ports:
- "192.168.1.100:53:53/tcp"
- "192.168.1.100:53:53/udp"
또한 시놀로지 DSM 7에서는 80번 포트도 DSM 웹 인터페이스가 사용하므로, Pi-hole 웹 대시보드는 8080이나 다른 포트로 매핑하는 것이 좋습니다.
공유기 DNS 설정 변경 — 집 전체에 적용하기
방법 1: 공유기 DNS 서버 직접 변경 (추천)
이 방법이 가장 깔끔합니다. 공유기 관리 페이지에 접속해서 DNS 서버 주소를 Pi-hole이 설치된 장비의 IP로 변경합니다.
국내에서 많이 사용하는 공유기별 설정 경로를 정리하면 다음과 같습니다.
- ipTIME — 관리도구 → 고급 설정 → 네트워크 관리 → 인터넷 설정 → 기본 DNS를 Pi-hole IP로 변경
- ASUS — 관리 페이지 → WAN → 인터넷 연결 → DNS 서버 1을 Pi-hole IP로 변경
- TP-Link — 관리 페이지 → Network → DHCP Server → Primary DNS를 Pi-hole IP로 변경
- 통신사 제공 공유기 — 대부분 DHCP 설정에서 DNS 서버를 수동 지정할 수 있습니다. 메뉴 구조는 제조사마다 다르지만, “DHCP” 또는 “DNS” 키워드로 찾으면 됩니다.
DNS를 변경한 뒤에는 연결된 기기들의 DHCP 임대를 갱신해야 새 DNS 설정이 적용됩니다. 가장 간단한 방법은 기기의 Wi-Fi를 껐다가 다시 켜는 것입니다.
방법 2: 개별 기기에서 DNS 수동 설정
공유기 설정을 변경하기 어려운 환경(회사 네트워크, 공유 오피스 등)이라면 개별 기기에서 DNS를 수동으로 Pi-hole IP로 지정할 수 있습니다. 다만 이 경우 설정한 기기에만 광고 차단이 적용됩니다.
- Windows — 설정 → 네트워크 및 인터넷 → Wi-Fi 속성 → DNS 서버 할당을 수동으로 변경
- macOS — 시스템 설정 → 네트워크 → Wi-Fi → 세부사항 → DNS 탭에서 서버 추가
- iOS — 설정 → Wi-Fi → 연결된 네트워크의 (i) → DNS 구성을 수동으로 변경
- Android — 설정 → 네트워크 → Wi-Fi → 연결된 네트워크 수정 → 고급 옵션에서 DNS 변경
방법 3: 공유기 DHCP에서 DNS 서버 배포
공유기의 DHCP 설정에서 기기에게 배포하는 DNS 서버 주소를 Pi-hole로 지정하는 방법도 있습니다. 방법 1과 비슷하지만, 이 경우 공유기 자체가 아닌 각 기기가 직접 Pi-hole에 DNS를 질의하게 됩니다. Pi-hole 대시보드에서 어떤 기기가 어떤 요청을 했는지 개별적으로 확인할 수 있다는 장점이 있습니다.
Pi-hole 대시보드 활용과 필수 설정
대시보드 둘러보기
브라우저에서 http://[Pi-hole_IP]/admin에 접속하면 직관적인 대시보드가 나타납니다. Pi-hole v6 기준으로 주요 화면 구성은 이렇습니다.
- Dashboard — 전체 DNS 쿼리 수, 차단된 쿼리 수, 차단율(%), 그리고 시간대별 쿼리 그래프를 한눈에 보여줍니다. 처음 설정 후 하루만 지나면 보통 15~30%의 요청이 광고·트래커였다는 사실에 놀라게 됩니다.
- Query Log — 실시간으로 어떤 기기가 어떤 도메인을 요청했고, 허용됐는지 차단됐는지를 보여줍니다. 특정 앱이 몰래 보내는 데이터 수집 요청을 발견하면 꽤 충격적입니다.
- Domains — 특정 도메인을 수동으로 허용 목록(Whitelist)이나 차단 목록(Blacklist)에 추가할 수 있습니다.
- Adlists — 광고·트래커 도메인 목록(블랙리스트)을 관리합니다. 기본 목록만으로도 10만 개 이상의 광고 도메인이 차단되지만, 추가 목록을 넣으면 더 강력해집니다.
추천 블랙리스트 추가하기
Pi-hole 기본 설치 시 포함된 광고 목록은 Steven Black의 통합 호스트 목록 하나입니다. 여기에 아래 목록을 추가하면 차단 범위가 크게 넓어집니다.
- Firebog Ticked Lists — firebog.net에서 검증된 목록만 모아 놓은 컬렉션입니다. Pi-hole 커뮤니티에서 가장 널리 추천되는 목록이며, 오탐(정상 사이트를 잘못 차단하는 것)이 적습니다.
- OISD (oisd.nl) — 광고, 트래커, 멀웨어 도메인을 통합한 대형 목록입니다. “full” 버전은 100만 개 이상의 도메인을 포함합니다.
- Hagezi DNS Blocklists — 2025~2026년에 급부상한 목록으로, 특히 모바일 앱 광고와 텔레메트리 차단에 강점이 있습니다.
목록 추가는 Pi-hole 대시보드의 Adlists 메뉴에서 URL을 붙여넣고 Add 버튼을 누르면 끝입니다. 추가 후 Tools → Update Gravity를 클릭해서 목록을 갱신하세요.
다만 너무 공격적인 목록을 추가하면 정상적인 서비스가 차단될 수 있으니, 처음에는 Firebog의 Ticked 목록 + OISD basic 정도로 시작하고 필요에 따라 늘려 가는 것을 추천합니다.

화이트리스트 관리 — 오탐 해결하기
Pi-hole을 운영하다 보면 가끔 정상적인 서비스가 차단되는 경우가 생깁니다. 쇼핑몰 결제가 안 되거나, 특정 앱이 작동하지 않거나, 캡차 인증이 실패하는 등의 증상이 나타나면 Pi-hole의 Query Log를 확인해 보세요.
Query Log에서 빨간색으로 표시된(차단된) 도메인 중 의심되는 것을 클릭하면 바로 화이트리스트에 추가할 수 있습니다. 자주 화이트리스트에 추가해야 하는 도메인 유형을 정리하면 이렇습니다.
- CDN 도메인 — s3.amazonaws.com, cdn.jsdelivr.net 등 콘텐츠 전송 네트워크 도메인은 광고와 무관하게 정상 서비스에도 사용됩니다.
- 인증 관련 도메인 — 소셜 로그인이나 캡차 서비스 도메인이 차단되면 로그인 자체가 안 될 수 있습니다.
- IoT 기기 필수 도메인 — 로봇청소기, 스마트 스피커 등이 자체 클라우드에 접속하지 못하면 기기가 작동하지 않을 수 있습니다.
상위 DNS 서버 선택
Pi-hole이 차단하지 않은 정상적인 DNS 요청은 상위(upstream) DNS 서버로 전달됩니다. 기본값은 구글 DNS(8.8.8.8)이지만, 프라이버시를 중시한다면 아래 대안을 고려해 보세요.
- Cloudflare (1.1.1.1) — 속도가 빠르고 개인정보 보호 정책이 명확합니다. APNIC과 공동으로 운영하며, 로그를 24시간 내에 삭제합니다.
- Quad9 (9.9.9.9) — 멀웨어·피싱 도메인 차단 기능이 내장되어 있어 Pi-hole과 함께 쓰면 이중 보호 효과가 있습니다.
- Unbound (자체 DNS 리졸버) — 상위 DNS 서버에 의존하지 않고 직접 루트 서버부터 DNS를 재귀 조회하는 방식입니다. 프라이버시가 극대화되지만 설정이 다소 복잡합니다.
실전 운영 팁과 고급 활용법
Pi-hole + Unbound 조합으로 프라이버시 극대화
Pi-hole만 사용하면 차단되지 않은 DNS 요청은 결국 구글이나 Cloudflare에 전달됩니다. 여기에 Unbound를 함께 설치하면 외부 DNS 서버를 전혀 거치지 않고 직접 DNS를 해석할 수 있습니다.
docker-compose.yml에 Unbound 컨테이너를 추가하는 설정은 아래와 같습니다.
unbound:
container_name: unbound
image: mvance/unbound:latest
ports:
- "5335:53/tcp"
- "5335:53/udp"
restart: unless-stopped
Pi-hole 설정에서 상위 DNS 서버를 127.0.0.1#5335(또는 Docker 네트워크 내부 IP)로 지정하면 모든 DNS 쿼리가 Unbound를 통해 직접 해석됩니다. 이렇게 하면 어떤 제3자 DNS 서버에도 내 브라우징 기록이 전달되지 않습니다.
Pi-hole을 DHCP 서버로 활용하기
공유기의 DHCP 기능 대신 Pi-hole이 직접 DHCP 서버 역할을 할 수도 있습니다. 이 경우 Pi-hole 대시보드에서 각 기기의 호스트네임이 IP 주소 대신 표시되어 “누가 어떤 사이트에 접속했는지”를 더 직관적으로 파악할 수 있습니다. Settings → DHCP에서 활성화할 수 있으며, 활성화하기 전에 반드시 공유기의 DHCP를 먼저 비활성화해야 합니다. 같은 네트워크에 DHCP 서버가 두 개 있으면 IP 충돌이 발생합니다.
외출 시에도 광고 차단 — WireGuard VPN 연동
집 밖에서 모바일 데이터를 사용할 때도 Pi-hole의 보호를 받고 싶다면, WireGuard VPN이나 이전에 블로그에서 다뤘던 Tailscale을 활용하면 됩니다. 스마트폰에서 VPN으로 집 네트워크에 접속하면, 모든 DNS 요청이 Pi-hole을 경유하게 되어 외출 중에도 광고가 차단됩니다.
정기 업데이트와 모니터링
Pi-hole을 안정적으로 운영하려면 몇 가지 관리 작업을 주기적으로 해주면 좋습니다.
- Gravity 업데이트 — 광고 도메인 목록을 최신 상태로 유지합니다. Pi-hole은 기본적으로 일주일에 한 번 자동 업데이트하지만, 수동으로도 가능합니다.
docker exec pihole pihole -g - Docker 이미지 업데이트 — Pi-hole 자체도 보안 패치와 기능 개선이 꾸준히 이루어집니다.
docker compose pull && docker compose up -d명령어로 최신 버전을 적용할 수 있습니다. - 로그 확인 — 가끔 Query Log를 살펴보면 예상치 못한 도메인 요청을 발견할 수 있습니다. 설치한 적 없는 앱이 몰래 데이터를 보내는 경우도 있으니 한 달에 한 번 정도 점검하면 좋습니다.
Pi-hole 통계로 보는 우리 집 네트워크의 현실
Pi-hole을 일주일만 운영해 보면 놀라운 통계를 확인할 수 있습니다. 일반적인 가정에서 측정되는 수치를 공유하면 이렇습니다.
- 하루 평균 DNS 쿼리 수: 15,000~50,000건 (기기 수에 따라 다름)
- 광고·트래커 차단율: 전체 쿼리의 15~35%
- 가장 많이 차단되는 도메인: Facebook 트래커, Google 광고, Amazon 텔레메트리, 각종 앱 분석 SDK
- 스마트TV가 가장 많은 트래커 요청을 보내는 기기인 경우가 대부분
이 숫자들을 보면 “아, 내가 몰랐을 뿐 내 기기들이 이렇게 많은 데이터를 외부로 보내고 있었구나”라는 걸 실감하게 됩니다.

자주 묻는 질문과 문제 해결
Pi-hole 설치 후 인터넷이 안 됩니다
가장 흔한 원인은 Pi-hole 컨테이너가 정상 실행되지 않은 상태에서 DNS를 Pi-hole로 변경한 경우입니다. docker compose ps로 컨테이너 상태를 확인하고, 만약 Pi-hole이 꺼져 있다면 공유기 DNS를 원래 설정(자동 또는 8.8.8.8)으로 임시 복원한 뒤 문제를 해결하세요.
특정 사이트가 작동하지 않습니다
Pi-hole 대시보드의 Query Log에서 해당 시간대의 차단된 도메인을 확인하고, 의심되는 도메인을 화이트리스트에 추가합니다. 확실하지 않다면 Pi-hole을 일시적으로 비활성화(대시보드에서 Disable → 5분 등)한 뒤 해당 사이트가 정상 작동하는지 확인하는 방법도 있습니다.
Pi-hole 장비가 꺼지면 집 전체 인터넷이 먹통이 되나요?
네, DNS 서버가 응답하지 않으면 도메인 이름을 IP로 변환할 수 없어서 실질적으로 인터넷이 안 됩니다. 이를 방지하는 방법은 두 가지입니다. 첫째, 공유기 DNS 설정에 보조 DNS(예: 1.1.1.1)를 함께 입력해 두면 Pi-hole이 응답하지 않을 때 보조 DNS로 자동 전환됩니다. 다만 이 경우 보조 DNS를 사용하는 동안에는 광고 차단이 안 됩니다. 둘째, Pi-hole을 NAS처럼 항상 켜져 있는 장비에 설치하면 다운타임 걱정을 크게 줄일 수 있습니다.
유튜브 광고도 차단되나요?
아쉽게도 유튜브 동영상 내 광고는 Pi-hole만으로는 완벽히 차단하기 어렵습니다. 유튜브는 광고 영상과 일반 영상을 같은 도메인(googlevideo.com)에서 제공하기 때문에, 광고만 골라 차단하면 일반 영상까지 재생이 안 됩니다. 유튜브 광고까지 차단하려면 브라우저용 uBlock Origin 확장 프로그램을 함께 사용하거나, YouTube Premium을 구독하는 것이 현실적인 방법입니다.
Pi-hole이 인터넷 속도에 영향을 주나요?
오히려 빨라지는 경우가 많습니다. 광고 콘텐츠를 아예 다운로드하지 않으니 페이지 로딩 시 전송되는 데이터 양이 줄어들고, DNS 응답도 로컬 네트워크 내에서 처리되니 외부 DNS 서버보다 응답 시간이 빠릅니다. 특히 광고가 많은 뉴스 사이트나 커뮤니티 사이트에서 체감 속도 차이가 큽니다.
마무리 — 10분 투자로 바뀌는 인터넷 경험
Pi-hole 설치는 Docker 명령어 몇 줄과 공유기 DNS 설정 변경이 전부입니다. 이 10분의 투자로 집 안 모든 기기에서 광고 없는 깨끗한 인터넷을 경험할 수 있습니다. 개인적으로 Pi-hole을 설치하고 가장 만족스러웠던 점은 스마트폰 앱 내 배너 광고와 스마트TV의 추천 광고가 사라진 것이었습니다.
프라이버시 측면에서도 큰 의미가 있습니다. Pi-hole의 Query Log를 며칠만 관찰해 보면, 내 기기들이 나도 모르게 얼마나 많은 트래킹 데이터를 외부로 보내고 있었는지 직접 확인할 수 있습니다. 단순한 광고 차단을 넘어 내 디지털 생활의 투명성을 확보하는 첫걸음이 될 것입니다.
이미 Docker를 사용해 보신 분이라면 5분이면 충분하고, 처음이시라면 블로그의 Docker 입문 가이드를 먼저 읽어 보신 뒤 도전해 보세요. 한 번 설치하면 돌아갈 수 없는, 그런 종류의 변화입니다.
이미지는 Leonardo AI 로 생성되었습니다.
이미지는 Claude AI 로 생성되었습니다.


