Raspberry Pi 2 Model B で L2TP/IPSec VPNサーバを構築してみた(その1)

公開日: : 最終更新日:2016/03/27 Raspberry Piの技術メモ , ,

本記事は、Raspberry Pi 3に対応しています。

Raspberry Piは低消費電力のため、常時稼動させるサーバとしては最適です。
今回は、Raspberry Pi 2 Model B で、L2TP/IPSecのVPNサーバを構築します。

目的

  • 外出先からスマートフォン等で自宅のネットワークに接続し、安全にファイルサーバ上のデータを扱える。
  • VPN接続でRaspberry Piに接続できる。
  • Raspberry Pi上のファイルサーバに接続できる。

スポンサーリンク

課題

  1. どのようにセキュリティを担保するか?
  2. プロバイダから割り当てられているグローバルIPアドレスが変わる可能性がある、どのように自宅のグローバルIPアドレスを知るか?
  3. Linuxの仕様で、VPN接続中は、VPNサーバそのものと通信できないらしい。(Raspberry PiにVPN接続しながらRaspberry Pi上のデータにアクセスできない)

課題に対する解決案

セキュリティの担保

L2TP/IPSec もしくは SSL-VPN を使用してセキュリティを担保する。

⇒ L2TP/IPSecに対応しているSoftEtherVPNを利用する。

IPアドレスの問題

ダイナミックDNSサービスを使う。

⇒ SoftEtherの運営元がDDNSサービスを提供してくれている。

Linuxの仕様の問題

OSのIPアドレスを、物理デバイス(eth0)ではなく、ブリッジデバイス(br0)に割り当てて、br0にeth0とVPN仮想HUBをブリッジさせることで回避可能。

http://www2.softether.jp/jp/vpn3/manual/web/3-6.aspx#vpn_3_6_11

Linux オペレーティングシステム内部での制限事項により、VPN 側 (仮想 HUB 側) からローカルブリッジしている LAN カードに割り当てられる IP アドレスに対して通信を行うことはできません。この制限は PacketiX VPN が原因ではなく、Linux の内部構造に原因があります。もし VPN 側 (仮想 HUB 側) から Linux でローカルブリッジに使用しているコンピュータ本体と、何らかの通信を行いたい場合 (たとえば VPN Server / VPN Bridge サービスと HTTP サーバーサービスを両方動作させており、VPN 側からもサーバーサービスにアクセスさせたい場合) は、ローカルブリッジ用の LAN カードを用意して接続し、その LAN カードと既存の LAN カードの両方を物理的に同じセグメントに接続してください

要するに、OSのIPアドレスをブリッジデバイス(br0)に付与して、接続したい物理(eth0)および仮想HUB(vlan)をブリッジデバイス(br0)に繋げてやる(ブリッジする)ことで回避できるわけですね。

絵で描くとこんな感じです。
bridge

ということで、我が家の低消費電力のVPN Server環境は以下に決まりました。

環境

  • ハードウェア:Raspberry Pi 2 Model B
  • OS:Raspbian jessie
  • VPNサーバソフトウェア:SoftEther VPN

構築手順

SoftEtherはsudoコマンドではなくrootユーザにてインストール作業をすることが推奨のため、rootにスイッチしておきましょう。

以後のコマンドはすべてrootで実行します。

ブリッジデバイスを取り扱うパッケージのインストール

前述のとおり、Linuxの仕様の問題を回避するために、ブリッジデバイスbr0にIPアドレスを付与する必要があるわけですが、デフォルトではブリッジデバイスを扱うパッケージがインストールされていないため、インストールします。

物理デバイスに設定済みの固定IPアドレス設定を解除

ブリッジデバイスbr0にIPアドレスを付与するために、既にeth0等に付与している固定IPアドレス設定を削除します。

参考:Raspbian(jessie)の固定IPアドレス設定方法

削除してもいいですが、以下のように、設定個所を全てコメントアウトするだけでも良いです。

ブリッジデバイスへの固定IPアドレス設定

/etc/network/interface ファイルにブリッジデバイスbr0への固定IPアドレス設定と、物理デバイスeth0のブリッジ接続設定を記載します。

192.168.0.20/24 の固定IPアドレスを付与する例です。”★”は全てコメント

設定が終わったら再起動します。

設定確認

再起動後、br0に固定IPアドレスが設定されていることを確認します。
eth0側は169.254.xx.xx等のAPIPAアドレスで問題なしです。

SoftEtherのLinuxパッケージをダウンロード

公式サイトからLinux ARM EABI 32bit の 最新版をダウンロードします。
http://www.softether-download.com/ja.aspx?product=softether

パッケージの選択は以下の画像を参考にしてください。
softether-download

ダウンロードしたパッケージを /root ディレクトリに配置します。(任意のディレクトリでいいですが、以下、/root に配置したとして解説します)

SoftEtherのパッケージを解凍

makeする

解凍されたvpnserverディレクトリに移動して、makeしましょう。

以下のように聞かれたら、1を入力します。

EURAを読みましょう。

~~中略~~

1を入力して同意しましょう。

もう一度1を入力して同意しましょう。

以下のように、makeが進みます。

makeが完了し、コンパイルされました。

ファイルを確認してみましょう。

適切なディレクトリにmoveする

一つ上のディレクトリに移動し、vpnserverディレクトリを/usr/localにmoveしましょう。

パーミッション設定

基本的に600に、vpncmdとvpnserverは700に、パーミッションを変更します。

起動スクリプトの作成

vpnserver という起動スクリプトを作ります。SoftEtherの仮想HUBを作成した後に、ブリッジデバイスとブリッジする設定を追加しないといけないので、現時点ではとりあえず以下のとおりコピペして作ってください。

起動スクリプトをchkconfrigに登録する。

chkconfigをインストールしていない場合は、apt-get install chkconfig コマンドでインストールしてください。

vpnserver という起動スクリプトをchkconfigに登録します。

vpnserverを起動する

Raspbian jessie を再起動するか、サービスを起動してください。

OSを再起動する場合

vpnserverサービスを起動する場合

 

ここまでで、一旦Linux側(Raspbian jessie)側での操作は終わりです。(最後にまた少し操作しますが…)

次は SoftEther VPN Serverの設定に入ります。

Raspberry Pi 2 Model B で L2TP/IPSec VPNサーバを構築してみた(その2)に続きます。

AD

この記事が興味深かった場合は、SNSボタンでシェアいただけると嬉しいです。

関連記事

Raspbian(jessie)の初期設定と日本語化を実施する

本記事は、Raspberry Pi 3に対応しています。 さて先日はRaspberry Pi

記事を読む

Raspberry Pi 2 Model B で L2TP/IPSec VPNサーバを構築してみた(その2)

本記事は、Raspberry Pi 3に対応しています。 Raspberry Pi 2 Mod

記事を読む

Raspberry Pi 2 Model B で L2TP/IPSec VPNサーバを構築してみた(その3)

本記事は、Raspberry Pi 3に対応しています。 さて、 Raspberry Pi

記事を読む

Raspbian jessie で”rsyslogd-2007: action ‘action 17’ suspended, next”が出力される場合の対策

Raspbian jessie で /var/log/messages を確認してみると沢山出力され

記事を読む

Raspbian jessie でroot宛のメールをGmailに転送する

Linuxでは、エラーなどのメールがroot宛に届くため、root宛のメールをチェックしておく必要が

記事を読む

Comment

  1. watappo より:

    /etc/network/interfacesの設定に関して,サンプルソースの「★」を「#」に置き換えるだけだとブリッジを作成できない点に注意したほうがよさそうですね。
    従って,行頭コメントにするか,コメント部分は削除するかする必要がありそうです。

    (ifconfigを叩いてもbr0が出てこなくて1時間ほど悩んだので,ご参考までに… プロの方であれば
    /etc/network/interfaces は行末コメントは未サポートということも常識なのだとは思いますが)

    • より:

      コメントありがとうございます。
      記事内の”★”部分は、説明するための私のコメントなので、「実際には入力しないもの」として記載していました。(普通/etc/network/interfaces内に日本語は書かないでしょうし、そのままコピペするような方は居ないだろうという私の思い込みです)
      watappoさんにコメントいただけたことで、意図しているように捉えてもらえるとは限らないということに気づくことができました。ありがとうございます。
      今後は、記載方法等工夫してみようと思います。

      • watappo より:

        理解を深めることもかねて,手打ちしたとき解説ページのコメントも一緒に入れておくようにしている習慣があるもので,引っかかってしまいました。

        それはさておき,管理人様の記事を参考にVPNサーバーをRasPiで立てたところ,名前解決ができなくなることに気が付きました。
        (私の環境だけかもしれませんが)

        10行目 gateway 192.168.0.1 と,
        11行目 bridge_ports
        の間に,
        dns-nameservers 8.8.8.8 8.8.4.4
        とでも書き込んでおくのが良いのかもしれません。

Message

メールアドレスが公開されることはありません。

AD

Brocade SAN Switchのroot,factory,userユーザ無効化方法

Brocade SAN SwichのFablicOSには以下のデフォル

Brocade SAN Switchのデフォルトrootパスワード

Brocade SAN スイッチの rootパスワードを変更するために

Xperia Z3 Compact のバッテリーを交換する方法

私は Sony の Xperia Z3 Compact をとても気に入

東芝 Dynabook Satellite R35 のメモリを16GBに増設してみた

私はサブノートPCとして東芝 Dynabook Satellite R

結局Raspberry Pi 2 Model Bのケースを購入した

先日Raspberry Pi 2 Model Bのケースを自作してみま

→もっと見る

PAGE TOP ↑