こっちもあるよ
はじめに
現在、enひかりクロスを自宅に引いています。特に障害などで困ったことはありませんが、なんとなく冗長化したくなりました。
いろいろと調べてはみたものの、固定回線や○○Airなどはどうしても月額数千円はかかってしまいます。
使う頻度が低い回線に毎月そこまで支払えるほど大富豪ではないので、今回はOpenWrtと4Gモデムとpovoを使って本体代と月額料金を限界まで抑えてバックアップ回線を用意しようと思います。
Wi-Fiの詳細設定についてはここでは触れません。
電波法とかめんどくさいので。
使用する機材
TP-Link Archer C7 v5
USBポートを搭載していて、Flash16MiB/RAM128MiBを搭載しており、中古価格が2,000円程度と安いためこちらを使用します。
Sierra Wireless EM7455
技適マークの付いたEM7455をaliexpressで発掘したのでこちらを使用します。QMIに対応しているデバイスなので、OpenWrt側でもQMI通信を使用します。
だいたい2~3,000円くらいです。
落とし穴が一つあり、○○メーカー用などと書かれているモジュールはロックがかかっており、対応するデバイス以外で使用できないためファームの書き換えが必要になります。
4Gルーター用などと書かれているものが良いと思います。
対応バンド
B1 (2100)、B2 (1900)、B3 (1800)、B4 (1700)、B5 (850)、B7 (2600)、B8 (900)、B12 (700)、B13 (700)、B20 (800) 、B25 (1900)、B26 (850)、B29 (700)、B30 (2300)、B41 (2500/TDD)
技適のないEM7455や4Gモジュールを使うと電波法違反となります。
また4G通信は技適未取得機器を用いた実験等の特例制度の対象外なので、自分で技適を通すか技適の通ったモジュールを買う以外に選択肢はありません。
NGFF <-> USBコンバータ
NGFFモジュールをUSBポートで使えるようにするためのコンバータです。
外部電源ポートがついているものが良いと思います。
こちらは500円くらいで買えると思います。
OpenWrtのセットアップ
特別なことは何もないです。
Archer C7の場合、WebUIからOpenWrtを投入できます。
Archer C7の場合は、ファームウェアのファイル名をfirmware.binのような短い名前にしてください。
インストール後の画面

カスタムファームをビルドするかブートローダー書き換えしないと16MiBフルに使えないことをインストールしてから知った
ちっちゃいUSBハブ買ってextrootにすれば良いと思います。
私はどうせ4Gルーター以外の機能を搭載する予定はないのでこのまま行きます。
必要なパッケージのインストール
sshのコマンドラインかWebUIから次のパッケージをインストールします。
QMI用のパッケージとシリアル通信用のものです。
kmod-usb-net-qmi-wwan uqmi luci-proto-qmi picocom kmod-usb-serial-qualcomm modemmanager luci-proto-modemmanager
インストールが終わったら再起動します。
再起動後、ネットワーク -> インターフェース -> インターフェースを新規作成から、プロトコル一覧に QMIセルラーモデムマネージャーがあるか確認してください。
ModemManagerについてはあとで解説します。
QMIセルラーで接続できた方はModemManagerを入れなくていいです。
モジュール動作チェック
モデム動作モードの切り替え
特定メーカー版からGeneric版への切り替えは調べたらいっぱい出てくるので頑張ってください。
今回私が購入したのはGeneric版なので、MBIMオンリーからQMIまでの切り替えを書きます。
AT用COMポートの有効化
私が買ったモジュールはMBIMオンリーモード(COMP 9)で動作しておりシリアル通信ができなかったため、まずはCOMポートの有効化を行います。
適当なUbuntu系のLiveUSB環境を用意して、次の手順を実行します。
QMIユーティリティのインストール
# apt update
# apt install libqmi-utils
ModemManagerの停止
# systemctl stop ModemManager
モード変更
現在のモードを確認します。
# qmicli -p -d /dev/cdc-wdm0 --dms-swi-get-usb-composition
[/dev/cdc-wdm0] Successfully retrieved USB compositions:
USB composition 6: DM, NMEA, AT, QMI
USB composition 8: DM, NMEA, AT, MBIM
[*] USB composition 9: MBIM
このように、COMP9だとATポートが使えません。
買ったときにCOMP6やCOMP8だった方はここをスキップしてQMIの有効化から続けてください。
COMP8へ変更します。
# qmicli -p -d /dev/cdc-wdm0 --dms-swi-set-usb-composition=8
# qmicli -p -d /dev/cdc-wdm0 --dms-set-operating-mode=reset
モデムが再起動してOSで認識されたら取り外してOKです。
LiveUSB環境もこの後は使わないので閉じて構いません。
OpenWrt側でQMIを有効化
picocomでモデムのATポートに接続し、モードを切り替えます。
# picocom /dev/ttyUSB2
picocom v3.1
port is : /dev/ttyUSB2
flowcontrol : none
baudrate is : 9600
parity is : none
databits are : 8
stopbits are : 1
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
hangup is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv -E
imap is :
omap is :
emap is : crcrlf,delbs,
logfile is : none
initstring : none
exit_after is : not set
exit is : no
Type [C-a] [C-h] to see available commands
Terminal ready
# ここからコマンド実行
AT!ENTERCND="A710"
OK
AT!USBCOMP=1,1,10D
OK
AT!RESET
AT!RESET実行後は接続が切れるので、Ctrl+A->Ctrl+Xでpicocomを終了します。
状態確認
# ls /dev
bus mtd0 mtd3ro mtd8 mtdblock4 ptmx ttyS1 ttyS4 urandom
cdc-wdm0 mtd0ro mtd4 mtd8ro mtdblock5 pts ttyS10 ttyS5 watchdog
console mtd1 mtd4ro mtd9 mtdblock6 random ttyS11 ttyS6 zero
fd mtd10 mtd5 mtd9ro mtdblock7 shm ttyS12 ttyS7
full mtd10ro mtd5ro mtdblock0 mtdblock8 stderr ttyS13 ttyS8
gpiochip0 mtd1ro mtd6 mtdblock1 mtdblock9 stdin ttyS14 ttyS9
hwrng mtd2 mtd6ro mtdblock10 null stdout ttyS15 ttyUSB0
kmsg mtd2ro mtd7 mtdblock2 port tty ttyS2 ttyUSB1
log mtd3 mtd7ro mtdblock3 ppp ttyS0 ttyS3 ttyUSB2
の後に/dev/cdc-wdm0が見えていれば書き換え完了です。
ModemManagerのインストール
私の環境だといろいろやらかしてしまったのでModemManagerに切り替えます。
まだインターフェースを作成していないかたはこっちでやったほうがパッケージ容量食わないので良いと思います。
インターフェース設定もAPN設定すればなんとかなります。
modemmanagerとluci-proto-modemmanagerをインストールして、ルーターを再起動します。
接続設定
インターフェース作成
インターフェースを作成します。
適当な名前を付け、プロトコルにモデムマネージャーを選択して作成します。
インターフェース設定
APNにpovo.jp、認証タイプはなしにします。
他はデフォルトで大丈夫です。
ファイアーウォール設定
wanゾーンを割り当てます。
接続チェック
保存して適用すると、IPv4とv6アドレスが表示されているはずです。
適当なサイトにアクセスして、ページが閲覧できればIPv4ルーターの構築は完了です。
見れない場合は、ネットワーク -> インターフェース -> wwan -> 詳細設定 -> カスタムDNSサーバーから適当に1.1.1.1などを指定してみてください。

※wanとwan6が無いのは一時的に消してるだけなので気にしないでください。
nmcliの接続ステータス
root@OpenWrt:~# mmcli -L
/org/freedesktop/ModemManager1/Modem/0 [Sierra Wireless, Incorporated] EM7455B
root@OpenWrt:~# mmcli -m 0
----------------------------------
General | path: /org/freedesktop/ModemManager1/Modem/0
| device id: b104fdee9690f126c318a339012b2R***********
----------------------------------
Hardware | manufacturer: Sierra Wireless, Incorporated
| model: EM7455B
| firmware revision: SWI9X30C_02.24.03.00 r6978 CARMD-EV-FRMWR2 2017/03/02 13:36:45
| carrier config: default
| h/w revision: 1.0
| supported: gsm-umts, lte
| current: gsm-umts, lte
| equipment id: 35343108*******
----------------------------------
System | device: /sys/devices/platform/ahb/1b000000.usb/usb1/1-1
| physdev: /sys/devices/platform/ahb/1b000000.usb/usb1/1-1
| drivers: qmi_wwan, qcserial
| plugin: sierra
| primary port: cdc-wdm0
| ports: cdc-wdm0 (qmi), ttyUSB0 (ignored), ttyUSB1 (gps),
| ttyUSB2 (at), wwan0 (net)
----------------------------------
Status | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (0), sim-puk2 (0)
| state: connected
| power state: on
| access tech: lte
| signal quality: 42% (recent)
----------------------------------
Modes | supported: allowed: 3g; preferred: none
| allowed: 4g; preferred: none
| allowed: 3g, 4g; preferred: 4g
| allowed: 3g, 4g; preferred: 3g
| current: allowed: 3g, 4g; preferred: 4g
----------------------------------
Bands | supported: utran-1, utran-3, utran-4, utran-5, utran-8, utran-2,
| eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8,
| eutran-12, eutran-13, eutran-20, eutran-25, eutran-26, eutran-29,
| eutran-41
| current: utran-1, utran-3, utran-4, utran-5, utran-8, utran-2,
| eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8,
| eutran-12, eutran-13, eutran-20, eutran-25, eutran-26, eutran-29,
| eutran-41
----------------------------------
IP | supported: ipv4, ipv6, ipv4v6
----------------------------------
3GPP | imei: 35343108********
| operator id: 44051
| operator name: KDDI
| registration: home
| packet service state: attached
----------------------------------
3GPP EPS | ue mode of operation: csps-2
| initial bearer path: /org/freedesktop/ModemManager1/Bearer/2
| initial bearer apn: povo.jp
| initial bearer ip type: ipv4v6
----------------------------------
SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0
| sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0 (active)
| slot 2: none
----------------------------------
Bearer | paths: /org/freedesktop/ModemManager1/Bearer/4
フォールバック回線を設定する
mwan3を使用して、有線回線が落ちたとき自動でwwanにフォールバックするように設定します。
mwan3はデフォルトだとIPv4/IPv6デュアルスタック回線を1つのインターフェースで扱えないため、論理インターフェースを作成します。

※デバイスの@wwan6は@wwanに読み替えてください。
mwan3のインストール
mwan3とluci-app-mwan3をインストールします。
インターフェースメトリック設定
各インターフェースメトリックを変更します。
wanとwan6を10に、wwanとwwan6を20に設定します。
wan
wan6
wwan
wwan6
インターフェース設定
ネットワーク -> MultiWan Managerに移動します。
wanbとwanb6を削除します。
インターフェースタブへ移動し、wwanとwwan6を追加します。
それぞれ画像のように設定します。
wwan
wwan6
メンバー設定
Memberタブへ移動します。
既存の設定をすべて削除します。
wan
wan_m1_w1という名前のメンバーを追加します。
インターフェース -> wan
メトリック -> 1
重み -> 1
に設定します。
wan6
wan6_m1_w1という名前のメンバーを追加します。
インターフェース -> wan
メトリック -> 1
重み -> 1
に設定します。
wwan
wwan_m2_w1という名前のメンバーを追加します。
インターフェース -> wan
メトリック -> 2
重み -> 1
に設定します。
wwan6
wwan6_m2_w1という名前のメンバーを追加します。
インターフェース -> wan
メトリック -> 2
重み -> 1
に設定します。
ポリシー設定
ポリシータブへ移動します。
既存の設定をすべて削除し、failover_v4とfailover_v6という名前のポリシーを追加します。
IPv6 対応のサイトには IPv6 優先で接続したいので、wan6_m1_w1 -> wan_m1_w1、 wwan6_m2_w1 -> wwan_m2_w1の順で追加します。
ルール設定
httpsルールを削除し、default_rule_v4とdefault_rule_v6をそれぞれ画像のように設定します。

※failover_policyはfailover_v4に読み替えてください。

※failover_policyはfailover_v6に読み替えてください。
動作確認
ここまで設定が完了したらWANの有線ケーブルを抜き、4Gネットワークにフェイルオーバーするか確認します。
自動で切り替わっていれば、構築からバックアップまですべて完了です。
お疲れ様でした。
おまけ
QMIセルラープロトコルで接続する
インターフェース作成前に次のコマンドを実行します。
私は先にインターフェースを作成してしまったので、ロックをどうやっても外せずModemManagerに移行しました。
EM7455はIPアドレス形式に802.3ではなくraw_ipを要求するので、openwrtから渡される形式を変えてあげます。
# ifconfig wwan0 down
# echo Y > /sys/class/net/wwan0/qmi/raw_ip
ifconfig wwan0 up
再起動後も適用されるように、/etc/rc.localを編集します。
exit 0の上に追記します。
sleep 15
echo Y > /sys/class/net/wwan0/qmi/raw_ip
たぶん大丈夫です。
たぶん。
ロックされててOperation not Permittedとか言われたらModemManagerに切り替えてください。






















