メッシュWiFi間のトンネリング

先日購入したが思うように接続できなかった TP-Link Deco M5間の接続を見直して、トンネリングを使ってDeco M5 を Ethernet Backhaul 接続することを試してみた。

一応動作しているように思うが、思い通りでないところがあり、設定の問題等があるのかもしれない。

要件

  • 保護者による制限を有効にするためにDeco M5をルーターモードで動作させる
  • 既設のVLAN非対応のスイッチを超えてDeco M5間を有線でEthernet Backhaul 接続する

メッシュ WiFi の調査不足」では条件にしていた「メッシュWiFiが既存のLANの一部として機能すること(ブリッジモード)」は、保護者による制限を有効にするために諦めた。

考え方

普通に考えればVLANを使うのが簡単であるが、Deco間をEthernetで接続する経路には複数のVLAN非対応スイッチがあり、結構な数の機器の交換と設定が必要になる。また、情報分電盤内に設置されているブリッジを交換する形のVLAN対応スイッチがないようであり、情報分電盤は既にほぼ一杯になっているので、そこにうまく収まるスイッチがあるかわからない。中期的にはVLANを使える環境に移行した方が管理が楽になりそうだが、短期的にはVLAN以外の方法をとることにした。

VLANを使わずに、既設のLANを使って、他の機器に影響をできるだけ与えないようにして特定の機器の間を接続するためには、トンネリングを使うというのが素直だと考えられる。

有線で、一応セキュアと考えるLANを使い、もともと、有線LAN内の通信は暗号化などされていないので、暗号化などを使わない、オーバーヘッドの少ないトンネリングが望ましい。

トンネリング用機器

トンネリングを可能とする安価な機器を探した。安価でトンネリングプロトコルも選べることから、以前に使ったことのある EdgeRouter X を2台導入することにした。

Deco M5間でどのような情報の交換ができないといけないのかはっきりしないが、Webを参考にして、Ethernet over GRE Tunnel を使うことにした。

EdgeRouter における Ethernet over GRE Tunnel の設定は、次のWebを参考にした。

https://help.ubnt.com/hc/en-us/articles/205231690-EdgeRouter-GRE-Tunnel

ネットワーク構成

次のようなネットワーク構成にすることにした。

EdgeRouter X の設定

EdgeRouter X のイーサネットポートは以下の図のように割り当てることにした。

eth0からeth3までは EdgeRouter Xに内蔵されるハードウェアスイッチ switch0 につないで、LAN側のスイッチとしても使えるようにする。

eth4をトンネリング用のポートとした。ブリッジ br0 を作成し、それに接続する。

トンネルとして tun0 を作成し、ブリッジ br0 に接続する。

スイッチとしての初期化

EdgeRouter X をリセットしてWebインタフェースで設定する。

PCの有線LAN端子とEdgeRouter X の eth0 を直結する場合には、PCのLANアダプタのIPアドレスを手動で設定する必要がある。LANアダプタに 192.168.1.2/24 などを設定する。

https://192.168.1.1 に接続する。

起動して、ubnt でログインすると、次のようなパネルが表示される。

Yesを選択してウィザードを起動する。

左側のSetup Wizards の中から Switch を選択し、設定する。以下では、Edge Router X のアドレスに 192.168.1.232/24 を設定した際のスクリーンショットを示す。

この 192.168.1.232/24 と後で設定する 192.168.1.231/24 の間にトンネルを張る。

また、リブート後にEdge Router X にログインするには、この 192.168.1.232 にアクセスする必要がある。

パラメータを設定して、「Apply」ボタンを押すと次のような確認が出る。

「Apply Changes」ボタンを押して、先に進む。

リブートする必要があるので「Reboot」をクリックすると、次の確認が表示される。

問題がなければ「Yes, I’m sure」をクリックして、リブートする。

リブートが開始されたことが次のように示される。

EdgeRouter X の GUI にアクセスするための変更

上記の設定をして、リブートをするとGUIにアクセスするためのアドレスが 192.168.1.232/24 に変わるので、変更が必要になる。

Webブラウザから https://192.168.1.232 にアクセスしてログインしなおす必要がある。

PCと接続する Edge Router X のイーサネットポートは eth0 から eth3 のどれでもよいので、 eth0 から変更しなくても支障はない。ただ、 eth0 の MACアドレスは192.168.1.1 に対応するとPCが学習しているので、この対応を忘れるまでに時間がかかる。PCとeth0 の間のケーブルを1回抜き差しするか、別のイーサネットポートにつなぎなおせば、新たに MACアドレスと IPアドレスの学習をすることになるので、すぐにログイン画面に接続できるはず。

ConfigTree を使ったスイッチの設定

Edge Router X の ConfigTree を使って設定を進めることにする。

interfaces/bridge

interfaces/bridge で「+ Add」ボタンをクリックし、ブリッジ「br0」を作成する。

次に br0 のパラメータを設定する。ここでは、multicastだけを enableに設定している。

interfaces/ethernet

interfaces/ethernet/eth4/bridge-group に br0 を設定する。

interfaces/switch/switch0/switch-port/interface

eth4 はトンネル用なので switch0 から eth4 の「- Remove」ボタンを押して取り除く。

ConfigTree を使ったトンネルの設定

interfaces/tunnel

トンネル tun0 を作成する。

interfaces/tunnel/tun0

次に tun0 の設定をする。

トンネリングのカプセル化に gre-bridge を選択する。

先に示したネットワーク構成に従って local-ip には 192.168.1.232 を設定する。対向の remote-ip には 192.168.1.231 を指定する。

multicast を enable にしておく。

interfaces/tunnel/tun0/bridge-group

tun0 を br0 に接続する。

これで、br0 を介して tun0 と eth4 が接続されることになる。

ハードウェア・オフロードの設定

EdgeRouter X には、ハードウェアによってオフロードする機能がある。トンネリングの処理のオフロードには、なぜかしら NATのハードウェアオフローディングのための hwnat を enable にする必要があるようだ。

system/offload

コマンド

ConfigTree を用いて設定ができたら、ウィンドウの下方にある「Preview」ボタンをクリックして、コマンドを確認する。

確認ができたら「Apply」ボタンをクリックすることで設定を反映させる。

設定に問題がなければ「The configuration has been applied successfully」というメッセージが表示される。

設定に問題があれば、赤字でその旨を知らせてくれる。

対向の EdgeRouter X の設定

以上で1台の設定ができたことになる。対向のEdgeRouter X の設定もする必要がある。

先に示したネットワーク構成に従う場合には、192.168.1.232 を設定していた箇所に 192.168.1.231 を、192.168.1.231 を設定していた箇所には 192.168.1.232 を設定することになる。

初期化時の switchの設定と、ConfigTree の interfaces/tunnel/tun0 の設定を変更する必要がある。

動作確認

実際に利用する場所に設置する前に動作確認をした。

先に示したネットワーク構成の 192.168.1.232 の EdgeRouter X に接続されているサブの Deco M5 側の状況をみると以下のように有線LAN接続となっており、接続がされていることがわかった。

また、サブのDecoの有線LANにPCをつなげば正常に通信でき、EdgeRouter X の Dashboard のInterfaces のトラフィックモニターを見て、トンネルを介して通信が行われていることがわかった。

問題点

Deco アプリによる状況表示ができないことがある

設定して使い始めたばかりなので、何が原因かはっきりしないが、Androidの Deco アプリ (バージョン 1.9.18)でメインのDeco M5 と サブの Deco M5 の状況を取得しようとしても、うまく取得できないことがあった。先に示したネットワーク構成の 192.168.1.232のサブのDecoに接続されるとうまくできないように思われる。メインのDecoや他の無線LANに接続すると表示される。

サブのDecoが選択されない

実際に設置した場所では、サブのDecoの近くでもメインのDecoの電波が受信可能になっていることもあるが、サブのDecoのすぐ近くでも端末がサブのDecoに接続することがほとんどない。何かの拍子にサブに接続されるだけで、サブに接続しようと思ってもできない。

しかし、有線LANを切断して、無線のBackhaul に切り替わるとサブのDecoの近くの機器はサブのDecoに接続されるようになる。有線LANを使っていることが係わっているのは間違いなさそうである。

有線LANではトンネリングによる遅延などによってサブのDecoが選ばれないのであろうか?メッシュWiFiのプロトコルを理解していないこともあり、何が原因かよくわかっていない。

雑感

家庭用でもここに示したようなルータモードで保護者による制限を可能にしつつ、既設の有線LANで運用をしたい場合もあるように思う。Deco本体にトンネリングの機能を入れてくれると外部の機器が不要になるのですっきりする。ファームウェアのアップデートなどでトンネリングの機能を加えてほしいものだ。