LaptopでOpenWrtルーターを作るときの話
結論
- ノートパソコンでNICが足りなかったらUSBで追加すればいいよ。
- ディスプレイつきっぱなし問題は解決できるよ
- バッテリーは外しているよ
- NIC接続するポートはUSB 3 Gen 1はほしいよ
- マシンがリップクローズドで再起動が完了できない機種は、ディスプレイを半分あけておこう
方針・前提条件
- 既に現役を引退したマシンをルーターとして活用する
- USB3 gen 1
環境
- Vostro 3468?
CPU | Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz | i3 or Celeronでも十分かもしれない |
Mem | 16G | ルーターだけだったら2Gあればオーバースペックだと思う |
Drive | 1TSSD | USBメモリでもいいと思う |
USB-NIC | Tp-Link UE306 | OpenWrtで認識するUSBNICだったら何でもいい |
作業内容
LANを分離したいときにNICが足りない
普通のパソコンだとNICは1枚あれば事足りるわけで、下手したらNICすらない
ただOpenWrt入れてルーターにしてやろうというときにはVLAN分離してやろうとか色々考える兼ね合いでNICが別でほしいと思うはず。
1Gbit etherであればUSB 3.0 Gen1あれば2NIC入れたとしても使い物になる(Gen1は5Gbpsなので、1ポートあたり5NICまではいけるかもだけど、変換含めると4NICまでかな?)
ただ、トラフィックを裁くときにはやっぱり物理NICのほうがハードウェアサポートを受けることができるのか性能がいい。
そのため、以下の通り物理NICについてはトラフィックが多いであろうサーバー間のVLANを任せている。
どう設定すればいいか?
使用しているUE306を例にOpenWrtで使えるか調べるまでの流れを説明します。
- chipsetを確認する
商品名 chipset
この文章でググり、仕様を探すと下記のページが見つかるUE306 | USB3.0 ギガビット有線LANアダプター | TP-Link 日本
- 対象チップセットが対応しているかを確認する
chipset名 openwrt
上記でぐぐり、パッケージ有無を確認する
[OpenWrt Wiki] package: kmod-usb-net-asix-ax88179
OpenWrtのsupported deviceみたいな一覧でchipsetで調べられた気もしますが、見つからなかったので割愛。
なお、この時、releaseについても自分が使おうとしているOpenWrtのバージョンであるか確認しましょう。(なかったら自前でビルドする=公式がビルドしてくれてるものが使えないので自分でビルドするというめんどくさいことになります)
- openwrtとしてセットアップしたマシンに突き刺してpackgeをインストールします
ここで認識されるとinterfaceに表示されます。
起動したら"disk ‘hd0,gpt1’ not found.“エラー
21.02限定の話か分かりませんが
error: disk 'hd0,gpt1' not found.
起動時にこのようになって起動しませんでした。
どのlinuxでもいいんですが、USBブートして、/boot/gru/grub.cfgの以下の項目をコメントアウトしました。
個人的にはインストール時に使用するのはgparted-livを使ってて、ターミナルを起動してマウントして書きかえました。
set root='(hd0,gpt1)'
内臓デバイスにインストールしたい
USBから起動もできるんですが、そもそもUSBメモリも壊れやすいっちゃ壊れやすいのでHDDやSSDにインストールしたくなります
私はgparted-liveで以下の通り作業しました。(これももちろん、他のLinuxLiveUSBメディアでやっていい作業です)
wget https://downloads.openwrt.org/releases/21.02.2/targets/x86/64/openwrt-21.02.2-x86-64-generic-ext4-combined-efi.img.gz
gunzip openwrt-21.02.2-x86-64-generic-ext4-combined-efi.img.gz
dd if=./openwrt-21.02.2-x86-64-generic-ext4-combined-efi.img of=/dev/sda bs=1M
やってることはイメージ落としてきて解凍して、書き込んでいます。
前述しているこの作業もやっておくと、そのまま起動できます。
ディスプレイつきっぱなし問題
ノートパソコンにインストールすると、ずっと画面がついててうざい&現役を引退したディスプレイのバックライト寿命を削ってしまいます。
そのため、バックライトを起動して1分したら消すようにしましょう。
- OpenWrtにログイン(LuCI)
- System => Startupをクリック
- Local Startupをクリック
- /usr/bin/setterm –blank 1 > /dev/tty1を exit 0の前に追加
編集後はこうなります。
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
/usr/bin/setterm --blank 1 > /dev/tty1
exit 0
これで再起動したらディスプレイがoffになります。
解決策はHow to turn off the screen of a laptop? - Installing and Using OpenWrt - OpenWrt Forumを参照しました。
マシンがリップクローズドで再起動が完了できない機種は、ディスプレイを半分あけておこう
ディスプレイが完全にしまっていると再起動しない機種もあるので、その場合は写真のようにディスプレイを少し開けておきましょう。
最後に
前の記事のようにサーバーマシンがあるとしたら1台で済むっちゃ済むんですが単一障害ポイントになってつらいことになりそうだなとボケーっと考えていた時にこちらの作業をしました。
ネックになったのは、Proxmox側が起動しなくなったら外に出られない時間が何分かかるか?って所で、VM側(つまりOpenWrt側)が問題であればそのままProxmoxのコンソール画面でコマンド叩いてVMを起動すればいいんですが、そもそもPromox側だった場合、四苦八苦しそうだなと思ったでさらに前の記事の構成に戻した際にこの辺記載していなかったなと思ってここら辺書きました。
OpenWrt導入当初はなかった外部電源供給も可能なUSB3 HUBも追加購入したので、障害発生用にPi4で念のため1台用意しておくなんてこともいいかもですね。
なので、VMに配置しているOpenWrtに関してはホストOS側のNIC設定が汚くなるので、削除するかもなーと考えています。