Summary ¶
X(Twitter) で面白そうな Blog が流れてきたのと、 OpenWRT は前から試して見たかったが手頃なハードウェアがなかった。
今回 EoL で大量に出回っている FortiGate 50E で稼働できると記事だったため勢いで購入した
11:46 に見つけて調達完了が 00:18 である(頭おかしい)
結果的に GitHub Actions で OpenWrt のカスタムイメージをビルドして使えるようにした。
(バイナリーの再配布はリスクがありそうなのでしないっぴ
初期化 ¶
FortiGate 50E がどういう状態で使われていたかわからないため初期を実施する初期化コマンドは下記
1
2
3
| FGT # execute factoryreset
This operation will reset the system to factory default!
Do you want to continue? (y/n)y
|
Topic
もし、デフォルトのパスワードでログインできない場合
1. maintainerアカウントでログイン ¶
以下のように、 config system global
配下の admin-maintainer
設定が enable
の場合は、 maintainer
アカウントでログインすることで、管理者アカウントを変更することができます。
※設定が disable
の場合は、この方法は利用できません。
※FortiOSのバージョンが 7.2.4 以降の場合は、この方法は利用できません。
1
2
3
| FGT60EXXXXXXXXXX # config system global
FGT60EXXXXXXXXXX (global) # set admin-maintainer enable
FGT60EXXXXXXXXXX (global) # end
|
admin-maintainer
設定が enable
の場合は、以下手順でパスワードを初期化します。
FortiGateにコンソール接続する
FortiGateの電源を落とす
FortiGateを起動する
電源ボタンがある機器の場合は、電源のOff/Onで電源断/起動を行います。
電源ボタンが無い機器の場合は、電源ケーブルの抜き差しで電源断/起動を行います。
※電源断は機器に予期せぬ問題が発生する可能性があります。予めご理解の上作業を実施下さい。
※機器の起動は、電源断の後10秒程度経過後に実施下さい。
起動後、14秒以内に、以下アカウントでログインします。
ユーザ名
: maintainerパスワード
: bcpb + 機器のシリアル番号
※シリアル番号のアルファベットは大文字で入力します。
※シリアル番号は、機器の底面,背面,側面の何れかに記載があります。
1
2
3
4
| FGT60EXXXXXXXXXX login: maintainer
Password: bcpbFGT60EXXXXXXXXXX <- 実施のコンソール上では、パスワードはアスタリスクで表示されます。
Welcome !
FGT60EXXXXXXXXXX #
|
- ログイン後、管理者アカウントのパスワードを変更します。
以下例では、admin ユーザのパスワードを変更しています。end まで入力すると、パスワードが更新され、ログインプロンプトに戻ります。
1
2
3
4
| FGT60EXXXXXXXXXX # config system admin
FGT60EXXXXXXXXXX (admin) # edit admin
FGT60EXXXXXXXXXX (admin) # set password <パスワードを入力>
FGT60EXXXXXXXXXX (admin) # end
|
― ログインパスワードを忘れ、機器にログインできません
カスタムイメージの作成 ¶
導入していたら、 L3 Master Device (l3mdev) が Kernel Module として build されてないのと、パッケージも見当たらないためやりたくなかったがカスタムビルドを試してみる 用意したのは Ubuntu 22.04 を用意。
公式の手順で進めていく。
1
2
3
4
| sudo apt update
sudo apt install build-essential clang flex bison g++ gawk \
gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev \
python3-distutils rsync unzip zlib1g-dev file wget
|
一般ユーザーで実施してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| mkdir -p builds
# Download and update the sources
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
git pull
# Select a specific code revision
git branch -a
git tag
git checkout v23.05.2
# Update the feeds
./scripts/feeds update -a
./scripts/feeds install -a
|
設定を詰める前に公式 build config をダウンロードする
1
| wget https://downloads.openwrt.org/releases/23.05.2/targets/mvebu/cortexa9/config.buildinfo -O .config
|
その後下記コマンドで設定を変更した
1
2
| # Configure the firmware image
make menuconfig
|
TUI の選択は下記
基本的に <*>
でないと squashfs に組み込まれないため <M>
にならないようにすること
tailscale
は使えるが一旦抜くこにした(容量が大きい!!)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
| Target System (Marvell EBU Armada) --->
Subtarget (Marvell Armada 37x/38x/XP) --->
Target Profile (Fortinet FortiGate 50E) --->
Target Images --->
[ ] ramdisk ----
*** Root filesystem archives ***
[ ] cpio.gz (NEW)
[ ] tar.gz
*** Root filesystem images ***
[ ] ext4 (NEW) ----
[*] squashfs (NEW) --->
*** Image Options ***
(16) Kernel partition size (in MiB) (NEW)
(104) Root filesystem partition size (in MiB) (NEW)
[ ] Make /var persistent (NEW)
Global build settings
[*] Include build configuration in firmware
Kernel build options --->
[*] L3 Master device support
[*] Advanced configuration options (for developers) --->
[*] Use ccache
(.ccache) Set ccache directory
[*] Build the OpenWrt Image Builder
[ ] Build the OpenWrt SDK
[ ] Build the LLVM-BPF toolchain tarball
[ ] Package the OpenWrt-based Toolchain
[*] Image configuration --->
[*] Version configuration options --->
(naa0yama) Manufacturer name
(https://github.com/naa0yama) Manufacturer URL
Base system --->
<M> dnsmasq-dhcpv6................. DNS and DHCP server (with DHCPv6 support)
Administration --->
<*> htop........................................ Interactive processes viewer
[*] Compile Htop with lm-sensors support
Kernel modules --->
Network Support --->
<*> kmod-tcp-bbr.................................. BBR TCP congestion control
<*> kmod-veth................................... Virtual ethernet pair device
<*> kmod-vrf........................... Virtual Routing and Forwarding (Lite)
{*} kmod-vxlan................................... Native VXLAN Kernel support
-*- kmod-wireguard........................... WireGuard secure network tunnel
LuCI --->
2. Modules --->
Translations --->
<*> Japanese (ja)
3. Applications --->
<*> luci-app-https-dns-proxy..................... DNS Over HTTPS Proxy Web UI
5. Protocols --->
<*> luci-proto-vxlan
<*> luci-proto-wireguard........................... Support for WireGuard VPN
Network --->
Routing and Redirection --->
<*> frr........................... The FRRouting (FRR) Software Routing Suite --->
-*- frr-libfrr................................................. zebra library
<*> frr-bfdd............................................. bfdd routing engine
<*> frr-bgpd............................................. bgpd routing engine
<*> frr-pythontools....................................... Python reload tool
<*> frr-staticd....................................... staticd routing engine
<*> frr-vrrpd........................................... vrrpd routing engine
<*> frr-vtysh...................... integrated shell for frr routing software
<*> frr-watchfrr................................................ frr watchdog
<*> frr-zebra................................................... Zebra daemon
<*> ip-full................................... Routing control utility (full)
Time Synchronization --->
<*> chrony-nts.................. A versatile NTP client and server (with NTS)
-*- https-dns-proxy..................................... DNS Over HTTPS Proxy
VPN --->
<*> wireguard-tools................. WireGuard userspace control program (wg)
Utilities
<*> dmesg............................ print or control the kernel ring buffer
<*> prometheus-node-exporter-lua.................... Prometheus node exporter
<*> prometheus-node-exporter-lua-nat_traffic
<*> prometheus-node-exporter-lua-netstat
<*> prometheus-node-exporter-lua-openwrt
<*> prometheus-node-exporter-lua-textfile
<*> prometheus-node-exporter-lua-uci_dhcp_host
|
差分を確認しておく
1
2
| # Write the changes to diffconfig
./scripts/diffconfig.sh > diffconfig
|
diffconfig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
| CONFIG_TARGET_mvebu=y
CONFIG_TARGET_mvebu_cortexa9=y
CONFIG_TARGET_mvebu_cortexa9_DEVICE_fortinet_fg-50e=y
CONFIG_ALL_KMODS=y
CONFIG_ALL_NONSHARED=y
CONFIG_DEVEL=y
CONFIG_AUTOREMOVE=y
CONFIG_BPF_TOOLCHAIN_BUILD_LLVM=y
# CONFIG_BPF_TOOLCHAIN_NONE is not set
CONFIG_BUILDBOT=y
CONFIG_COLLECT_KERNEL_DEBUG=y
CONFIG_FRR_INTERNAL=y
CONFIG_FRR_NO_SNMP=y
CONFIG_GNUTLS_ALPN=y
CONFIG_GNUTLS_ANON=y
CONFIG_GNUTLS_DTLS_SRTP=y
CONFIG_GNUTLS_HEARTBEAT=y
CONFIG_GNUTLS_OCSP=y
CONFIG_GNUTLS_PSK=y
CONFIG_HAS_BPF_TOOLCHAIN=y
CONFIG_HTOP_LMSENSORS=y
CONFIG_IB=y
CONFIG_IMAGEOPT=y
CONFIG_JSON_CYCLONEDX_SBOM=y
CONFIG_KERNEL_BUILD_DOMAIN="buildhost"
CONFIG_KERNEL_BUILD_USER="builder"
# CONFIG_KERNEL_KALLSYMS is not set
CONFIG_KERNEL_NET_L3_MASTER_DEV=y
CONFIG_LIBCURL_COOKIES=y
CONFIG_LIBCURL_FILE=y
CONFIG_LIBCURL_FTP=y
CONFIG_LIBCURL_HTTP=y
CONFIG_LIBCURL_MBEDTLS=y
CONFIG_LIBCURL_NGHTTP2=y
CONFIG_LIBCURL_NO_SMB="!"
CONFIG_LIBCURL_PROXY=y
CONFIG_LIBCURL_UNIX_SOCKETS=y
CONFIG_LUCI_LANG_ja=y
CONFIG_PACKAGE_cgi-io=y
CONFIG_PACKAGE_chrony-nts=y
CONFIG_PACKAGE_dmesg=y
CONFIG_PACKAGE_dnsmasq-dhcpv6=m
CONFIG_PACKAGE_frr=y
CONFIG_PACKAGE_frr-bfdd=y
CONFIG_PACKAGE_frr-bgpd=y
CONFIG_PACKAGE_frr-libfrr=y
CONFIG_PACKAGE_frr-pythontools=y
CONFIG_PACKAGE_frr-staticd=y
CONFIG_PACKAGE_frr-vrrpd=y
CONFIG_PACKAGE_frr-vtysh=y
CONFIG_PACKAGE_frr-watchfrr=y
CONFIG_PACKAGE_frr-zebra=y
CONFIG_PACKAGE_htop=y
CONFIG_PACKAGE_https-dns-proxy=y
CONFIG_PACKAGE_ip-full=y
CONFIG_PACKAGE_kmod-crypto-kpp=y
CONFIG_PACKAGE_kmod-crypto-lib-chacha20=y
CONFIG_PACKAGE_kmod-crypto-lib-chacha20poly1305=y
CONFIG_PACKAGE_kmod-crypto-lib-curve25519=y
CONFIG_PACKAGE_kmod-crypto-lib-poly1305=y
CONFIG_PACKAGE_kmod-iptunnel=y
CONFIG_PACKAGE_kmod-tcp-bbr=y
CONFIG_PACKAGE_kmod-udptunnel4=y
CONFIG_PACKAGE_kmod-udptunnel6=y
CONFIG_PACKAGE_kmod-veth=y
CONFIG_PACKAGE_kmod-vrf=y
CONFIG_PACKAGE_kmod-vxlan=y
CONFIG_PACKAGE_kmod-wireguard=y
CONFIG_PACKAGE_libatomic=y
CONFIG_PACKAGE_libbpf=y
CONFIG_PACKAGE_libbz2=y
CONFIG_PACKAGE_libcap=y
CONFIG_PACKAGE_libcares=y
CONFIG_PACKAGE_libcurl=y
CONFIG_PACKAGE_libelf=y
CONFIG_PACKAGE_libev=y
CONFIG_PACKAGE_libgmp=y
CONFIG_PACKAGE_libgnutls=y
CONFIG_PACKAGE_libiwinfo=y
CONFIG_PACKAGE_libiwinfo-data=y
CONFIG_PACKAGE_liblua=y
CONFIG_PACKAGE_liblucihttp=y
CONFIG_PACKAGE_liblucihttp-ucode=y
CONFIG_PACKAGE_libncurses=y
CONFIG_PACKAGE_libnettle=y
CONFIG_PACKAGE_libnghttp2=y
CONFIG_PACKAGE_libpcap=m
CONFIG_PACKAGE_libpcre2=y
CONFIG_PACKAGE_libpython3=y
CONFIG_PACKAGE_libreadline=y
CONFIG_PACKAGE_librt=y
CONFIG_PACKAGE_libubus-lua=y
CONFIG_PACKAGE_libuci-lua=y
CONFIG_PACKAGE_libxdp=m
CONFIG_PACKAGE_libyang=y
CONFIG_PACKAGE_lua=y
CONFIG_PACKAGE_luasocket=y
CONFIG_PACKAGE_luci=y
CONFIG_PACKAGE_luci-app-firewall=y
CONFIG_PACKAGE_luci-app-https-dns-proxy=y
CONFIG_PACKAGE_luci-app-opkg=y
CONFIG_PACKAGE_luci-base=y
CONFIG_PACKAGE_luci-i18n-base-ja=y
CONFIG_PACKAGE_luci-i18n-firewall-ja=y
CONFIG_PACKAGE_luci-i18n-https-dns-proxy-ja=y
CONFIG_PACKAGE_luci-i18n-opkg-ja=y
CONFIG_PACKAGE_luci-lib-nixio=y
CONFIG_PACKAGE_luci-light=y
CONFIG_PACKAGE_luci-mod-admin-full=y
CONFIG_PACKAGE_luci-mod-network=y
CONFIG_PACKAGE_luci-mod-status=y
CONFIG_PACKAGE_luci-mod-system=y
CONFIG_PACKAGE_luci-proto-ipv6=y
CONFIG_PACKAGE_luci-proto-ppp=y
CONFIG_PACKAGE_luci-proto-vxlan=y
CONFIG_PACKAGE_luci-proto-wireguard=y
CONFIG_PACKAGE_luci-ssl=y
CONFIG_PACKAGE_luci-theme-bootstrap=y
CONFIG_PACKAGE_more=y
CONFIG_PACKAGE_prometheus-node-exporter-lua=y
CONFIG_PACKAGE_prometheus-node-exporter-lua-nat_traffic=y
CONFIG_PACKAGE_prometheus-node-exporter-lua-netstat=y
CONFIG_PACKAGE_prometheus-node-exporter-lua-openwrt=y
CONFIG_PACKAGE_prometheus-node-exporter-lua-textfile=y
CONFIG_PACKAGE_prometheus-node-exporter-lua-uci_dhcp_host=y
CONFIG_PACKAGE_px5g-mbedtls=y
CONFIG_PACKAGE_python3-base=y
CONFIG_PACKAGE_python3-light=y
CONFIG_PACKAGE_python3-logging=y
CONFIG_PACKAGE_qosify=m
CONFIG_PACKAGE_rpcd=y
CONFIG_PACKAGE_rpcd-mod-file=y
CONFIG_PACKAGE_rpcd-mod-iwinfo=y
CONFIG_PACKAGE_rpcd-mod-luci=y
CONFIG_PACKAGE_rpcd-mod-rrdns=y
CONFIG_PACKAGE_rpcd-mod-ucode=y
CONFIG_PACKAGE_tc-tiny=m
CONFIG_PACKAGE_terminfo=y
CONFIG_PACKAGE_ucode-mod-html=y
CONFIG_PACKAGE_ucode-mod-math=y
CONFIG_PACKAGE_uhttpd=y
CONFIG_PACKAGE_uhttpd-mod-lua=y
CONFIG_PACKAGE_uhttpd-mod-ubus=y
CONFIG_PACKAGE_vxlan=y
CONFIG_PACKAGE_wireguard-tools=y
CONFIG_PACKAGE_xdp-filter=m
CONFIG_PACKAGE_xdp-loader=m
CONFIG_PACKAGE_xdpdump=m
CONFIG_PACKAGE_zlib=y
CONFIG_PCRE2_JIT_ENABLED=y
CONFIG_REPRODUCIBLE_DEBUG_INFO=y
# CONFIG_TARGET_ROOTFS_INITRAMFS is not set
# CONFIG_TARGET_ROOTFS_TARGZ is not set
CONFIG_USE_LLVM_BUILD=y
CONFIG_VERSIONOPT=y
CONFIG_VERSION_BUG_URL=""
CONFIG_VERSION_CODE=""
CONFIG_VERSION_DIST="OpenWrt"
CONFIG_VERSION_FILENAMES=y
CONFIG_VERSION_HOME_URL=""
CONFIG_VERSION_HWREV=""
CONFIG_VERSION_MANUFACTURER="naa0yama"
CONFIG_VERSION_MANUFACTURER_URL="https://github.com/naa0yama/OpenWrt-FortiGate-50E-custom-image"
CONFIG_VERSION_NUMBER=""
CONFIG_VERSION_PRODUCT=""
CONFIG_VERSION_REPO="https://downloads.openwrt.org/releases/23.05.2"
CONFIG_VERSION_SUPPORT_URL=""
# CONFIG_MAKE_TOOLCHAIN is not set
# CONFIG_SDK is not set
# CONFIG_SDK_LLVM_BPF is not set
|
Topic
上記差分を full config に変換して使う場合は下記とする
1
2
3
4
5
6
| cd ~/builds/openwrt
# Write changes to .config
cp diffconfig .config
# Expand to full config
make defconfig
|
設定が終わったら make する
make dirclean
は途中成果物を掃除するため試行錯誤する場合が多いと思うので仕込んでおく
1
2
| make dirclean
time make -j $(($(nproc)+1))
|
build した squashfs
ファイルは ~/builds/openwrt/bin/targets/mvebu/cortexa9/
に吐き出される
今回は openwrt-23.05.2-mvebu-cortexa9-fortinet_fg-50e-squashfs-sysupgrade.bin
であった
TFTP の準備 ¶
まず条件を確認したいので Tera Term で Console を繋いで電源をつなぎます。
そうすると boot が始まり下記の状態となるためここで適当なキーを押します
Please wait for OS to boot, or press any key to display configuration menu..........
1
2
3
4
5
6
7
8
| FortiGate-50E (17:10-06.30.2016)
Ver:05000013
Serial number: FGTXXXXXXXXXXXXX
CPU(00): 1600MHz
Total RAM: 2GB
Initializing boot device...
Initializing MAC... egiga1
Please wait for OS to boot, or press any key to display configuration menu...
|
下記の画面になったら R
キーを押し条件を確認する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| [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.
Enter C,R,T,F,I,B,Q,or H:
Image download port: WAN1
DHCP status: Disabled
Local VLAN ID: <NULL>
Local IP address: 192.168.1.188
Local subnet mask: 255.255.255.0
Local gateway: 192.168.1.254
TFTP server IP address: 192.168.1.168
Firmware file name: image.out
|
手元の Windows で Static IP を設定し Ping で確認しておく
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| [P]: Set firmware download port.
[D]: Set DHCP mode.
[I]: Set local IP address.
[S]: Set local subnet mask.
[G]: Set local gateway.
[V]: Set local VLAN ID.
[T]: Set remote TFTP server IP address.
[F]: Set firmware file name.
[E]: Reset TFTP parameters to factory defaults.
[R]: Review TFTP parameters.
[N]: Diagnose networking(ping).
[Q]: Quit this menu.
[H]: Display this list of options.
Enter P,D,I,S,G,V,T,F,E,R,N,Q,or H:
[1]: Ping remote TFTP server.
[2]: Ping gateway.
[3]: Ping specified IP address.
[Q]: Quit this menu.
[H]: Display this list of options.
Enter 1,2,3,Q,or H:
Using egiga1 device
host 192.168.1.100 is alive
|
TFTP は Serva
を用意した
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| [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.
Enter C,R,T,F,I,B,Q,or H:
Please connect TFTP server to Ethernet port 'WAN1'.
MAC: 00:00:5E:00:53:00
Connect to tftp server 192.168.1.100 ...
###########
Image Received.
Checking image... OK
Save as Default firmware/Backup firmware/Run image without saving:[D/B/R]?R
|
Save as Default firmware/Backup firmware/Run image without saving:[D/B/R]?
が表示されたら今回は起動のみできれば良いため、 R
を入力
起動が完了すると、下記の画面になり LAN 側 Port が全て br-lan に所属し管理画面が 192.168.1.1 であったので SSH でアクセスする
念のため、 DD でバックアップし SCP で母艦に転送しておく
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| 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
root@OpenWrt:/tmp/mtd# ll
drwxr-xr-x 2 root root 100 Jan 13 11:06 ./
drwxrwxrwt 16 root root 440 Jan 13 11:04 ../
-rw-r--r-- 1 root root 65536 Jan 13 11:06 mtd1_firmware-info.bin
-rw-r--r-- 1 root root 6291456 Jan 13 11:06 mtd5_kernel.bin
-rw-r--r-- 1 root root 25165824 Jan 13 11:07 mtd6_rootfs.bin
|
1
2
3
4
5
6
7
8
9
10
11
12
| dd if=/dev/mtdblock0 of=mtd0_u-boot.bin
dd if=/dev/mtdblock1 of=mtd1_firmware-info.bin
dd if=/dev/mtdblock2 of=mtd2_dtb.bin
dd if=/dev/mtdblock3 of=mtd3_u-boot-env.bin
dd if=/dev/mtdblock4 of=mtd4_board-info.bin
dd if=/dev/mtdblock5 of=mtd5_kernel.bin
dd if=/dev/mtdblock6 of=mtd6_rootfs.bin
dd if=/dev/mtdblock7 of=mtd7_kn2.bin
dd if=/dev/mtdblock8 of=mtd8_rfs2.bin
dd if=/dev/mtdblock9 of=mtd9_part1.bin
dd if=/dev/mtdblock10 of=mtd10_part2.bin
dd if=/dev/mtdblock11 of=mtd11_config.bin
|
Topic
バックアップをデバイスに書き戻す際は、mtd コマンドを用いて書き込む
1
2
3
4
5
| mtd write <backup image> <target partition>
例)
mtd write mtd1_firmware-info.bin firmware-info
mtd verify mtd1_firmware-info.bin firmware-info # 書き込まれたデータが元データと一致するか検証
|
SCP で /tmp
宛に openwrt-23.05.2-mvebu-cortexa9-fortinet_fg-50e-squashfs-sysupgrade.bin
を転送する
その後、下記コマンドで fireware を上書きインストールする
1
| /sbin/sysupgrade /tmp/openwrt-23.05.2-mvebu-cortexa9-fortinet_fg-50e-squashfs-sysupgrade.bin
|
実行すると、コンソールが流れていき起動できる
FortiOS が起動した場合は Please wait for OS to boot, or press any key to display configuration menu...
のタイミングでなにかキーを押して、[B]: Boot with backup firmware and set as default.
を選択すると OpenWRT が起動するはず。
デフォルトでは 192.168.1.1 で管理画面が拝める ID: root
, PW: 空欄 でログインできる
念のため確認しておく
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| root@OpenWrt:~# cat /etc/os-release
NAME="OpenWrt"
VERSION="23.05.2"
ID="openwrt"
ID_LIKE="lede openwrt"
PRETTY_NAME="OpenWrt 23.05.2"
VERSION_ID="23.05.2"
HOME_URL="https://openwrt.org/"
BUG_URL="https://bugs.openwrt.org/"
SUPPORT_URL="https://forum.openwrt.org/"
BUILD_ID="r23630-842932a63d"
OPENWRT_BOARD="mvebu/cortexa9"
OPENWRT_ARCH="arm_cortex-a9_vfpv3-d16"
OPENWRT_TAINTS=""
OPENWRT_DEVICE_MANUFACTURER="naa0yama"
OPENWRT_DEVICE_MANUFACTURER_URL="https://github.com/naa0yama"
OPENWRT_DEVICE_PRODUCT="Generic"
OPENWRT_DEVICE_REVISION="v0"
OPENWRT_RELEASE="OpenWrt 23.05.2 r23630-842932a63d"
root@OpenWrt:~# lsmod | grep -E '^(veth|vrf|vxlan|wireguard)'
veth 24576 0
vrf 24576 0 [permanent]
vxlan 53248 0
wireguard 57344 0
root@OpenWrt:~# opkg list-installed | grep -E '^(frr|ip-full|tailscale|wireguard
|dmesg)'
dmesg - 2.39-2
frr - 8.5.1-1
frr-bfdd - 8.5.1-1
frr-bgpd - 8.5.1-1
frr-libfrr - 8.5.1-1
frr-pythontools - 8.5.1-1
frr-staticd - 8.5.1-1
frr-vrrpd - 8.5.1-1
frr-vtysh - 8.5.1-1
frr-watchfrr - 8.5.1-1
frr-zebra - 8.5.1-1
ip-full - 6.3.0-1
tailscale - 1.50.0-1
tailscaled - 1.50.0-1
wireguard-tools - 1.0.20210914-2
root@OpenWrt:~# ip link add dev mgmt type vrf table 10
root@OpenWrt:~# ip link set dev mgmt up
root@OpenWrt:~# ip link show type vrf
18: mgmt: <NOARP,MASTER,UP,LOWER_UP> mtu 65575 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 00:00:5E:00:53:00 brd ff:ff:ff:ff:ff:ff
root@OpenWrt:~# ip vrf list
Name Table
-----------------------
mgmt 10
|
参考情報 ¶