俺的実験室

インターネット技術を中心に、実際に手を動かして理解を深めるブログ。

Fortigate がバグった時にリストアする方法

はじめに

Fortigate 60D をヤフオクで落としました。2万円でした。21年の6月までライセンスあります。 調子にのっていじりまくってたらWEB UIが使えなくなったので、復旧させるのに試した方法を備忘として残しておきます。

事象

WEB UIが使えなくなりました。 正確には、ログイン画面までは表示されるのですが、ログイン情報入力後、画面遷移しても何も表示されず真っ白な画面となってしまいました。

経緯

Foatigate を調子にのって弄り倒していました。 「たかがバージョンアップ」、そう思った瞬間があったことは認めます。

Fortgateにはアップグレードパスが存在しますが、それを無視してバージョンアップを行った結果、お亡くなりになりました。

復旧方法

1. 機器再起動

まったく効果なし、でした。

2. サービス停止

Linuxサーバなどでもよくやる手法です。httpのサービスが裏で起動しているので、KILLしてあげます。 KILLすれば、その後勝手にサービスが上がってくるようです。

結果としては、効果なしでした。

3. もう一回更新してみる

果たしてこれが正しいコマンドなのかもよく分かりませんが、アップグレードをもう一度試してみました。

# execute update-now

何も応答はありませんでした。

4. バックアップイメージから復旧する

ググると、起動時に 出る Please wait for OS to boot, or press any key to display configuration menu.. というメッセージのあとに何かしらのキー入力をすると、起動メニューを出せることがわかりました。

[C]: Configure TFTP parameters.
[R]: Review TFTP parameters.
[T]: Initiate TFTP firmware transfer.
[F]: Format boot device.
[I]: System information.
[B]: Boot with backup firmware and set as default.
[Q]: Quit menu and continue to boot.
[H]: Display this list of options.

この中の [B]: Boot with backup firmware and set as default. が使えそうなので試してみます。 以下はメニュー選択後からの全ログです。

[2018-12-25 19:40:41.733] Loading backup firmware from boot device...
[2018-12-25 19:40:41.781] 
[2018-12-25 19:40:41.782] 
[2018-12-25 19:40:41.782] Booting OS...
[2018-12-25 19:40:41.810] Reading boot image... 1265944 bytes.
[2018-12-25 19:41:20.461] Initializing firewall...
[2018-12-25 19:41:41.923] 
[2018-12-25 19:41:41.923] System is starting...
[2018-12-25 19:41:42.730] Starting system maintenance...
[2018-12-25 19:41:42.779] Scanning /dev/sda2... (0%)   Scanning /dev/sda2... (3%)   Scanning /dev/sda2... (6%)   Scanning /dev/sda2... (11%)   Scanning /dev/sda2... (15%)   Scanning /dev/sda2... (100%)
[2018-12-25 19:41:53.942] The config file may contain errors, 
[2018-12-25 19:41:53.977] Please see details by the command 'diagnose debug config-error-log read'
[2018-12-25 19:42:00.234] Scanning /dev/sdb1... (0%)   Scanning /dev/sdb1... (1%)   Scanning /dev/sdb1... (2%)   Scanning /dev/sdb1... (3%)   Scanning /dev/sdb1... (4%)   Scanning /dev/sdb1... (5%)   Scanning /dev/sdb1... (6%)   Scanning /dev/sdb1... (7%)   Scanning /dev/sdb1... (8%)   Scanning /dev/sdb1... (9%)   Scanning /dev/sdb1... (10%)   Scanning /dev/sdb1... (11%)   Scanning /dev/sdb1... (12%)   Scanning /dev/sdb1... (13%)   Scanning /dev/sdb1... (14%)   Scanning /dev/sdb1... (15%)   Scanning /dev/sdb1... (16%)   Scanning /dev/sdb1... (17%)   Scanning /dev/sdb1... (18%)   Scanning /dev/sdb1... (19%)   Scanning /dev/sdb1... (22%)   Scanning /dev/sdb1... (57%)   Scanning /dev/sdb1... (4%)   Scanning /dev/sdb1... (18%)   Scanning /dev/sdb1... (30%)   Scanning /dev/sdb1... (43%)   Scanning /dev/sdb1... (63%)   Scanning /dev/sdb1... (88%)   Scanning /dev/sdb1... (100%)   Scanning /dev/sdb1... (100%)
[2018-12-25 19:42:17.204] 
[2018-12-25 19:42:17.204] 
[2018-12-25 19:42:17.204] FGT60Dxxxxxxxxxx login: scanunit 77 Failed to load anti-virus database.
[2018-12-25 19:42:17.556] scanunit 77 Trying to load basic anti-virus database (ATDB).
[2018-12-25 19:42:20.161] scanunit 77 Success loading basic anti-virus database (ATDB).
[2018-12-25 19:44:52.975] 
[2018-12-25 19:44:52.975] 
[2018-12-25 19:44:52.975] FGT60Dxxxxxxxxxx login: admin
[2018-12-25 19:44:55.622] Password: 
[2018-12-25 19:44:59.545] Login incorrect
[2018-12-25 19:44:59.560] 
[2018-12-25 19:44:59.560] 
[2018-12-25 19:44:59.560] FGT60Dxxxxxxxxxx login: admin
[2018-12-25 19:45:10.174] Password: ****    ************
[2018-12-25 19:45:16.739] Welcome !
[2018-12-25 19:45:16.754] 
[2018-12-25 19:45:16.754] FGT60Dxxxxxxxxxx # execute ping 192.168.1.2
[2018-12-25 19:48:11.545] PING 192.168.1.2 (192.168.1.2): 56 data bytes
[2018-12-25 19:48:11.592] 64 bytes from 192.168.1.2: icmp_seq=0 ttl=128 time=0.6 ms
[2018-12-25 19:48:12.538] 64 bytes from 192.168.1.2: icmp_seq=1 ttl=128 time=0.7 ms
[2018-12-25 19:48:13.313] 
[2018-12-25 19:48:13.313] --- 192.168.1.2 ping statistics ---
[2018-12-25 19:48:13.344] 2 packets transmitted, 2 packets received, 0% packet loss
[2018-12-25 19:48:13.407] round-trip min/avg/max = 0.6/0.6/0.7 ms
[2018-12-25 19:48:13.454] 

この方法で、無事に復旧できました。
ちなみに、工場出荷時のファームに戻るのではなく、1世代前のファームに戻ったようです。

おわりに

いやー、ヒヤッとしました。 でも、本番環境ではなく、遊び感覚で触れる環境があるのは本当にすばらしいですね!