大破ログ

日々大破、それと側転少々。PC関連その他、気になったことなどをつらつらと。

Fortinet FortiGate 30E

FortiGate 30E内部

FortiGate 50Eを見付けた後、ならば他のFortiGateにもMarvell SoCを搭載している機種が無いかと探して見つけ、悩んだ末に確保してサポートを行いマージされました。

まとめていきます。

仕様

既にサポート済のFortiGate 50Eと同様に、ほとんどの機種でFortiSOCまたはIntel CPUを搭載するFortiGateの中ではかなり珍しく、Marvellの汎用SoCである88F6820を搭載。 差別化の為か、SoCやRAM、ネットワーク周りでいくらか50Eから削られた仕様となっています。

  • SoC: Marvell Armada 385 88F6820
  • RAM: DDR3 1024MiB (MT41K256M8DA-125 x4)
  • Flash: SPI-NOR 128MiB (MX66L1G45GMI-10G)
  • WAN/LAN: 1000Mbps x1/1000Mbps x4
  • USB: USB 3.0 Type-A x1
  • UART: "CONSOLE", 所謂Ciscoケーブル互換

その他詳細については、雑記を参照。

OpenWrt化

ブートローダが主に復旧用としてファームウェア投入機能を持つ為、それを使用してinitramfsイメージを踏み台とする なお、 "FG-30E" と称する

  1. FG-30Eのブートメニューを表示させる

    電源を接続しブートする途中、 Please wait for OS to boot, or press any key to display configuration menu と表示されたタイミングで適当なキーを押下し、ブートメニューに入る

  2. コンソールポートのbaudrateを9600bpsに設定

    ブートメニュー上で [I]: System information. から [S]: Set serial port baudrate. を呼び出し、baudrateを9600に設定する

  3. TFTPサーバを用意

    ブートメニュー上で [R]: Review TFTP parameters. を呼び出してTFTP関連の情報を表示し、それに従ってTFTPサーバを用意する
    なお、PCはTFTP関連情報内で示されているポートに接続する
    また、OpenWrtのinitramfsイメージは image.out にリネームの上TFTPフォルダに配置する

  4. TFTPでinitramfsイメージをダウンロード

    ブートメニュー上で [T]: Initiate TFTP firmware transfer. を呼び出してTFTPを実行し、initramfsイメージをサーバからダウンロードする

  5. initramfsイメージを実行

    TFTPサーバからのダウンロードが完了後、 Save as Default firmware/Backup firmware/Run image without saving:[D/B/R]? と表示されたら R キーを押下し、Flashには書き込まずブートする

  6. メーカーファームウェアをバックアップ

    もし将来的にメーカーファームウェアに書き戻す可能性がある場合など、必要であればメーカーファームウェアをバックアップする
    dd を用い、 /proc/mtd を確認の上

    を最低限取り出し、scp等でPCに転送し保管する

    例)

     root@OpenWrt:/# mkdir /tmp/mtd
     root@OpenWrt:/# cd /tmp/mtd
     root@OpenWrt:/tmp/mtd# cat /proc/mtd
     dev:    size   erasesize  name
     mtd0: 001c0000 00010000 "u-boot"
     mtd1: 00010000 00010000 "firmware-info"
     mtd2: 00010000 00010000 "dtb"
     mtd3: 00010000 00010000 "u-boot-env"
     mtd4: 00010000 00010000 "board-info"
     mtd5: 00600000 00010000 "kernel"
     mtd6: 01800000 00010000 "rootfs"
     mtd7: 00600000 00010000 "kn2"
     mtd8: 01800000 00010000 "rfs2"
     mtd9: 01200000 00010000 "part1"
     mtd10: 01200000 00010000 "part2"
     mtd11: 01e00000 00010000 "config"
     root@OpenWrt:/tmp/mtd# dd if=/dev/mtdblock1 of=mtd1_firmware-info.bin
     128+0 records in
     128+0 records out
     root@OpenWrt:/tmp/mtd# dd if=/dev/mtdblock5 of=mtd5_kernel.bin
     12288+0 records in
     12288+0 records out
     root@OpenWrt:/tmp/mtd# dd if=/dev/mtdblock6 of=mtd6_rootfs.bin
     49152+0 records in
     49152+0 records out
    

    バックアップをデバイスに書き戻す際は、 mtd コマンドを用いて書き込む

     mtd write <backup image> <target partition>
    

    例)

     mtd write mtd1_firmware-info.bin firmware-info
     mtd verify mtd1_firmware-info.bin firmware-info    # 書き込まれたデータが元データと一致するか検証
    
  7. OpenWrt上でsysupgradeを実行

    scpなどを用いてsysupgradeイメージをデバイス上にアップロード(またはダウンロード)し、sysupgradeを実行する

  8. 完了

    Flashへの書き込みが完了後再起動され、OpenWrtで起動する
    この時メーカーファームウェアで起動してしまう場合は、ブートメニューに入った上で [B]: Boot with backup firmware and set as default. を呼び出し、デフォルトのOSイメージをOpenWrtを書き込んだ1番目の方に切り替える

備考

  • SoC自体はFortiGate 50Eと同じ88F6820ながら、動作クロックは50Eの1.60GHzに対して30Eでは1.33GHzに落とされている。

  • 今回のサポートにおいて、CONSOLEポートのbaudrateはFortiGateで広くデフォルトとして使用されている9600bpsを前提としている。
    その他の値に設定されていた場合、Linux Kernelのdmesgが出力されないなどのトラブルが起きる為注意する。

  • WAN1, WAN2ポートはデフォルトでブリッジを構成している為、上流が1系統である場合はどちらに接続しても問題無い。
    ただし、それぞれで別系統のWANを利用する場合、ブリッジを解除しそれぞれにOpenWrtの仮想インターフェースを割り当て直す。

  • OpenWrtのサポートにおいては、Flash内に2組存在するOSイメージ領域のうち1つ目の最小限を利用するよう構成しており、もう片方のメーカーファームウェアに対しての影響は恐らく無いと思われる。
    この為、ブートメニューにおいて [B]: Boot with backup firmware ~ を選択することで、必要に応じてOpenWrtとメーカーファームウェアを切り替えてブートできる。

  • 中古などで入手する場合、本機種のDCジャックは特殊であり通常の丸形プラグを持つACアダプタを使用できない為、基本的にはACアダプタが付属するものの選択を推奨。
    なお、嵌合するプラグはMolex 5557-02Rであり、自作することは可能()。

作業時の色々

  • 基本的には一部を除いてFortiGate 50Eと共通のハードウェアであり、それ故にDeviceTreeなどのコードを仕立てるのは比較的容易であった。
    しかしながら何故かLANからWANへのNATが不安定となる症状を長らく起こしており、SoCのEthernetとSwitch (88E6176) 間の接続に起因すると思われたものの、しばらく解決できずサポートの投げ込みを保留していた。
    最近になってLinux Kernelにおいていくつか88E6xxxのDSAサポートにおける修正が入っており、試したところほぼ解決していた為、サポートを投げ込んだ。

  • 前述の通りハードウェアはFortiGate 50Eと大半が共通であり、それ故に使用されている基板も50Eと同一であった。

色々

今回の機種もFortiGate 50Eと同様に、日本国内におけるOpenWrt目的としては貴重な有線機。
50Eには及ばないながらも大容量のRAMを搭載し、USB 3.0ポートも搭載することから様々な用途に活用できると思われる。

ただ、ヤフオク等で50Eが安価に数が出ている為、敢えて30Eを選ぶ意義は薄いところではある。