こないだからRaspberryPiの記事ばっかりで他の話題を期待されている方には申し訳ないことになっております。
今日はRaspberryPi3でSoftetherを動作させる場合に重要となるtapデバイスについてのご報告です。
分かりにくいtapデバイス
RaspberryPi 3を含む全てのRaspberryPiでSoftetherを構成してVPN、というのはもう何を今更な感じで各サイトに情報はあふれかえっています。
単純にSoftetherを構成して接続できるようにするだけならこれらの先人の知恵をお借りすればOKなのですが、この際に重要になる知識が
- ブリッジ(ブリッジング)
- tapデバイス
の二点です。
これ、分かりにくくないですか?いやそんなことないのですかしら。
個人的には把握するまでちょっと時間が掛かったのでここでまとめておこうと思った次第です。
tapデバイスの構成
まず結論からどういう構成になるか、と言うところを図にしてみましょう。
図:構成図
Softetherをインストールするにあたり、tapデバイスを利用するためNICの内部でブリッジを作成することになります。これを実現する機能を、
$ sudo apt-get install bridge-utils
と実行して「bridge-utils」のインストールを事前に済ませます。
「/etc/network/interfaces」をお望みのように編集して通信できるようにするわけです。実際にユーザになる我々が使うのはeth0やbr0に設定されたIPアドレスを参照して使うことになります。※正直どっちを使うのかというところはまだ調べていません。
ただ、softetherがサイト間接続で参照するのは各1号機/2号機のtapデバイスで、ブリッジネットワークとしてtapデバイスからtapデバイスへ接続を行うことでサイト間接続を実現することになります。
要するに「bridge-utils」をインストールすることによって、softetherが生成するtapデバイスとeth0を内部的にブリッジ=L2で接続することによってsoftetherの通信もサーバに向けた通信も同じように受け取って上手いこと処理してくれることになります。
この画面で追加したtapデバイスを以下のように内部的に接続しています。
----------------------------------------------
$ sudo ip tuntap
tap_vlan: tap
$ sudo brctl addif br0 tap_vlan
$ sudo brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.00aca5eeebce no eth0
tap_vlan
----------------------------------------------
これで内部的にeth0がtapデバイスがブリッジされるようになるので、softetherの通信が成立するようになります。
課題
br0とeth0の使い分けがよく分かっていない、というところはあります。
サイト間接続以外の機能を利用する場合にはどっちにIPを振ったらいいのか、という点とか、そもそもaptでアップデートとかアラートメール発行とかするときはどのNIC?⇒br0?ないしeth0?というところです。
サイト間接続でブリッジしようとしているので、DHCPは1台だけで賄う必要があるのですが、この場合、ブリッジ接続が有効なネットワークとそうでないローカルエリア(ルーティングしない別のセグメント)をどう分解するかもちょっとした課題です。
※今、頭の中こんがらがり中
なかなか難しいもんですね。
※頭の中を整理しました⇒続編