UGREEN NASync DXP480T Plus 構築ログ:macvlanを使ってPi-holeを構築し、広告をブロックする

はじめに

自宅の広告ブロック環境(Pi-hole)をDockerで構築しました。

ネットワーク構成のポイント

UGREEN NASでPi-holeをDockerで動かす際、ポート53の衝突を避けるために macvlan を使用しました。 UGREEN NASではポート53が最初から使用済みです。

  • Pi-hole IP: 192.168.1.200 (macvlan)
  • NAS本体 IP: 192.168.1.151 (物理NIC)
  • 注意点: macvlanの仕様上、ホスト(NAS)とコンテナ(Pi-hole)間の直接通信はできません。これが後のDNS設定で重要な意味を持ちます。

Pi-holeの構築手順

Docker Composeで構築します。 ※あらかじめdnsmasq.dとpiholeディレクトリを作成しておくこと。 volume1は各自の環境で読み替えてください。 – /volume1/docker/pihole/dnsmasq.d:/etc/dnsmasq.d – /volume1/docker/pihole/pihole:/etc/pihole

docker-compose.yml

version: "3"

services:
  pihole:
    image: pihole/pihole:latest
    container_name: pihole-macvlan
    cap_add:
      - CAP_NET_RAW
      - CAP_NET_BIND_SERVICE
      - CAP_CHOWN
    environment:
      - TZ=Asia/Tokyo
      - FTLCONF_webserver_api_password=yourpassword # ログインパスワードを設定
      - DNSMASQ_LISTENING=all
      - FTLCONF_webserver_port=8000
      - DNSMASQ_USER=pihole
      - FTLCONF_LOCAL_IPV4=192.168.1.200 # Pi-holeに割り当てるIP
    volumes:
      - /volume1/docker/pihole/dnsmasq.d:/etc/dnsmasq.d
      - /volume1/docker/pihole/pihole:/etc/pihole
    networks:
      pihole_net:
        ipv4_address: 192.168.1.200 # 上記と同じIPを指定
    restart: always

networks:
  pihole_net:
    driver: macvlan
    driver_opts:
      parent: eth0 # コントロールパネルのネットワーク設定で、実際にLANケーブルが刺さっているポート名を確認してください
    ipam:
      config:
        - subnet: 192.168.1.0/24 # 自宅のネットワーク範囲
          gateway: 192.168.1.1   # ルーターのIP
          ip_range: 192.168.1.200/32 # Pi-hole専用に確保するIP

広告ブロックリスト追加

pihole(http://192.168.1.200:8000/) にログインし、Listsより、Add blocklistで追加していく。 追加後、ToolsにあるUpdate GravityでUpdateボタンをクリックしてデータベースを更新する。

【断念したこと】外出先からのDNS利用

当初はTailscaleの「Override local DNS」を使い、外出先のスマホからも自宅Pi-hole経由で広告ブロックを試みましたが、最終的にこの構成は断念しました。

発生した事象

Tailscale管理画面でPi-holeのIP(192.168.1.200)をGlobal Nameserverに登録し、Override設定を有効にしたところ、外部ネットワーク(4G/5G)から名前解決ができず、インターネット接続が不能になりました。

技術的な考察とハマりポイント

解決のために以下の確認も行いましたが、安定稼働には至りませんでした。 Pi-holeのインターフェース設定: Settings > DNS > Interface settings を Permit all origins に変更。Tailscale(100.x.y.z)からのクエリを許可するようにしましたが、macvlanとの相性か、パケットが正しくルーティングされませんでした。

タイトルとURLをコピーしました