Chặn quảng cáo với Pi-hole

Một trong những cách hiệu quả nhất để chặn quảng cáo là không cho phân giải tên miền của nó. Có nhiều cách để làm việc này. Ta có thể thay cấu hình DNS trên máy bằng cách trỏ tới DNS của AdGuard. Tuy nhiên, cách này hơi phiền vì phải làm cho tất cả thiết bị. Hơn nữa, nó cũng không có nhiều tính năng để vọc vạch. Sau một hồi nghiên cứu thì tôi tìm ra Pi-hole, một ứng dụng chuyên chặn quảng cáo bằng DNS. Bài này sẽ hướng dẫn cách chạy con Pi-hole nhanh chóng và đơn giản nhất.

Một lưu ý nhỏ trước khi bắt đầu. Port 53 mặc định trên Ubuntu đã bị chiếm dụng nên tôi phải giải phóng nó bằng đoạn script dưới đây. Đối với distro khác thì không cần bước này.

sudo lsof -i -P -n | grep LISTEN
sudo sed -r -i.orig 's/#?DNSStubListener=yes/DNSStubListener=no/g' /etc/systemd/resolved.conf
sudo sh -c 'rm /etc/resolv.conf && ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf'
sudo systemctl restart systemd-resolved
sudo lsof -i -P -n | grep LISTEN

Dưới đây là file Docker Compose tôi dùng để dựng nhanh con Pi-hole.

version: "3.9"

services:
  pihole:
    container_name: pihole
    image: pihole/pihole
    ports:
      - "53:53/udp"
      - "53:53/tcp"
      - "80:80/tcp"
      # - "67:67/udp" # DHCP
    environment:
      - TZ=Asia/Ho_Chi_Minh
      - WEBPASSWORD=password
      - PIHOLE_DNS_=1.1.1.1
      - DNSMASQ_LISTENING=all
    volumes:
      - ./pihole/pihole:/etc/pihole
      - ./pihole/dnsmasq.d:/etc/dnsmasq.d
    # Recommended but not required (DHCP needs NET_ADMIN)
    # https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
    cap_add:
      - NET_ADMIN
    restart: unless-stopped

Tiếp theo, tôi vào trang cấu hình của Pi-hole, thêm vào danh sách tên miền quảng cáo muốn chặn. Ngoài ra tôi cũng có thể làm nhiều việc khác ở trang admin này: coi thống kê có bao nhiêu tên miền bị chặn hoặc whitelist, blacklist tên miền do tôi chỉ định.

Cuối cùng, tôi vào trang cấu hình của router và chỉnh DNS IP cho DHCP thành IP server đang chạy Pi-hole. Từ giờ, mọi request DNS đều đi qua Pi-hole và những tên miền quảng cáo sẽ bị chặn lại. Cái hay của phương pháp này là nó áp dụng cho tất cả thiết bị trong mạng LAN.