blog

DNSおよびDHCPサーバーとしてのPi-holeの使用

OpenWrt を使用する過程で、OpenWrt の設定が頻繁に変更され、OpenWrt に問題が発生します。その中で、IP アドレスの静的割り当てが最も...

Sep 4, 2022 · 4 min. read


DNSおよびDHCPサーバーとしてのPi-holeの使用

OpenWrt を使用する過程で、OpenWrt の設定が頻繁に変更され、OpenWrt に問題が発生します。その中で、IP アドレスの静的割り当てが最も一般的です。

また、DNSによる広告ブロッキングを行う必要があるため、DNSサーバーとしてPi-holeを利用する必要があり、DNSルックアップを迅速に完了させるためには、Pi-holeのDNSの上流としてSmartdnsを利用する必要があり、DNSルックアップがSmartdnsで提供されます。

Docker macvlan ネットワークの構成

複数のサービスが同じサーバー上で提供されるため、Pi-hole と Smartdns の両方で DNS を提供するためにポート 53 が必要であり、ポート 53 はデフォルトで Ubuntu サーバーによって使用され、LAN 内のデバイスはポート 53 にアクセスする必要があります。 DHCP サービスなので、競合を避けるために、Docker ネットワークのドライバーとして macvlan を使用する必要があります。

macvlan は、複数の MAC アドレスを同じ物理ネットワーク カード上に構成できるようにするネットワーク カード仮想化テクノロジです。つまり、各インターフェイスが独自の IP を構成できます。

macvlan を通じて、各 Docker コンテナに特定の IP アドレスを提供し、コンテナの IP アドレスを通じて LAN 内の設定に直接アクセスできます。/p>

  • NIC 無差別モードを有効にする

デフォルトでは、NIC はローカル マシンに送信されたパケットのみを上位層サービスに配信し、他のすべてのパケットは破棄されます。 無作為検出モードを有効にすると、マシンのNICは、宛先アドレスが無作為であるかどうかに関係なく、通過するすべてのデータストリームを受信できるため、Dockerコンテナが他のデバイスからの要求を正常に受信するには、NIC無差別モードを有効にする必要があります。 eth0 は実際の NIC 名と同じでなければならないことに注意してください。

sudo ip link set eth0 promisc on
    
  • macvlanネットワークの作成

macvlan ネットワークを作成するときは、直接アクセスを容易にするために、LAN と一致するように IP 範囲とゲートウェイを指定します。

docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=eth0 mynet

SmartDNSのインストールと設定

Smartdns をコンテナとして実行し、構成で上流の DNS を指定します

  • smartdns.conf

よく使用する DNS サービス プロバイダーを上流 DNS として構成に追加しています。ping による応答遅延を確認し、タイムアウトした上流 DNS を削除できます。

IPV6 を有効にしないこと、または DNS ルックアップに IPV6 アドレスを使用しないことをお勧めします。有効にすると、ネットワークの速度が大幅に低下します。

# サーバーの名前
    sever-name mydns

    bind-tcp [::]:53
    bind [::]:53
    
    tcp-idle-time 10
    # ドメイン名の結果キャッシュの数
    cache-size 0
    prefetch-domain yes
    # 有効期限キャッシュサービス機能
    serve-expired yes
    # 期限切れのキャッシュ サービスの最大タイムアウト
    serve-expired-ttl 0
    
    # 速度テストモードの選択
    speed-check-mode tcp:80,tcp:443,ping
    # 最初のクエリ応答パターン
    response-mode first-ping
    
    # TTL 値
    rr-ttl-min 60
    rr-ttl-max 86400
    
    # IPV6 禁止
    force-AAAA-SOA yes
    # dualstack-ip-selection yes
    
    # アップストリーム UDP DNS
    server 8.8.8.8
    server 9.9.9.9 -blacklist-ip -check-edns
    
    # アップストリーム TCP DNS
    server-tcp 8.8.8.8
    server-tcp 9.9.9.9
    # アップストリーム TLS DNS
    server-tls 8.8.8.8
    server-tls 9.9.9.9
    # アップストリーム HTTPS DNS
    server-https https://cloudflare-dns.com/dns-query
    
  • Smardns コンテナーを起動する

コンテナを起動するときに、IP アドレスをローカル エリア ネットワーク内で競合しない固定 IP アドレスとして指定し、同時に構成ファイルをコンテナにマウントします。

docker run --restart always \
--name mydns \
-d --network mynet \
--ip 192.168.0.2 \
-v /workspace/mydns/:/mydns 

起動が完了したら、telnet を使用してポート 53 に到達できることを確認します。

telnet 192.168.0.2 53
    
    Trying ::1...
    Connected to 192.168.0.2.
    Escape character is '^]'.
    

Pi-holeのインストールと設定

  • Pi-hole容器を始動します

また、Pi-holeの起動時にIPアドレスを指定する必要があります。

docker run --restart always \
--name pihole \
-d --network mynet \
--ip 192.168.0.3 \
pihole/pihole

Pi-holeの管理インターフェースhttp://192.168.0.3/admin を起動した後、アクセスパスワードを入力する必要があります。

docker exec -it pihole bash
    

パスワード変更

sudo pihole -a -p
    
  • Smartdns をアップストリーム サーバーとして構成する

[設定]-[DNS]で、Smartdnsを最初のアップストリームサービスサービスとしてアップストリームDNSサービスを構成します。 同時に、他のDNSサービスを追加して、Smartdnsに問題があるときに他のDNSサーバーを使用してインターフェイス構成を変更することを回避し、すべてのクエリソースを許可できます

  • DHCPの設定

[設定]-[DNS]で、DHCPを有効にし、割り当てられたIP範囲、ルーターアドレス、ローカルドメイン名、およびDHCP有効期限を指定します

ルーター DHCP 設定および DNS サービス

ルーターの設定で、DHCP をオフにすることを選択し、ルーターを再起動すると、DNS を Pi ホール アドレスとして指定します。

  • DHCPをオフにする

[network-interface-LAN] で [Ignore this interface] を選択します。

  • DNSの設定

network-interface-LAN設定で、カスタムDNSサーバをPi-holeのアドレスにポイントします

Read next

Macを使うときに覚えておきたいキー記号

初めて Mac を使い始めたとき、いくつかのキーに対応する記号を覚えるのが難しく、たとえば、⌥ は Option キーを表しており、そのため、いくつかのショートカット キーの記号の組み合わせを見ても何を使えばよいのか分からないことがありました。今日は、記憶>を助けるために、これらのボタンとそのデザイン コンセプトを見てみましょう。

Sep 4, 2022 · 4 min read