pfSense: ルーターOSをバージョンアップしたら大トラブル

半年前に、自宅のルーターを Socket370 CPUベースの Vyatta から、Intel Compute Stick ベースの pfSense に交換しました。特に問題無く使っているのですが、半年間稼働させっぱなしにしている間に、OSアップデートが来ています。稼働しているものをわざわざ数時間ダウンさせてバージョンアップする必然性はないので、バージョンアップする予定はありませんでした。ところが、梅雨の終わりの豪雨と雷による停電で、自宅環境がダウンしてしまいました。

止まってしまったことは仕方がないので、日頃、サーバー、ルーターを止めたり、再起動させないとできないメンテナンス部分を作業することにし、その第一歩として pfSense OSを 2.4.5 から 2.5.2 に上げることにしました。

pfSense はFreeBSDベースではありますが、OSのバージョンアップがダッシュボードのパネルから出来ます。

pfsense ダッシュボードにバージョンアップが来ている雲のマークをクリックすれば、アップデート作業を開始することが出来ます。これがトラブルへの入り口だったとは、、、、

pfsense バージョンアップのターゲット選択開発中バージョンを選ぶわけにはいかないので、最新安定版を選択しました。

pfsense 最新版を選択するその後は、ファイルのダウンロードが始まり、アップデートされます。pfsense 最新モジュールがダウンロードされる画面15分くらいで更新作業が終了。pfsense バージョンアップ成功メッセージあとは再起動するだけのはずだったのですが、大ハマリ。

再起動したら、Halt と再起動を繰り返す羽目に。

pfsense 再起動したら勝手に Halt されるNo interfaces found!
pfSense cannot continue without at least one Network Interface Card.

ネットワークインタフェースが見つからないから、終わりにするぜ って感じで、OS起動を諦めてHaltしてしまいます。

NICが見つからないってどういう事?再起動前までは、ちゃんと動いていたじゃないか!

ルーターとして使っている STCK1A32W は有線LANインタフェースが無く、USB LAN+Hub と USB LANという2本のドングルを使ってルーターを構成しているのですが、OSがNIC情報を必要とする瞬間よりも、USB LANがOSによって認識されるタイミングが後に来てしまい、No Interfaces found となるみたいです。
USB LANはpfsense 2.4.5の system.logによると「pfSense kernel: ugen0.6: <Realtek USB 101001000 LAN>」と認識されています。
USB LANドングルを別のモデルに変えるとpfSenseが起動する場合があることが時間を掛けてわかりました。その場合、MACが変わってしまうのでインタフェースアサインし直し。しかも、毎回NICが認識されるとは限らない状態。ベースのFreeBSD OSが11.3から12.2 に変わったためのようですが、NIC認識タイミングが早すぎるというのはFreeBSD側の問題?それともpfSenseの調整不足によるもの?

pfsense 2.5.2

そこには目をつむるとして、次の問題が発生。
Snow Leopard Macから ssh で pfSense にログインできなくなりました。上記の問題で一時的にNICを交換しているしOSをバージョンアップしたので、ssh key が変化して一度キーを消去しないと拒否されているのだろうと思っていたのですが、いつもと様子が異なっていました。

「No matching mac found: client hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256 server hmac-sha1」

こんな感じのメッセージがログインを試みる度に表示されます。
Web検索してみると、ssh クライアント(つまり、Mac側のバージョン)が古いためのようでクライアント側でsshのオプションを付けても駄目っぽい。とりあえず、別のFreeBSD OSを経由してpfSenseへログインすれば大丈夫なので、pfSense へログインして状況を確認を行うことはできるのですが、pfSense 2.5.2 は Intel Compute Stick STCK1A32W 上では使えそうにない。
とりあえず、pfsense2.5.2が動いている状態で、別のSTCK1A32W を初期化して、pfSense 2.4.5 を入れ直すことにしました。OSを入れ終わったら、ハードを入れ替えます。

ところが、、、、バージョンダウン作業でも大トラブルが発生しました。

2.4.5 のメディアから、Stick PCへ pfSenseを入れたのはいいのですが、OS起動後にインストールするパッケージのバージョンは FreeBSD 2.5.2 用のものが入ってしまうようで、元の2.4.5上では動かないものが出て来ました。
原因はOS 2.4.5に含まれるライブラリが、2.5.2用にビルドされたパッケージに対応しておらず、ライブラリが見つからないエラーとなります。
つまり、元に戻せなかった。

試行錯誤しているうちに、豪雨・落雷で、なんと二度目の停電発生。
最近のOSはジャーナルファイルシステムを利用しているので、停電くらいで壊れることはないのですけど、SoC で構成されているSTCK1A32Wは、ブートブロックが吹っ飛んでしまいました。OSが見つからず、OSが起動できない!が〜〜ん。
pfSense 2.4.2 OS、もう一度、入れ直し〜。
不思議なことに、OSを入れ直したら、今度はオプションパッケージが動くようになっていました。
上記 pfSense 2.4.5 一回目の再インストールで自動インストールされたパッケージとは別の古いバージョンがダウンロードされていて、2.4.5に対応していました。停電してOSが吹っ飛んで良かったのかも。

pfSense がユーザーによる pkg コマンドでのメンテナンスに対応してくれていれば、2.5.2 でも何とか出来る可能性があるのですけど、USB NICの認識タイミングはユーザーレベルでは対処しようがなさそう。また sshd の動作モードから古いプロトコルが切り捨てられたことから、古いOS使いの私にはなんとも使えないルータアプライアンスとなってしまいそうな予感です。

現時点では、pfSense をバージョンアップする前の状態にほぼ戻せた感じで 2.4.5 が動いています。

OPNsense を試してみないといけないかな〜。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です