- 2024년 웹과 소프트웨어는 광고, 추적, 분석 위젯, 쿠키 배너, 끊임없는 외부 통신으로 피로도가 커졌고, Pi-hole은 이를 네트워크 단에서 줄이는 방법임
- Pi-hole은 집이나 사무실 네트워크의 DNS 싱크홀로 동작해 추적기, 광고 CDN, 원치 않는 도메인 요청을 기기 전체에서 차단함
- 실제 사용 환경에서는 전체 트래픽의 66.6%가 차단됐고, 일상 작업에는 기능적 영향이 없었다고 함
- 구성에는 Raspberry Pi와 microSD 카드, 초기 설정용 주변기기, Pi-hole 설치, 라우터가 DNS 요청을 Pi-hole로 보내게 하는 네트워크 설정이 필요함
- Pi-hole만으로 모든 광고를 막기는 어려워 YouTube 같은 서비스에는 uBlock Origin 같은 브라우저 광고 차단기를 함께 쓰는 구성이 유용함
왜 Pi-hole을 쓰는가
- 웹 브라우징과 소프트웨어 사용 중 원치 않는 데이터 수집과 추적이 크게 늘었고, 사용자는 컴퓨터·브라우저·기타 신호가 동의 없이 프로파일링에 쓰이는 상황을 피하고 싶어함
- 2024년의 일반적인 온라인 경험은 광고, 악성 스크립트, 분석 위젯, 챗봇 위젯, 페이지를 가리는 쿠키 동의 배너, 클릭마다 외부로 통신하는 소프트웨어로 채워져 있음
- 광고 기술은 방문자를 과도하게 악용하는 방향으로 변했고, 이에 대한 대응책으로 집 네트워크에 Pi-hole을 두는 방식이 제안됨
- Pi-hole은 이미 오래 알려진 프로젝트이며 Jeff Atwood, Troy Hunt, Scott Hanselman, Scott Helme 등이 수년간 다뤄온 도구임
네트워크에서 동작하는 방식
- Pi-hole은 보통 Raspberry Pi에서 실행되지만, 기술적으로는 Pi 밖에서도 실행 가능함
- 네트워크 내부의 DNS 프록시/싱크홀처럼 동작함
- 목적은 네트워크에서 접근하지 않으려는 도메인 요청을 차단하는 것임
- 추적기
- 광고 제공 CDN
- 집이나 사업장 내부에서 데이터를 보내고 싶지 않은 도메인
- 실제 네트워크에서는 전체 트래픽의 66.6%가 차단됐고, 사용자가 하는 작업에는 기능적 영향이 없었음
설치에 필요한 구성
- Pi-hole 설정에는 큰 투자가 필요하지 않으며, 가장 큰 비용은 장비보다 설정과 검증에 드는 시간임
- 기본 구성은 다음과 같음
- Pi-hole 팀은 설치 과정을 가능한 한 단순하게 만들었음
차단 도메인 목록 운영
- 하드웨어와 소프트웨어를 설치한 뒤에는 라우터의 DNS 요청 대상이 Pi-hole 장치를 가리키도록 구성해야 함
- 다음 단계는 어떤 도메인을 차단할지 정하는 일임
- 네트워크를 흐르는 요청을 직접 보고 판단할 수 있음
- 커뮤니티 차단 목록을 사용할 수 있음
- Firebog는 시작점으로 추천되는 자료이며, 커뮤니티가 연구하고 수집한 많은 도메인 목록을 제공함
- 모든 목록을 무조건 적용할 필요는 없음
- 일부 기능이 깨지거나 동작하지 않을 수 있음
- Pi-hole의 실시간 쿼리 로그에서 어떤 클라이언트가 어떤 도메인에 접근하려 하는지 확인 가능함
- 필요에 따라 도메인을 동적으로 차단하거나 허용할 수 있음
- 정규표현식으로 특정 조건에 맞는 도메인을 막을 수 있음
- 러시아, 중국, 홍콩에서 비롯된 악성 트래픽을 많이 본다는 이유로
.cn, .ru, .hk TLD를 차단하는 예시가 있음
(^|\.)(cn|ru|hk)$
- 이 규칙을 적용하면 DNS 요청이 Pi-hole을 거치는 한 해당 TLD 서버로 향하는 통신은 네트워크 밖으로 나가지 않음
- 국가 TLD가 악성코드의 유일한 공격 벡터는 아니지만, 이를 차단하는 것은 전체 네트워크 보안 태세를 높이는 작은 단계로 다뤄짐
DNS 우회 막기
- 일부 기기는 사용자가 설정한 DNS를 우회해 광고를 제공하거나 분석 데이터를 수집하려 할 수 있음
- 대응 방식은 사용하는 라우터 하드웨어에 따라 달라짐
- UniFi 생태계와 UDM Pro를 쓰는 환경에서는 UDM에 SSH로 접속해
iptables 규칙을 실행하는 예시가 있음
iptables -t nat -A PREROUTING ! -s YOUR_PI_HOLE_IP -p tcp --dport 53 -j DNAT --to YOUR_PI_HOLE_IP
iptables -t nat -A PREROUTING ! -s YOUR_PI_HOLE_IP -p udp --dport 53 -j DNAT --to YOUR_PI_HOLE_IP
# Make sure that we skip 192.168.1.1 since that seems to break UniFi Protect
iptables -t nat -A POSTROUTING -m iprange --src-range 192.168.1.2-192.168.254.254 -j MASQUERADE
- 이 스크립트는 모든 DNS 트래픽인 포트 53을 Pi-hole로 리디렉션하고, NAT 규칙으로 네트워크 주소 마스커레이딩을 적용함
- 첫 번째 명령은 TCP DNS 패킷을 Pi-hole IP로 목적지 NAT 처리함
-t nat: NAT 테이블 규칙 지정
-A PREROUTING: 라우팅 전 인바운드 패킷 처리 체인에 규칙 추가
! -s YOUR_PI_HOLE_IP: Pi-hole 자체에서 시작된 패킷 제외
-p tcp: TCP 패킷에 적용
--dport 53: DNS 포트 53 대상 패킷 매칭
-j DNAT: 목적지 IP 주소를 바꾸는 DNAT 대상으로 이동
--to YOUR_PI_HOLE_IP: 패킷을 Pi-hole IP로 리디렉션
- 두 번째 명령은 같은 처리를 UDP 패킷에 적용함
- 세 번째 명령은 지정한 내부 IP 범위의 소스 IP를 라우터 IP로 바꾸는
MASQUERADE 규칙임
- 예시 범위는
192.168.1.2부터 192.168.254.254까지이며, 각자 네트워크에 맞게 조정 가능함
192.168.1.1은 UniFi Protect가 깨지는 것을 피하기 위해 제외됨
- 결과적으로 Pi-hole 자체에서 나온 요청을 제외한 네트워크 장치의 TCP·UDP DNS 요청은 모두 Pi-hole로 리디렉션됨
브라우저 광고 차단기와 함께 쓰기
- Pi-hole이 네트워크 장치와 인터넷 사이에 있어도 uBlock Origin 같은 신뢰할 수 있는 광고 차단기는 여전히 가치가 있음
- YouTube처럼 서비스 이용은 유지하면서 광고 없이 쓰고 싶은 경우에는 도메인 단위 차단만으로 해결하기 어려움
- Pi-hole은 브라우저 광고 차단기에 더해 원치 않는 콘텐츠와 요청을 막는 추가 계층으로 쓰임
- 브라우저 광고 차단기는 기본 웹사이트 도메인에서 로드되는 수동 광고나 스폰서 콘텐츠 같은 특정 UI 요소도 차단할 수 있음
사용 후 평가
- Pi-hole을 네트워크에 설치한 뒤에는 되돌아가기 어려울 정도로 효과가 컸음
- 부모와 배우자의 부모 네트워크에도 같은 설정을 적용함
- 온라인 생활의 질에 큰 차이를 만든다는 이유로 계속 추천하겠다고 밝힘