Bufallo WZR-HP-AG300HでDD-WRTからOpenWrtのインストール

技術

詳細は後述するが、ルーターでVPNを構築する必要があり、境内の通りDD-WRTがインストール済みのWZR-HP-AG300HにOpenWrtをインストールする必要があった。
しかしながら人よりは詳しいものの、プログラミングをしたりコマンドを打つほどには詳しくないにわかの私にはちょっと敷居が高く、試行錯誤しながらの導入となったので同じようなスキルの人に役立つのではないかと失敗事例も含め記録を残しておく。

事の発端であり目的はVPNの構築である。
海外でradikoを聞く方法は以前のエントリーで書いた通りだが、現在自宅にあるAlexaのスキルを利用して手軽にradikoを聞きたい。しかしその為にはAlexaのIPを日本のものにする必要があり、常設VPNを通じてネットに接続させる必要がある。通常の方法で繋げると言わずもがな、地域外と認定されradikoを聞くことはできない。

私が利用しているVPNサービスではルーターにVPN機能を付加することができ、端末毎にVPNのアプリを入れたり設定を施さずとも、VPN機能を付加したルーターに繋げば即VPN環境を得られるという設定を提供している。しかし、そのサービスは手持ちのDD-WRTでは中国国内では機能せず、OpenWrtで設定する必要がある。今回その為にDD-WRTをOpenWrtに書き換える事になった次第である。

この手持ちのDD-WRT、ITに詳しい方より譲り受けたもので、元々BuffaloのWZR-HP-AG300Hであったもののファームを書き換えたものである。私の手元に来た際には既にDD-WRTになっていた。
調べるとこのWZR-HP-AG300H、中々人気の機種の様でカスタムファームを言えるには打ってつけの端末の様。それ故情報もいくつか散見された。しかし厄介だったのは純正ファームからOpenWrtを入れるのではなく、既にDD-WRT化されたルーターにOpenWrtを入れるというレアなプロセスを踏む事になるため、グッと情報が減る。今回はここにフォーカスした内容となる。

前置きが長くなったが、既にDD-WRTがインストール済みのWZR-HP-AG300HにOpenWrtを入れるのは下記サイトにドンピシャで書いてあり、これがすんなりできる人はあまり問題ではない。
DD-WRTからOpenWrtのインストール(WZR-HP-AG300H)
ここを掘り下げて書きたいと思う。

telnetやSSHはよく分からない。出来ればWebUIでインストールしたい。そう思って色々方々を巡ったが、結論としては上記しか方法が無かったが、紆余曲折は次の通り。

OpenWrtの公式サイトには純正ファームからの適用方法、TFTPを利用した方法、DD-WRTのUIを利用した方法が書かれている。
OpenWrt Project: Buffalo WZR-HP-AG300H
OpenWrt Project: Buffalo WZR-HP-AG300H(日本語)

純正ファームの状態であれば下記サイトに書かれている様に管理画面からアップデートの容量でファームの書き換えが可能との報告が上がっている。
[ 総額2100円 ] LEDE( OpenWrt )をWZR-HP-AG300Hへインストールする
しかし私のWZR-HP-AG300Hは既に純正ファームではないので却下。

telnetやSSHにビビっている私にとってTFTP等と言う手法は更に分からず、記載されているコマンドも意味が分からない。知識が無くともせめて何をしているコマンドか分かった上で打ちたいが全然イメージできない。却下。

DD-WRTのWebUIを利用する方法こそが求めていた方法であり、下記注記があるのが気になるが、ダメ元で試みることにした。(結果出来ません)

訳注) 本手法は日本で発売されているモデルでは使用できませんでしたので、ご注意ください。

OpenWrt Project: Buffalo WZR-HP-AG300H(DD-WRT-WEBインタフェースを使用してインストールする)

結果的に出来ない方法なので読み飛ばしてもらって構わないが、上記によれば米国モデルであればできるそうなので、WZR-HP-AG300Hのリージョンを下記サイトを参考にUSに書き換えてみる。
バッファロー無線LANルーターWZR-HP-AG300HのOpenWrt化 | あくまで暫定措置としてのブログ

ubootenv set region US
ubootenv set accept_open_rt_fmt 1
ubootenv set tftp_wait 4
reboot

リージョンがJPからUSに書き換わったのを確認し、DD-WRTの管理画面からOpenWrtのファームのインストールを試みる。なお、使用したのは新規インストールという事で”factory”の方を選ぶ。
http://downloads.openwrt.org/releases/19.07.2/targets/ath79/generic/openwrt-19.07.2-ath79-generic-buffalo_wzr-hp-ag300h-squashfs-factory.bin

するとUpgrade successfulとのコメントが出るので、成功か!?と思うのだが、トップページに行くと相変わらずDD-WRTの画面であり、単に設定がリセットされただけであった。

Upgrade successfulのコメントにぬか喜び

どうやらDD-WRTとOpenWrtは全くの別物ではないことからアップグレードに相当するようで、使用するファームを”factory”から”sysupgrade”に変更して再度インストールを試みる。
http://downloads.openwrt.org/releases/19.07.2/targets/ath79/generic/openwrt-19.07.2-ath79-generic-buffalo_wzr-hp-ag300h-squashfs-sysupgrade.bin

適用するファームを変更してリトライ

“sysupgrade”を利用しファームの書き換えを行う。先ほどと同様にUpgrade successfulのコメントが出るのだが、トップページに行くと状況は変わらず。DD-WRTトップページ画面のままである。右上のバージョンも何も変わっていない。
変な事をして文鎮化しなかったのは幸いだが、文鎮化もしない代わりに何もされてないという状況である。このような結果を受け、WebUIを利用してのインストールを断念することとなる。

上述の通りTFTPはさっぱり分からないので、同様によく分からないながら聞いたことがあるtelnet、SSHを用いた方法を模索することとする。手持ちのDD-WRTではSSHの設定がグレーアウトしており有効化できなかったことから、telnet一択となる。

やることは先述のココに書かれている事だけなのだが、私にとっては一行、一句毎に意味を理解するのが困難である。

telnetまたはSSHを有効にする
telnet/SSHでログイン
フラッシュのイメージを保存するために/tmpに移動

DD-WRTからOpenWrtのインストール(WZR-HP-AG300H)

まずDD-WRTでtelnetを有効にし、信号を受け取れるようにする。
次に信号を送る側だが、調べるとWindowsには標準で機能が備わっているもののデフォルトでは無効化されており有効化する必要がある。この方法については下記サイトを参考にさせていただいた。
Windows環境でtelnetクライアントを使用する方法 – Born Digital サポート

次にログイン。サラッと書いてあるがどうやってログインするか分からない。
ブラウザ経由でのログインしかやったことが無い。
この点については下記サイトが参考になった。
スクリーンショットも多く、実行する前にどのような操作、画面が展開されるのか事前にイメージを掴むことが出来た。
DD-WRT に関する高度なヒントと手法を活用し、Linux の強力さを無線 LAN ルーターに追加する

telnetを有効にしたのち、コマンドプロンプトを起動してtelnetでDD-WRTのIPを入力。
この際私はWZR-HP-AG300HとPCをLANケーブルで繋ぎ、PCで通常使用しているWi-Fiは切っておいた。WZR-HP-AG300HのWANには何もつながず、WZR-HP-AG300HとPCが独立された状態を確保した。
私の場合は192.168.11.1であったので、下記のように打った。

telnet 192.168.11.1

するとlogin名とpasswordが要求される。
上記サイトの通りlogin名は必ず”root”であり、passwordは入力しても表示されないので怯んではいけない。Linuxでは通常かもしれないがWindowsに慣れた人にとってはちょっと不安になるポイントである。

CUIだけどビジュアルに拘ったログイン画面

telnetでログインに成功した。
続きは上記スクリーンショットにある通りなのだが、スムーズには行かない。
手順書によれば次はディレクトリの移動。

cd /tmp

これはWindowsのコマンドプロンプトと同様なので分かる。
次いでフラッシュのイメージをダウンロードである。

ここで一つ問題がある。
先述の通り、現在PCとWZR-HP-AG300Hは独立した状態(スタンドアロン)である。ネットに繋がっていないのでファームをダウンロード出来ない。
Wi-Fiでの接続は見えない事もあり不安なので、有線で上位のルーターとWZR-HP-AG300Hを繋ぐ。
ルーター — WZR-HP-AG300H — PC
という直列の構成にし、PCからネットが見えることを確認したのち、wgetコマンドを打った。
最新のファームをダウンロードする必要があるため、URLはOpenWrtのサイトに載っている
http://downloads.openwrt.org/releases/19.07.2/targets/ath79/generic/openwrt-19.07.2-ath79-generic-buffalo_wzr-hp-ag300h-squashfs-sysupgrade.bin
に差し替えて打つ。

wget http://downloads.openwrt.org/releases/19.07.2/targets/ath79/generic/openwrt-19.07.2-ath79-generic-buffalo_wzr-hp-ag300h-squashfs-sysupgrade.bin

しかし上手く行かない。

該当ファイルが無いと言われる

上記メッセージの通り、ファイルが無いと言う様な内容である。
しかしブラウザではファイルのダウンロードが出来るので無い訳ではなくアクセス出来ないという事らしい。メッセージの後半を見るとアドレスがhttpsになっており、自動的に転送がされてエラーとなっているようだ。

という事で初めから転送先であるhttpsにURLを変更してやってみる。

wget https://downloads.openwrt.org/releases/19.07.2/targets/ath79/generic/openwrt-19.07.2-ath79-generic-buffalo_wzr-hp-ag300h-squashfs-sysupgrade.bin

最初に張ったtelnetのスクリーンショットではその様になっているのはその為である。
しかし結果としてこちらもNG。
エラーメッセージを参考に事例が無いか調べると、どうやらwgetはhttpsに対応していないらしい。

何かしらの正攻法はあるのだろうが、ここで私が取った策は自分のサイトにファイルを仮置きするという方法。
現時点でこの思慮gはhttps化をしていない。ブログを置いているサーバーにファームを仮置きし、wgetで取りに行くという作戦である。

結果は上手く行った。
上述のコマンドの内、ファイルの保存先を仮置きしたアドレスに変更し実行するとエラーが出ずにダウンロードが出来た。
最後はインストールするのみ。
インストール完了後にOpenWrtがどのように挙動するか分からないのでこのタイミングでWZR-HP-AG300HのWAN側は抜き、再びPCとのスタンドアロン状態にする。

説明サイトを参考にダウンロードしたファイル名に合わせてコマンドを修正し、インストールを実行する。

mtd -r write openwrt-19.07.2-ath79-generic-buffalo_wzr-hp-ag300h-squashfs-sysupgrade.bin linux
正しく入力すれば書き換えは粛々と進む

書き換えが完了し、「ホストとの接続が切断されました。」とのメッセージが表示される。
その際、WZR-HP-AG300Hは再起動時の赤ランプが点滅を続ける。
点滅を続ける赤ランプに不安を覚えるが数分後消える。

赤ランプが消え、起動が安定したと思われるタイミングで192.168.1.1にアクセス。

確かにOpenWrtがインストールになったことが分かる

OpenWrtの画面が表示され成功したことが分かる。嬉しい瞬間である。

以上のように試行錯誤して何とかDD-WRTからOpenWrtへの切替をする事に成功した。
気軽にファイルをアップできる場所がなかったり、自分で管理しているサイトもhttps化されていた場合は私の手段は参考にはならないが、DD-WRTからOpenWrtに切り替える際にWebUIでは出来ない事、TFTPは必須ではないという事は伝えられたと思う。

ルーターのファーム書き換えはそれなりに詳しい人でないとやらないことであろうし、それなりに詳しい人はLinuxに詳しかったりコマンド入力もいとわないと思う。
その狭間にいる私のような中途半端な知識を持った人向けというニッチな対象ではあるがこの記録が役に立てば幸いである。

コメント

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