「古いパソコン」でルーターを作る
最近、職場の古いルーターがもうダメだなと感じた。長いこと働いてきたし実際かなり安定していたんだけど、俺の中でダメだという判定が出た。
そこで「古くてポンコツ」なパソコンを一台見つけてきて、新しいソフトウェアルーターにすることにした。構成は以下の通り:

二週間ほど格闘して、ようやく安定した気がする。しかもこのソフトウェアルーターで「ロードバランシング」「科学上网」「広告フィルタリング」なんかを実現できた。ただし穴には大量にハマったので、ここにまとめておく。
ソフトウェアルーターの構築と設定
ソフトウェアルーターを作るのは実は簡単で、適当なパソコンを見つけて対応する OpenWRT 系のシステムを入れるだけだ。現状あるのは Lean とか LEDE X64 とかが主流だけど、個人的には LEDE X64 を推す。小さいバグは多いものの、大きな機能は問題ない。
http://firmware.koolshare.cn/LEDE_X64_fw867/
インストール方法はイメージをダウンロードしてハードディスクに直接書き込むだけ。Ubuntu Live CD から書き込むと速くておすすめ。
書き込みが終わって起動できれば、ソフトウェアルーターとしてはほぼ完成だ。
もちろん今回のソフトウェアルーターは「3Wan」ポートを実現する予定なので、デスクトップPCの標準ニック一枚では全然足りない。そこで NIC を二枚挿した。PCIE 16X の4ポートNIC、PCIE のシングルポートNIC、そしてマシン標準のNIC、合計6ポートだ。普通 LEDE X64 は起動後にNICを認識してくれる。デフォルトでは有効になっていないだけ。

「インターフェース」から手動で Wan ポートを追加して、ファイアウォールゾーンを Wan のグループに設定すればOK。
当然この「NICの自動認識」は Linux 本体が認識できるかどうかの話で、特別なドライバーは要らない。Linux はカーネルドライバーだからな。とはいえ NIC のブランドが奇特すぎると認識されないので、基本的には Intel 製を推す。
ロードバランシング
デフォルトの LEDE X64 でもロードバランシングは実現できる。まず3つの Wan ポートの接続方式を設定する必要がある。うちは静的IP割り当てだが、マルチPPPoeとかならそれも設定しておく。
もう一点、「ゲートウェイメトリック」を必ず設定すること。これは Wan ポートに番号を振るようなものだ。これを設定しないとロードバランシングが機能しなくなることが多い。

次に Koolshare のソフトウェアセンターで「ポリシーベースのロードバランシング」をインストールし、それっぽく設定する。“それっぽく"と言ったのは、この設定がクソの役にも立たないからだ。必要なのはこのプラグインが生成するルーティングテーブルだけ。

あとは LEDE X64 標準の mwan3 ロードバランシングで設定する。設定方法は色々あるけど、最終的なポリシーは自分で選ぶ必要がある。例えばうちの回線は3つの Wan ポートがそれぞれ「Unicom」「Mobile」「Telecom」の三回線に対応しているので、さっきのアホプラグインが生成したルーティングテーブルを参考に、三回線に振り分ければいい。

ここまで振り分ければほぼ問題ない。ただ mwan3 にはバグがあるとよく愚痴られる。すぐ「Wan ポートが落ちた」とか言い出すやつだ。Wan が一つならまだしも、マルチ Wan だと訳の分からない面倒が起きる。
この問題も調べたが、原因は mwan3 本体ではなく「ポートのオンライン検出機構」にあるようだ。ping が頻繁すぎるし、要求が厳しすぎる。

検出ポートの Ping 条件を緩めればいい。例えば1分に1回 ping して、10回タイムアウトして初めてオフラインと判定する、くらいにすればかなり安定する。
科学上网関連
LEDE X64 で科学上网する方法はネットにいくらでもチュートリアルがある。ただ現状この科学上网プラグインはバグが多くて手動修正が必要だ。俺も以前スクリプトを魔改造して自分の要求を満たすようにした。しかもスクリプトには DNS が転送できないバグなんかもあるので、そこは各位ググって自力で解決してくれ。俺からはもう何も言わない。

最新の Koolshare 版は科学上网のインストールパッケージもブロックしているが、github の変更履歴を見る限り、スクリプト内のキーワード検出を削除するだけでいい。
科学上网では国内サイトが海外に解決されることがよくある。大半は CDN を使っている大手サイトで、例えば JD・タオバオ・バイドゥ・Weibo あたりだ。DNS のホワイトリストに対応ドメインを追加すればいい。追加するときは
*.baidu.com
であって
baidu.com
ではない。前者でないと効かない。あと、これを追加しておくといい:
*.xunyou.mobi
これを入れておけば王者栄耀(Honor of Kings)の接続が切れずに済む。
とにかく今回のソフトウェアルータいじりは満足している。少なくとも構成は整ったし、3つの Wan ポートのロードバランシングも実現できた。あとソフトウェアルータで忘れちゃいけないのが、Bios で「電源投入時の状態を保存」に設定して、通電したら自動で起動するようにしておくことだ。突然の停電で再起動した後、ルーターを手動で起動しなきゃいけない尴尬な状況を避けられる。
コメントは中国語の本家サイトで受け付けています。このミラーは閲覧専用です。