authsec.pihole

ピホール (Pi-hole)

ピホールのロール。このロールは、Pi-hole®: インターネット広告のブラックホールをあなたのためにインストールします。

また、お気に入りのエディタで編集できるシンプルなCSVファイルを使って、Pi-Holeの管理を手伝います。

要件

Ubuntu/Debian/Photon OSを実行しているホスト、またはRaspberry Pi OS (Lite)を実行しているラズベリーパイが必要です。

問題が発生した場合は、Pi-holeのドキュメントを参照すると役立つかもしれません。

ホストCSVファイル

Pi-holeの設定はCSVファイルを通じて行われます。これにより、環境を簡単に管理でき、良い概要が得られます。

このロールには、確認のための完全な例のCSVファイルが files フォルダーに含まれています。

次の行には、DNSサーバーとしてのIPアドレスをタグ付けし、実際のラズベリーパイで実行されているDNSサーバーの設定を示すdhcp-option設定が表示されます。

DHCPオプションの設定

hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
,,,,,"tag:vm-dns,option:dns-server,192.168.30.253","<<tag>>","使用するDNSサーバーを指定するdhcp-option設定の値を設定"
,,,,,"tag:pi-dns,option:dns-server,192.168.30.254","<<tag>>","使用するDNSサーバーを指定するdhcp-option設定の値を設定"

注意: 複数のDNSサーバーを設定している場合、特定の設定のないクライアントにデフォルトのDNSサーバーを設定するために、riv_pihole_dns_default_tagオプションを設定することをお勧めします。

IP/ホストのマッピング設定

以下の設定では、slashという名前のホストがまだ空いている場合、192.168.128.2のIPアドレスを受け取るように設定されています。別のマシンに既にDHCPリースが割り当てられている場合、新しいIPアドレスが割り当てられます。このマシンは物理ホストとして識別されます。

hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
slash,example.net,192.168.128.2,true,,,"<<physical>>","ESXi Host"

静的IPアドレスの設定

特定のホスト名にのみIPアドレスが割り当てられるようにするには、staticフィールドをtrueに設定します。このオプションを設定すると、dnsmasqは次の例に示されるように、vmholeという名前のホストからのDHCPリクエストを無視するよう指示します。タイプも仮想マシンとして識別されます。

hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
vmhole,example.net,192.168.128.253,true,,,"<<virtual>>","Pi-hole仮想マシンDNSサーバー"

MACアドレス/IPアドレスのマッピング設定

デバイスのMACアドレスを使用して特定のIPアドレスとホスト名を特別なデバイスに割り当てるには、CSV設定データベースに次のエントリを使用します。

hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
blib,example.net,192.168.128.18,,00:0c:29:43:37:dc,,"<<virtual>>","Pi-hole仮想マシンDNSサーバー"

異なるDNSサーバーの設定

特定のデバイス用に特別なDNSサーバーを設定するには、マッピングを定義する際に適切なDHCPオプションを提供します。以下の例では、フォトンホスト用にvm-dns DNSサーバーを設定する方法を示しています。

hostname,domainname,ip_address,static,mac_address,dhcp_option,type,comment
photon,example.net,192.168.128.19,,00:0c:29:51:80:1f,"vm-dns","Dockerイメージに基づくプロキシサーバーVM、vm-dnsサーバーを使用"

ロール変数

このロールでは、以下の変数を使用します:

変数名 デフォルト 説明
riv_pihole_admin_password_generated {{ lookup('password', '/dev/null length=15 chars=ascii_letters') }} この変数はウェブユーザーインターフェースのパスワードを設定します。パスワードが設定されていない場合、自動生成されます。変数riv_pihole_show_summarytrueに設定されている場合、最後のステップでパスワードの値が平文で表示されます。
riv_pihole_dns_default_tag この変数は、設定CSVファイルにリストされていないホストのデフォルトDNSサーバーを指定するDHCPタグを設定します。
riv_pihole_show_summary false trueに設定すると、最後のステップで(生成された)パスワードとともに、Pi-holeがインストールされたホストのIPアドレスや名前など、いくつかの役立つ情報が平文で表示されます。
riv_pihole_docker_network host Dockerが接続するネットワーク。DHCPを使用する場合、ホストネットワークに接続する必要があります。
riv_pihole_docker_purge_networks yes Dockerコンテナがシャットダウンされたときに作成されたネットワークを削除します。
riv_pihole_dhcp_active false 内蔵DHCPサーバーを有効または無効にします。Pi-holeをDHCPサーバーとして使用したい場合は、このオプションをオンにする必要があります。
riv_pihole_dhcp_leasetime 24h クライアントIPアドレスを割り当てる際のデフォルトリース期間
riv_pihole_dhcp_start 192.168.1.2 内蔵DHCPサーバーの開始レンジ。
riv_pihole_dhcp_end 192.168.1.253 内蔵DHCPサーバーの最後のアドレス。
riv_pihole_dhcp_router 192.168.1.1 IPアドレスを取得するクライアントに広告するルーター。
riv_pihole_domain example.net あなたのローカルネットワークのドメイン。
riv_pihole_interface eth0 Pi-hole内で処理されるインターフェース。
riv_pihole_dhcp_ipv6 false DHCPでのIPv6サポートを有効にします。
riv_pihole_dhcp_rapid_commit false ラピッドコミットオプションの制御スイッチ。
riv_pihole_dnsmasq_listening all dnsmasqがリッスンするインターフェース。
riv_pihole_query_logging true DNSクエリをログに記録します。
riv_pihole_install_web_server true 組み込みのWebサーバーをインストールします。
riv_pihole_install_web_interface true Webインターフェースをインストールします。
riv_pihole_lighttpd_enabled lighttpdを有効にします。
riv_pihole_ipv4_address {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] | default(ansible_host) }} Pi-HoleがリッスンするIPv4アドレス。
riv_pihole_ipv6_address Pi-HoleがリッスンするIPv6アドレス。
riv_pihole_dns_bogus_priv 偽のプライベートリバースルックアップを制御します。
riv_pihole_dns_fqdn_required 無効の名前がDNSに登録されるかどうかを制御します。
riv_pihole_dnssec DNSSECを制御します。
riv_pihole_rev_server_enabled デバイス名解決のためのDNS条件転送を有効にします。
riv_pihole_rev_server_cidr 条件転送が有効な場合、リバースDNSゾーンを設定します(例: 192.168.0.0/24)。
riv_pihole_rev_server_domain 条件転送が有効な場合、ローカルネットワークルーターのドメインを設定します(例: example.net)。
riv_pihole_rev_server_target 条件転送が有効な場合、ローカルネットワークルーターのIPを設定します。
riv_pihole_docker_image pihole/pihole:latest プルするDockerイメージを指定します。例えば、バージョンを指定することができます。
riv_pihole_configuration_base_folder /opt/pihole ターゲットホスト上に設定を保存する場所を指定します。
riv_pihole_etc_pihole_folder {{ riv_pihole_configuration_base_folder }}/pihole piholeフォルダの位置を制御します。
riv_pihole_etc_dnsmasq_folder {{ riv_pihole_configuration_base_folder }}/dnsmasq.d dnsmasq.dフォルダの位置を制御します。
riv_pihole_sys_dns_server1 127.0.0.1 Pi-hole用のシステムDNSサーバー。最初の1つは必ず127.0.0.1である必要があります。
riv_pihole_sys_dns_server2 8.8.8.8 Pi-hole用のシステムDNSサーバー。
riv_pihole_dns_server1 1.1.1.1 Dockerコンテナ内で使用されるDNSサーバー。
riv_pihole_dns_server2 8.8.8.8 Dockerコンテナ内で使用されるDNSサーバー。
riv_pihole_serverip {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] | default(ansible_host) }} Pi-holeホストのIPアドレス。
riv_pihole_timezone Europe/Berlin あなたのタイムゾーン。
riv_pihole_open_firewall_ports true 必要なファイアウォールポートを開かない場合はfalseに設定します。
riv_pihole_dns_db_configuration_file {{ role_path }}/files/mappings.csv DNS構成ファイルの場所。デフォルトで指し示されているファイルが適切にコピーされ、適応される必要があります。

例プレイブック

以下の例は、Photon OSベースの仮想マシンにピホールを設定するために使用できるプレイブックを示しています。インベントリファイルに反映されています。

フォルダ構造

フォルダ構造は以下の通りです(rolesフォルダは自動的に後で作成されます):

|-- dns-db.csv
|-- inventory
|-- pihole-vm.yml
`-- roles
    `-- authsec.pihole
        |-- defaults
        |   `-- main.yml
        |-- files
        |   `-- mappings.csv
        |-- LICENSE
        |-- meta
        |   `-- main.yml
        |-- README.md
        |-- tasks
        |   |-- checkssh-photonos.yml
        |   |-- checkssh.yml
        |   |-- firewall-iptables.yml
        |   |-- install-apt.yml
        |   |-- install-photonos.yml
        |   `-- main.yml
        `-- templates
            |-- 02-pihole-dhcp.conf.j2
            |-- 10-pihole-custom-static.conf.j2
            `-- setupVars.conf.j2

ロールのインポート

以下のコマンドを使って、このロールをプロジェクトにインポートできます:

#> ansible-galaxy install -p roles authsec.pihole

データベースの作成

これは、roles/authsec.pihole/filesにある例のデータベースのコピーです。

dns-db.csv:

hostname,domainname,ip_address,static,mac_address,dhcp_option,comment
,,,,,"tag:vm-dns,option:dns-server,192.168.128.253","dhcp-option設定の値を設定"
,,,,,"tag:pi-dns,option:dns-server,192.168.128.254","dhcp-option設定の値を設定"
slash,example.net,192.168.128.2,,,,"ESXi Host"
mohh,example.net,192.168.128.5,,,,"The Brain (vCenter Server)"
blib,example.net,192.168.128.18,,00:0c:29:43:37:dc,"pi-dns","Raspberry PiベースのDNS(およびDHCP)サーバーを使用するVM"
photon,example.net,192.168.128.19,,00:0c:29:51:80:1f,"vm-dns","VMベースのDNSサーバーを使用するVM"
vmhole,example.net,192.168.128.253,true,,,"Pi-hole仮想マシンDNSサーバー"
pihole,example.net,192.168.128.254,,,,"このネットワークのためのRaspberry Piが支えるPi-Hole DNSおよびDHCPサーバー、dockerベースおよびansible管理"

inventory:

[dns_vms]
vmhole.example.net ansible_host=192.168.128.253 ansible_user=pihole ansible_become_method='su' ansible_become_password='kevin.is.dead' ansible_python_interpreter=/usr/bin/python3

pihole-vm.yml:

---
# Dockerコンテナ内でpi-holeを実行するためのマシンを設定する
- hosts: dns_vms
  gather_facts: yes
  become: yes
  tasks: 
    - include_role: 
        name: authsec.pihole
      vars:
        # true|false
        riv_pihole_admin_password: "secure.me"
        riv_pihole_dhcp_active: "false"
        riv_pihole_dhcp_start: "192.168.128.8"
        riv_pihole_dhcp_end: "192.168.128.252"
        riv_pihole_dhcp_router: "192.168.128.1"
        riv_pihole_domain: "example.net"
        riv_pihole_show_summary: true
        riv_pihole_dns_db_configuration_file: "dns-db.csv"

Ansibleを実行

すべてが設定されたら、インベントリで設定したシステムにpi-holeを設定するために、以下のコマンドを実行できます。

#> ansible-playbook -i inventory pihole-vm.yml

ライセンス

MIT

プロジェクトについて

Install, run and configure Pi-Hole using docker and a CSV file where you can map your hosts to IP addresses.

インストール
ansible-galaxy install authsec.pihole
ライセンス
mit
ダウンロード
131
所有者