読者です 読者をやめる 読者になる 読者になる

treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

続・RaspberryPi3のtapデバイス on Softether

ネットワーク サーバ RaspberryPi

以前にRaspberryPiでSoftetherで必須なtapデバイスという記事で話題にしましたtapデバイスとeth0、束ねるbr0の部分を追加で検証しましたのでご報告します。

以前の記事

blog.treedown.net

ここから続きます。

結論から

前回記事で推測の話をいくつか書いていましたが、結論から言うと概ね推測通りの動作をしてくれるようでした、間違っていなかった。ただ、自分を信じられなかったがためにアレコレ試していって勝手に混乱してちょっとハマってしまった、と言う側面があります。お恥ずかしい。
環境は前回に引き続きRaspberryPi3を二台使ってsoftetherをインストールしサイト間接続を実現する、そのサイト間接続はL2=ブリッジ接続で実現、が目標です。

tapデバイスがブリッジ接続専用

簡単にいうとtapデバイスはブリッジ接続専用の出入り口になります。softetherで割り当てしてわざわざ作成しているのですから当然なのですが。
で、そのほかのパッケージが実行する通信はeth0に割り当てたIPアドレスで通信をします。br0はローカル接続専用、eth0はブリッジ接続後のIPアドレスで提供するsoftether以外のサービスが利用する接続となります。

構成の説明

ちょっと構成を説明しておきます。
図:それぞれの接続図

f:id:treedown:20160929143633p:plain

この図で拠点1のsoftetherと拠点2のsoftetherをブリッジ接続するところまでは前回記事の通りでした。拠点2のsoftetherは他にsambaサーバをインストールして共有フォルダを提供するようにしたい、という希望がありました。つまりsoftetherとsambaの両立を一台の中で実施しなければいけない、ということです。
加えて、拠点1にあるDHCPサーバだけで拠点2のDHCP環境もカバーしてしまいます。(ブリッジ接続だから)
拠点1か拠点2かに関わらず拠点1に設置されている他のサーバは利用したい環境を作りたかったんですね。
拠点1側のsoftetherは専用サーバなのでtapデバイスを作成してブリッジとするだけでOKでした。他のサービスが入っていませんし。
拠点2側では拠点1にブリッジ接続するtapデバイスの他、ローカルネットワーク内のPCが参照する共有フォルダをsambaでホストすることになっていました。このときにちょっとこんがらがってしまったんですね。結論から言えばeth0の通信を割り当てればよかった、と言うだけでした、

本来は/etc/dhcpcd.confで設定するのですが、今回は検証ということで/etc/network/interfacesで全部設定してしまいます。

/etc/network/interfaces

※変更点だけ書きます。変更前(デフォルト値)が#でコメントアウトしてあります。
----------------------------------------------

#iface eth0 inet manual
iface eth0 inet static
address 192.168.81.21
netmask 255.255.255.0
broadcast 192.168.81.255

##Softether VPN NIC
auto br0
iface br0 inet static

##br0 to router Local Network
address 192.168.10.2
netmask 255.255.255.0
broadcast 192.168.10.255
gateway 192.168.10.1

##All bridge Sertting
bridge_ports eth0
bridge_maxwait 10

----------------------------------------------

これを踏まえて

f:id:treedown:20160929144202p:plain

拠点2のbr0にはインターネットに出るためのルータと通信するためのIPアドレスを設定します。ここでは192.168.10.2を設定しています。拠点2ルータは192.168.10.1です。デフォルトゲートウェイもこのルータに設定してあります。
一方ブリッジしたtapデバイス経由でローカルエリア内のPCは通信してくれます。br0経由で接続されているtapデバイスを経由して拠点1とブリッジ接続をしているからDHCPのパケットも拠点1のDHCPサーバに届きます。よって拠点1のDHCPサーバからIPを取得して拠点2のPCは拠点1と同一のセグメントとして動作します。L2接続です。
拠点2のsoftetherを受け持つRaspberryPi3では合わせてsambaによる共有フォルダをホストする必要があるので、ローカルサブネット192.168.81.0/24に対してRaspberryPi3が通信の出入り口を作る必要があります。eth0に静的IPを割り当てて192.168.81.221/24としました。こうすることで拠点1か拠点2かは全く関係なくsambaサーバによる共有フォルダを利用することができます。

完成して

いやあ、これいいですね。拠点間接続はL2ブリッジだからルーティングの心配しなくていいし、せっかく設置するRaspberryPi3はsoftetherだけやらせるのももったいないのでsambaサーバを追加しましたが、外付けHDDを繋げれば容量も増やしたい放題だし。

実家のPCヘルプサポートが必要な方はIntelAMTなどと組み合わせてブリッジでのサイト間接続が出来ればかなり便利で快適な環境になるんじゃないか、って思います。

あ、ただルーティングはDHCPサーバが指定する拠点1側のデフォルトゲートウェイから抜けていきますので、拠点2側のインターネット線からインターネットに直接出ていかないところがいま一つ、ってところかもしれません。この場合にはL3でルーティングをうまく調整して192.168.81.0宛てだけトンネル側に流すようにしないといけないですね。