子どもたちへのネット環境提供時の課題として広告ブロックやフィルタリングについて悩んでいました。長女が小学生になり、タブレット端末を持ち帰ってきたことからちょっと真剣に考え出しました。ルーターにOpenWrtをインストールしてDNSサーバーでブロックという方法があることを知り、挑戦。その広告ブロックも様々な選択肢があり迷いましたが、unboundを利用する方法にしました。おおまかな流れとしては、
- ルーターの購入(今回は中古で1000円のルーターを購入しました)
- OpenWrtのインストール ← 今回の記事。これが結構大変でした。
- unboundのインストール及びOpenWrtの設定
OpenWrtとは
組込デバイスを対象とする Linux で、ルーターなどにのせられます。また、オープンソースなので誰でも利用できます。インストールガイドやユーザガイドもあるので、参考にしました。ただし、メーカー保証はされないので自己責任でお願いします。ネット上ではインストールに際し、様々な情報があり、バージョンや機種によって、できる出来ないもあるようです。私も一度失敗しましたが何とかリカバリできたので記録に残しておきます。
インストール対象となるルーターがHardwareの一覧に記載されています。ここで対応可能なバージョンを調べます。
OpenWrtは色々なことができるようで夢が広がりますが、ただし、設定にはそれなりの知識が必要になってくるので、大変です。一つミスればルーターに接続もできなくなり、初期化せざるを得ないようなことにもなりかねません。
準備するアプリケーション
OpenWrtをインストールする際にインストールしたアプリケーションです。すべてが必須という訳ではなく、Windowsの標準機能で代用できるものもありますが、利便性のためにいれたものもあります。
- TFTPD64
WSR-1166DHS2の場合は、TFTPサーバー(IPアドレスも指定)を起動しておくと、ルーターの立ち上げ時に自動で、ルーターに組み込まれているTFTPクライアントから、TFTPサーバーに指定ファイル(このルーターの場合は「linux.trx-recovery」)転送の要求があり、サーバーから転送されます。 - Tera Term
SSHでルーターに接続する際に使用します。WindowsのPowershellなどでも代用可能。 - WinSCP
SSHで接続できるようになった後に、ファイル転送などに用いります。上と同じく、Powershellなどでも代用可能。 - WireShark
トラブルシューティングでパケットを確認するために入れました。トラブルなければ必要ありません。
TFTPサーバーの準備
ルーターなどのソフトウェアをアップロードする時などによく使用されるTFTPサーバーを準備します。最初にルーターにOpenWrtのカーネルやアップグレードを転送するために、TFTPサーバーが必要になります。
私はTFTPD64を使いました。
事前に実行するPCのIPアドレスを手動で以下に変更しておきます。
※設定⇒ネットワークとインターネット⇒イーサネット⇒IP割当て⇒手動
IPアドレス | 192.168.11.2 |
サブネットマスク | 255.255.255.0 |
デフォルトゲートウェイ | 192.168.11.1 |
DNSサーバー | 192.168.11.1 |
インストールして、exeファイルを管理者として実行します。(インストールする場所の問題か、管理者で実行しないと設定変更が保存できませんでした。)
以下を設定をします。exeファイルを起動すると、画面が立ち上がるだけなので動作しているのかわかりにくいですが、サーバーが実行されています。設定後はexeファイルを再度、起動します。
- GLOBALタブでTFTPサーバーのチェック
- TFTPタブで転送するファイルを置くディレクトリ(Base Directory)の指定
- TFTPタブで、TFTPを使用するインターフェースを選択
OpenWrtファームウェアのダウンロード
私は、最終的には公式からダウンロードしたイメージを使用しました。(様々な情報がありますが、公式HPの情報(英語)をできるだけ参考にした方が良いと思います。)
[OpenWrt Wiki] Buffalo WSR-1166DHPにアクセスし、インストール用ファイルと、アップグレード用ファイルの2つをダウンロードします。
- openwrt-22.03.2-ramips-mt7621-buffalo_wsr-1166dhp-initramfs-kernel.bin
- openwrt-22.03.2-ramips-mt7621-buffalo_wsr-1166dhp-squashfs-sysupgrade.bin
※私がインストールした時(2022/12/28)は、22.03.2が最新でしたが、本記事執筆時には22.03.3に上がっていました。
ダウンロードした「~省略~_wsr-1166dhp-initramfs-kernel.bin」(注意:kernelの方です)のファイル名を「linux.trx-recovery」に変更します。そのファイルをTFTPサーバーで指定したBaseDirectoryに入れます。
インストール手順
ルーターへのOpenWrtファームウェアインストール
ルーターとPCをLANケーブルで接続します。LANポートはどこでも構いません。ルーター背面のスイッチが「ROUTER」「AUTO」になっていることを確かめてください。
「AOSSボタン」を押ながら電源を入れ、5~10秒くらい「AOSSボタン」を押し続けます。
そうすると転送が始まり、TFTPサーバーのログに転送が完了したとメッセージが出ます。これでルータへのファームウェアインストールは完了です。
※実際にはルーターへ転送され、binファイルが実行されているのだと思います。その後、ルーター側のIPアドレスが変更され(192.168.1.1)、クライアントに対し、IPアドレスの払い出しをするようになります。
その後、PC側のネットワーク設定を変更します。
(イーサネットのIPアドレスを自動取得するように変更します。)
※設定⇒ネットワークとインターネット⇒イーサネット⇒IP割当て⇒自動(DHCP)
接続確認
ローカルのPCより、ルーターへTera TermでSSH接続します。(先ほどのファームウェアのインストールでルーターのIPアドレスが変わっています。)
rootユーザ(パスフレーズなし)でアクセスします。
アップグレード
ローカルのPCより、「openwrt-22.03.2-ramips-mt7621-buffalo_wsr-1166dhp-squashfs-sysupgrade.bin」をWinSCPで転送します。
以下のようにWinSCPを設定して、接続します。
ファイルをルーター側へ転送します。
Tera TermでSSH接続し、ファイルが転送されていることを確認します。
以下コマンドにて、インストールします。
# sysupgrade -n openwrt-22.03.2-ramips-mt7621-buffalo_wsr-1166dhp-squashfs-sysupgrade.bin
ちょっと待つと処理がおわります。これでインストールは完了です。接続するとアップグレードできたことが確認できます。(時間はおかしいですが、後で変更します。)
ブラウザで、192.168.1.1にアクセスすると、LUCIの画面が表示されます
以上でインストールできました。
色々触って、設定が何がなんだか分からなくなったときのため、ここでひとまずバックアップは取っておきましょう。
バックアップは、System -> Backup / Flash Firmwareへ移動し、BackupのGenerate Archiveを押すだけで簡単に取れます。
OpenWRTの設定は次回に続きます。
参考にしたサイト
WSR-1166DHP2にOpenWrtを入れる方法: okoyaの私的メモ (seesaa.net)