Pi-hole과 라즈베리파이로 모든 광고 차단하기
앞서
유튜브 광고가 많아졌다. 명색이 프로그래머인데 AdGuard를 정액제로 사용하고 싶지 않았다. 이 문서엔 없지만 피캡을 구현해보고 싶었다.
기기 구매
라즈베리파이3 B+ 스타터킷을 구매한다. 아래 재료가 있을 경우 빼고 구매해도 된다.
- SD 카드 리더기
- 5핀 충전기
- 라즈베리파이용 방열판
- 라즈베리파이 케이스
환경설정
포맷
SD 카드를 비워주기위해 파워쉘이나 CMD를 관리자 모드로 접근한다.
PS > diskpart
DISKPART > list disk
DISKPART > select disk ${SD_CARD_DRIVE_NUMBER}
DISKPART > clean
라즈비안
운영체제인 Raspbian Stretch Lite 버전을 다운로드한다. 데비안 기반이다.
etcher
컴퓨터에 SD 카드용 이미지 굽는 프로그램을 설치한다.
다운로드된 라즈비안과 etcher로 이미지를 굽는다. 직관적이라 1, 2, 3 선택하듯이 설치하면 된다. 도중에 깨질 경우 다시 포 맷한다.
ssh 접근
이미지 설치 후 다시 USB 를 인식시키면 Boot drive 가 보이는데 접근 후 루트에 ssh 란 이름의 터치파일을 만들어준다.
touch ssh
이 파일이 있어야 ssh 접근이 가능하다. 공유기에 꼽고 내부아이피 확인하자.
## ssh 접근
$ ssh pi@YOUR_RASPBERRY_INTERAL_IP
## 초기 비밀번호는 raspberry 이다.
패키지 설치
부팅 후 apt-get
을 사용할 시간이다.
sudo apt-get upgrade -y && sudo apt-get update
vim
vim 도 없다.
sudo apt-get install vim
oh-my-zsh
sudo apt-get install zsh
chsh -s $(which zsh)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
agnoster theme, zsh-syntax-highlighting, zsh-autosuggestion 세팅해주자.
pi-hole
이제 파이홀을 설치할 수 있다.
라즈베리파이를 유선연결했으니 eth0 인터페이스만 잘 체크해주면, 나머진 기본옵션으로 다음 다음만 해주면 된다.
$ sudo curl -sSL https://install.pi-hole.net | bash
## 비밀번호 변경
$ sudo pihole -a -p
dns-encrypt
이왕 DSN 가로채는 거 암호화도 해주자. 매뉴얼 내용을 정리했다.
$ cd /opt
## 설치
$ sudo wget https://github.com/jedisct1/dnscrypt-proxy/releases/download/2.0.22/dnscrypt-proxy-linux_arm-2.0.22.tar.gz
## 폴더 생성
$ sudo tar -xf dnscrypt-proxy-linux_arm-2.0.22.tar.gz
$ sudo mv linux-arm dnscrypt-proxy && cd dnscrypt-proxy
## 기본 설정 복사
$ sudo cp example-dnscrypt-proxy.toml dnscrypt-proxy.toml
## 설정 변경
$ sudo vi dnscrypt-proxy.toml
## 이 세 옵션을 찾아서 변경해준다.
server_names = ['dnscrypt.nl-ns0']
## 기본 53번 포트는 pi-hole에서 쓰고 있다.
listen_address = ['127.0.0.1:54', '[::1]:54']
require_dnssec = true
## 서비스 등록
$ sudo ./dnscrypt-proxy -service install
## 시작
$ sudo ./dnscrypt-proxy -service start
dnscrypt.nl-ns0 Public DNSCrypt 서버이다. 다른 서버는 여기를 참조하자. 일본이나 싱가폴 쪽에 있으면 좋을텐데 아쉽다.
Upstream DNS 변경
관리자 화면의 Settings > DNS > Upstream DNS Servers 탭에서 '127.0.0.1:54', '[::1]:54'
를 넣어주고 저장한다.
Primary DNS Address 변경
공유기 설정에 들어가서 라즈베리파이 내부 아이피를 기본 DNS 주소로 설정한다. IPTIME 의 경우 고급 설정 > 네트워크 관리 > 인터넷 설정 정보 에 있다.
BlockLists
Settings > Blocklists 에서 추가하고 Save and Update 하면 차단할 주소가 추가된다. 아래는 참고할만한 링크다.
확인
Cloudflare Browsing Experience Security Check서 체크하자.
DNSSEC, TLS1.3에 초록불 들어오면 된다. 그리고 유튜브를 쾌적하게 즐기자.
여담
- Query Log 메뉴에서 어느 도메인을 확인하려는지 알 수 있다.
- Instagram 광고 차단 필터를 찾아봐야겠다.
- 정작 내 블로그엔 애드센스 달려있는데..
- 세팅비 2만원 받아도 되지않을까? 😄