| tags:Archer C7 openwrt raspberry pi categories:computing

Archer OpenWRTにパイホール

Pihole

OpenWRTで運用中の TP-Linkの Archer に広告ブロッカーのAdblockをインストールしようと思ったけれど、 管理画面の見た目も良いし、交換前の無線ルーターで使っていたPiholeを継続使用することにする。 (ほぼデフォルトの状態だと、フィルタリング性能はadblockよりPiholeの方が良いように思える。)

USBイーサーネットドングルで接続していたパイをガジェットモード(USB接続)でOpwnWRTに接続する方法を使います。 USB経由になるので、速度が速いという利点がある、らしい。(未確認、Wifi経由でも大差ないかも。。) 無線LANの必要もないので省電力、かつ、今まで使っていただいてイーサーネットのドングルも不要になる。 ケーブル一本で見た目もスッキリ。良いことずくめ。

ついでに、 パイサーバーだけではちょっと持て余しているので、 Syncting(容量が少ないので、ちょっとだけよ同期サーバー) 簡易なウェブサーバーとか作っても大丈夫そう。。。

作業手順は以下。(パイとパイホールのインストール手順は省略)

  1. Pi: ガジェットモード設定
  2. OpenWRT: USB機器のカーネルモジュール追加
  3. Pi: ガジェットモードでのMACアドレスの固定化
  4. OpenWRT: Piへの固定IP割り当て
  5. Pi: Piholeの設定変更

1. Pi Zero: ガジェットモードの有効化

パイ・ゼロでガジェットモードの有効化作業を行います。 (既にガジェットモードでインストールした人はそのままで良い。)

編集するファイルが2つ。

  1. /boot/config.txt
  2. /boot/cmd.txt
$ vi /boot/config.txt

#最終行に追加
dtoverlay=dwc2

$ vi /boot/cmdline.txt

#行の末尾に追加
modules-load=dwc2,g_ether

で完了。

ちなみに パイゼロ・サーバー構築は こちら から。

2. OpenWRT: USBネット接続設定

OpenWRT login

OpenWRTはUSB接続できるように追加のカーネルモジュールをインストールします。 ルーターより付与されたIPを探して、SSHで接続します。

root@OpenWrt:~$ opkg update
root@OpenWrt:~$ opkg install kmod-usb-net kmod-usb-net-cdc-ether

OpenWRT Net

そして、ネットワークの設定をします。インターフェイスにusb0を追加。そして再起動。

root@OpenWrt:~$ uci set network.lan.ifname="`uci get network.lan.ifname` usb0"
root@OpenWrt:~$ uci commit network
root@OpenWrt:~$ reboot

ルーターが起動したら、USBポートにガジェットモードを有効化しているPi Zeroを刺します。勝手に起動します。

3. Pi Zero: ガジェットモードのIP固定

ガジェットモードで起動をすると、MACアドレスが毎回ランダムに生成されます。 こうなると、IP番号を割り当てることができないので不都合になります。

MACアドレスを固定化します。 まず、OpenWRTより接続されたパイのIP番号を調べてSSHでログインします。

以下の設定を追加して、MACアドレスを割り当てます。

2箇所設定します。適当な数値を入れてもダメです。

  1. /etc/modprobe.d/g_ether.conf
  2. /boot/cmdline.txt

起動メッセージよりMAC番号を抜き出し設定ファイルに書き出します。

pi@raspberry:~$ echo 'options g_ether host_addr='$(dmesg | awk '/: HOST MAC/{print $NF}')' dev_addr='$(dmesg | awk '/: MAC/{print $NF}') | sudo tee /etc/modprobe.d/g_ether.conf

上記のファイルからMACアドレスの番号を取り出し、 g_ether. を追加して、 /boot/cmdline.txt の最後に加えます。

pi@raspberry:~$ cat /etc/modprobe.d/g_ether.conf
pi@raspberry:~$ vi /boot/cmdline.txt

g_ether.host_addr=3A:A0:DF:20:00:B9 g_ether.dev_addr=3A:A0:DF:20:00:00

host_addrとdev_addrは違いますので注意。

どちらか一方の設定ファイルで動作するようですが、/boot/cmdline.txtの方が安定して動くそうです。 私は慎重派なので両方加えておきます。

これで、MACアドレスが固定されます。

4. OpenWRT: IPとDNSの設定

固定IPの割り当て

パイホールサーバーに固定IPを割り当てます。

  • Network > DHCP and DNS > Static Leases

DNS Setting

該当のMACアドレスを選択して、IPアドレスを割り当てます。

新しいIP番号に切り替わるには、既に割り当てられているIPのリースが切れるまでしばし待つ必要があります。

DNSの振り分け設定

そして、DNSの接続先を変更します。 Network > DHCP and DNS に DNS Forwardings というそれらしき項目があり動作はしますが、 パイホールでのクライアントが全てルーターになってしまいますので 以下の設定を行います。こちらですと接続ユーザーごとのデーターが見て取れます。

  • Network > Interfaces > LAN > DHCP Server > Advance Setting : DHCP-Options

DNS Setting

6,PiHoleIPAddress,RouterIPAddress

最初の6の意味がわかりませんが、 優先順位なので、パイホールが落ちているときはルーターのDNSを参照します。

※ IPv6を使っている人は別途いくつかのファイルを編集する必要があります。

5. Pi Zero: Pihole設定

最後に、OpenWRTより割り当てたIP番号に切り替えます。 自分のIPアドレスの変更のみでオッケ。

$ vi /etc/pihole/setupVars.conf

おまけ:パブリックフィルターDNS

さらに追加で、青少年に悪影響になるコンテンツをフィルターしてくれるパブリックのDNSサービスを利用します。

割と沢山ありますので、お好みのところを利用されてください。

パブリックフィルターDNS: https://en.wikipedia.org/wiki/Public_recursive_name_server

Cloudflareを使います。 DNSのIP番号を 1.1.1.1 -> 1.1.1.3、 1.0.0.1 -> 1.0.0.3 に変更することで、エロいものがフィルターされます。 (私はバイパスさせます。)

パイホールでは設定項目が既にありますが、 ちょっと元のファイルをいじります、 ファイルは最終行のCloudflare以下のIPを変更します。

$ vi /etc/pihole/dns-servers.conf

Cloudflare;1.1.1.3;1.0.0.3;2606:4700:4700::1113;2606:4700:4700::1003

でよろしく振り分けられます。

OpenWRTのWANにこのDNSを設定しても良いかも。。

参照:

See Also