2023년 6월 11일 일요일

osmc 에 pihole(광고차단) 설치하기

요즘 웹사이트의 광고 내용이 너무 심하다는 생각이 들어 광고 차단 프로그램을 설치했다.


환경

공유기: ipTIME A8004ITL

라즈베리파이 4: OSMC 2023.06-1

광고 차단 프로그램: Pi-Hole 


OSMC 설치

Disney Plus + OSMC + 라즈베리파이 4 에서 OSMC 설치부분만 따라한다. 이미지는 항상 최신.


도커 설치

찾아보니 pihole 의 도커 이미지가 있길래 도커 이미지를 사용한다.
도커가 아니고 직접 설치하려면 참고의 사이트를 보고 한다.

도커는 패키지로 설치한다. (같은 페이지에 다른 방법도 있으니 참고한다.)
https://docs.docker.com/engine/install/debian/#install-from-a-package

각 패키지 별로 최신 버전을 다운 받아 설치한다.

$ wget https://download.docker.com/linux/debian/dists/bullseye/pool/stable/armhf/containerd.io_1.6.21-1_armhf.deb
$ wget https://download.docker.com/linux/debian/dists/bullseye/pool/stable/armhf/docker-ce_24.0.2-1~debian.11~bullseye_armhf.deb
$ wget https://download.docker.com/linux/debian/dists/bullseye/pool/stable/armhf/docker-ce-cli_24.0.2-1~debian.11~bullseye_armhf.deb
$ wget https://download.docker.com/linux/debian/dists/bullseye/pool/stable/armhf/docker-compose-plugin_2.18.1-1~debian.11~bullseye_armhf.deb
$ sudo dpkg -i *.deb
$ sudo usermod -aG docker $USER
# 재로그인


Pi-hole 설치

설치는 https://hub.docker.com/r/pihole/pihole 를 따라 docker-compose.yml 파일만 생성하면 된다.

필요 없어 보이는 부분은 삭제하고 포트 등은 수정했다. 윈래 내용은 위 페이지를 참고한다.

$ mkdir ~/pihole
$ cd ~/pihole
$ cat << EOF > docker-compose.yml
version: "3"
services:
  pihole:
    container_name: pihole
    image: pihole/pihole
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "8080:80/tcp"
    environment:
      TZ: "Asia/Seoul"
# WEBPASSWORD: 'set a secure password here or it will be random' volumes: - "./etc/pihole:/etc/pihole"
- "./etc/dnsmasq.d:/etc/dnsmasq.d"
restart: unless-stopped EOF $ docker compose up -d


문제 해결 1.

53 번 포트가 이미 사용 중이라고 나온다.
확인해보니 connman 서비스가 사용 중이다.

$ sudo netstat -ntpl | grep 53

connman 은 네트워크 연결을 관리해주는 서비스라 없애긴 그렇고 dns 프록시 기능만 끄도록 한다.

$ sudo sed -i 's/dnsproxy=yes/dnsproxy=no/' /etc/connman.prefs
$ sudo systemctl restart connman
$ docker restart pihole


일단 Pi-Hole 의 dns 동작확인
OSMC 를 대상으로 다음과 같이 표시되면 문제 없다. ({} 부분은 각자에 맞게 치환)

$ nslookup www.google.com {OSMC IP 주소}
Server:		{OSMC IP 주소}
Address:	{OSMC IP 주소}#53

Non-authoritative answer:
Name:	www.google.com
Address: 172.217.161.228
Name:	www.google.com
Address: 2404:6800:400a:80b::2004

Pi-Hole 웹 로그인

http://{OSMC IP 주소}:8080/admin

암호 확인

$ docker compose logs pihole | grep
# 암호를 잊어버렸을 때는 docker-compose.yml 에 WEBPASSWORD 를 설정
# 또는 새로 생성
$ docker compose exec pihole pihole -a -p


여기부턴 잘못 설정하면 집안 전체의 인터넷이 안될 수도 있다.
바꾸기 전의 값을 잘 기록해 뒀다가 문제가 생기면 되돌리던가,
강제 리셋 시키는 방법을 알아 두는게 좋다.


Pi-Hole 설정

기본적으로는 아무 것도 안해도 동작한다.

DNS 서버가 기본으로 google 로 되어 있는데 이걸 KT 로 바꿔 줬다.
http://{OSMC IP 주소}:8080/admin/settings.php?tab=dns

Google 쪽 체크는 없애고 커스텀 쪽에 값을 추가했다. KT 의 주소는 공유기에서 복사.

Custom 1 (IPv4)    Custom 1 (IPv4)
[v]                [v]
[168.126.63.1]     [168.126.63.2]


공유기의 DNS 설정 변경

공유기 관리 페이지 > 고급 설정 > 네트워크 관리 > 인터넷 설정 정보 > 다음 설정 > 설정 버튼 클릭
[v] DNS 주소 수동 입력 에 체크

기본 DNS 주소	[].[].[].[]  <= {OSMC IP 주소}
보조 DNS 주소	[].[].[].[]  <= 비워둔다


참고로 OSMC 는 서버로 동작하기 때문에 늘 IP 가 같아야 한다.
고정 IP 로 설정하거나 공유기의 DHCP 서버 설정에서 수동 주소를 설정한다.


블랙리스트 추가

https://yorublog.tistory.com/16 에서 Tip 광고가 나오나요? 부분을 따라 추가한다.

광고를 오른 클릭 > 링크 주소 복사 > https://이 사이 부분만 복사/...

http://{OSMC IP 주소}:8080/admin/groups-domains.php 에서 다음 부분에 복사해 넣고 Add to Blacklist 버튼 추가

Domain:
[aaa.bbb.ccc.com]


문제 해결 2.

이게 문제인지는 잘 모르겠다. 블랙리스트를 추가해도 광고가 떴다.
어디선가 설정하고 몇 분 있어야 동작한다고 했던 것 같긴한데 다음 동작을 했다.

http://192.168.192.123:8081/admin/gravity.php 에서 Update 클릭

시간이 지나서 된 건지 블록리스트를 업데이트해서 된 건지는 확실치 않다. 

PS. 몇 개 더 해보니 시간이 걸리는게 맞는 것 같다.


보조 DNS 설정 추가

OSMC 는 항상 켜두기는 하는데 혹시 동작이 안되 집안의 인터넷이 안되는
사태가 발생하면 안될 것 같아 보조 DNS 는 원래 값으로 설정해 뒀다.

공유기 관리 페이지 > 고급 설정 > 네트워크 관리 > 인터넷 설정 정보 > 다음 설정 > 설정 버튼 클릭
[v] DNS 주소 수동 입력 에 체크

기본 DNS 주소	[].[].[].[]           <= {OSMC IP 주소}
보조 DNS 주소	[168].[126].[63].[1]  <= 기존의 기본 DNS 주소


참고

  • https://yorublog.tistory.com/16
  • https://github.com/pi-hole/pi-hole/#one-step-automated-install
  • https://docs.docker.com/engine/install/debian/#install-from-a-package
  • https://www.techkhoji.com/pi-hole-blocking-not-working-fix/