오늘은... 아니고 저번 달에 광고 차단 DNS 서버를 구축하였습니다!
사실 만들고 나서 글 써야 했지만... 바쁘던 관계로 어쩔 수 없이 저는 오늘 1달 사용 후기까지 함께 작성해서 올리도록 하겠습니다!
우선 광고차단 DNS의 원리를 알아볼까요?
광고를 불러오는 도메인의 IP 요청을 거부하는 방법을 사용합니다!
또한 광고뿐만 아니라 다른 개인정보 수집 사이트를 막음으로써 개인정보 또한 안전해집니다!
물론 성인사이트도 차단 할 수 있습니다!
Pi-hole Docker compose 설치 방법
version: "3"
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
# For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp" # Only required if you are using Pi-hole as your DHCP server
- "8001:80/tcp"
environment:
TZ: 'Asia/Seoul'
# WEBPASSWORD: 'set a secure password here or it will be random'
# Volumes store your data between container upgrades
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
# https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
cap_add:
- NET_ADMIN # Required if you are using Pi-hole as your DHCP server, else not needed
restart: always
저는 Portainer를 사용해서 Stack으로 사용하였습니다.
하지만 이 코드를 바로 적용을 하려면 오류가 하나 나올 텐데요!
failed to deploy a stack: Network pihole_default Creating Network pihole_default Created Container pihole Creating Container pihole Created Container pihole Starting Error response from daemon: driver failed programming external connectivity on endpoint pihole (b7a36056802a8174eb8d2a6d34c1ca2d555e8166dd01b1eb90da1f8a4af1cd63): Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use
아마 이런 오류가 나올 거예요.
이 오류의 해결방법은 pi-hole 공식 홈페이지에 나오는데 제가 인용해서 해결방법을 작성해 드릴게요!(https://discourse.pi-hole.net/t/setup-on-pi-in-docker-bind-error/19137)
감사하다! 16.04에서 18.04.4 LTS로 방금 업데이트했고 이것에 부딪쳤습니다. Ubuntu 17.04+를 실행 중인 사람이 있는 경우:
$ sudo nano /etc/systemd/resolved.conf#DNSStubListener=yes로 변경합니다 DNSStubListener=no(해당 줄의 주석 처리를 제거해야 함).
$ sudo service systemd-resolved restart
편집: 너무 빨리 말했습니다. 이렇게 하면 컨테이너가 부팅될 수 있지만 호스트의 DNS가 손상됩니다.
EDIT 2: 좋아, 여기에 ME를 위해 작동하는 단계가 있습니다. 다른 요구 사항이 있을 수 있습니다.
$ sudo nano /etc/systemd/resolved.conf (위 내용에 따라 변경)
$ sudo service systemd-resolved restart
$ sudo systemctl disable systemd-resolved.service
$ sudo systemctl stop systemd-resolved
$ sudo rm /etc/resolv.conf
$ sudo shutdown now -r
나는 이것에 대해 많이 생각하지 않았습니다. 실제로 처음 두 단계는 건너뛸 수 있지만(확인할 좋은 방법이 없음) 위의 단계를 따르면 (1) 컨테이너가 부팅되고 (2) 호스트가 도메인 이름을 확인할 수 있습니다.
라고 합니다. 이 내용을 따라 하면 잘 될 거예요!
관리 사이트는 서버 IP(저는 10.122.132.5) + 8001(제가 compose에 설정한 외부포트)로 접속하면 되는데요!
- "8001:80/tcp"
이 코드에서 8001이라고 적혀있는 걸 원하는 대로 바꾸기만 하면 됩니다!
접속이 안된다면 포트가 열려있는지 확인하는 사이트에서 확인하면 됩니다!
제가 사용하는 건 추후 포스팅 올려보도록 하겠습니다!
https://www.yougetsignal.com/tools/open-ports/
컴퓨터 DNS 세팅까지 완료하셨으면 다음 사이트 2곳에서 잘 되는지 확인해 주세요!
https://test.adminforge.de/adblock.htmlhttps://d3 ward.github.io/toolz/adblock.html
https://d3 ward.github.io/toolz/adblock.html
+ 추가 팁
기본적으로 어느 정도 광고는 차단되는데 완벽하게 차단하고 싶다면 PI-hole 관리페이지에 들어가셔서
`adlist` 에 들어간 후 add a new adlist에서
https://raw.githubusercontent.com/apwlq/pi-hole-hosts/main/hosts
를 추가해 주시면 됩니다!
이걸 추가만 하면 적용이 안되는데
다음과 같은 순서로 4번을 눌러 업데이트를 해주셔야 정상작동이 됩니다!
다만 이걸 선택하시면 구글 사이트에 있는 검색 광고 클릭 시 작동이 안 된다는ㅋㅋㅋ