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

2019年11月5日

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

Raspberry Pi 2 Model B で L2TP/IPSec VPNサーバを構築してみた(その1)ではブリッジデバイスへのIPアドレスの付与、Raspbian jessieへのSoftEtherインストールを実施しました。

その2では、引き続きSoftEther VPN Serverの設定を進めていきます。

SoftEther VPN Serverの管理ソフトウェアをダウンロードする

Raspberry Pi 2 MODEL BでVPNサーバを構築」と思い立った時点で、「Linuxで設定する!」という考えになっていると思いますが、ここからは、なんと、WindowsOSから管理プログラムを起動して設定します。

SoftEtherのダウンロードサイトから、「SoftEther VPN Server Manager for Windows」をダウンロードします。

http://www.softether-download.com/ja.aspx

ダウンロードする際の選択肢は、画像を参考にしてください。

softether-manage-download

SoftEther VPN サーバー管理マネージャを起動する

ダウンロードしたファイルを解凍して、vpnsmgr.exeを起動します。SoftEther VPN サーバー管理マネージャが起動します。

新しい接続設定をする

vpn-01

新しい接続設定 をクリックします。

接続設定名 と ホスト名(ラズベリーパイのIPアドレス)を入力してOKをクリックします。

vpn-02

SoftEther VPN Serverに接続する

登録した名前とIPアドレスを選択して 接続 をクリックします。

vpn-03

簡単セットアップを実施する

Wizardが起動してきますので、以下のように進めます。

リモートアクセスVPNサーバーを選択して次へをクリックします。

vpn-04

はい をクリックします。

vpn-05

任意の名前ですので、VPNとでも入力してOKを押します。

vpn-06

ダイナミックDNS名を好きに決めて、閉じるをクリックします。

vpn-07

L2TPサーバー機能を有効にする (L2TP over IPsec)を選択します。
先ほど入力したVPNを選択します。
事前共有鍵(パスワードみたいなもの)を決めて、OKをクリックします。

vpn-08

VPN Azureは使わないので、無効にする を選択してOKをクリックします。

vpn-09

ユーザを作成するをクリックします。

vpn-10

VPN接続時のユーザ名とパスワードを決めます。

vpn-11

確認画面でOKをクリックします。

vpn-12

作成したユーザが表示されますので、閉じる をクリックします。

vpn-13

ローカルブリッジの設定で、eth0とかbr0を選択して 閉じる をクリックします。(この設定は後で消すので何でもいいです。)

vpn-14

初期設定が終わって、メニュー画面が出てきました。

これから仮設定だったところ等を本番の設定に変更していきます。

本番設定

仮想HUBを作り直す

画面左下らへんの、ローカルブリッジ設定をクリックします。

vpn-15

先ほど設定したVPNを選択し、ローカルブリッジの削除をクリックします。(今までのは仮設定だったため)

vpn-16-del

「Linuxの残念な仕様を回避し、VPN接続しながらラズベリーパイにネットワーク接続するために、ブリッジデバイスに仮想HUBをブリッジする」ということをしたいので、以下のように設定して、ローカルブリッジを追加 をクリックします。

  • 仮想HUB名:VPN
  • 作成する種類:新しいtapデバイスとのブリッジ接続
  • 新しいtapデバイス名:vlan

vpn-16

仮想HUB名:VPN ブリッジ先:vlan 状態:動作中 と表示されればOKですので、閉じる をクリックします。

vpn-17

確認画面が出たらOKをクリックします。

vpn-18

確認画面が出たらOKをクリックします。

vpn-19

仮想HUBの管理画面を開く

管理画面に戻って、作り直した仮想HUB「VPN」をクリックして、「仮想HUBの管理」をクリックします。

vpn-15

管理画面がでてきました。以後、ユーザ追加や設定変更はこの画面から実施する感じです。

vpn-20

仮想HUBのプロパティ

仮想HUBの管理画面の、左上から4個下の、「仮想HUBのプロパティ」を開くとこんな設定メニューが出ます。

vpn-21

メッセージの設定をクリックするとメッセージを設定できます。(任意です)

vpn-22

ログ保存設定

仮想HUBの管理 画面の中央少し右の「ログ保存設定」をクリックします。

vpn-20

期間や、保存したいログの設定を実施します。

vpn-23

セキュリティ強化(暗号化)設定

管理マネージャまで戻って、中央少し右の、「暗号化と通信関係の設定」をクリックします。

vpn-15

デフォルトの暗号化アルゴリズムは弱いので、暗号化アルゴリズム名を「DHE-RSA-AES256-SHA」に変更しておくと良いです。

vpn-24

OpenVPN/MS-SSTP設定

管理マネージャまで戻って、右下の、「OpenVPSN/MS-SSTP設定」をクリックします。

vpn-15

使わないので、チェックを外してOKを押します。

vpn-26

 

以上でWindowsOS側での設定は完了です。

ここからRaspberryPi(Raspbian jessie)側での操作に戻ります。

起動スクリプトを作り直す

先ほど、WindowsOSで、SoftEtherの管理ツールを使って、tapデバイスを使った仮想HUBを作りましたので、vpnserverの起動スクリプト内に、tapデバイスをブリッジデバイスbr0にブリッジする設定を追記します。

(これをしないと、VPN接続時しながらRaspberryPi上のリソースに接続できない)

chkconfigからの削除

編集する前に、chkconfig から解除しておきます。

# chkconfig --del vpnserver

/etc/init.d/vpnserverを編集

/etc/init.d/vpnserverを以下のように編集します。重要なのは、vpn_start()内の、tap= の部分ですが、今まで記事のとおりに設定している場合は、コピペでイイです。

# vi /etc/init.d/vpnserver

#!/bin/sh
### BEGIN INIT INFO
# Provides:       vpnserver
# Required-Start: $local_fs $network
# Required-Stop:  $local_fs $network
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Description:    SoftEther VPN Server
### END INIT INFO

DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver

vpn_start() {
        ${DAEMON} start
        sleep 2
        tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'` tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
        brctl addif br0 ${tap}
}

vpn_stop() {
        ${DAEMON} stop
}

test -x ${DAEMON} || exit 0

case "$1" in
start)
        vpn_start
        touch ${LOCK}
        ;;
stop)
        vpn_stop
        rm ${LOCK}
        ;;
restart)
        vpn_stop
        sleep 3
        vpn_start
        ;;
*)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

exit 0

chkconfigに再登録

再度chkconfig に登録して、有効化します。

# chkconfig --add vpnserver

# chkconfig vpnserver on

OSを再起動

動作確認をするために、OSを再起動します。

# reboot

tapデバイスtap_vlanの確認

softetherが起動したら、tap_vlanもbr0にブリッジされます。(起動スクリプトにそのように仕込んでいます)

br0に、eth0とtap_vlanがブリッジされているので、結果として、vpn接続時のtap_vlanのネットワークからeth0のネットワークに接続できるようになっているはずです。

ifconfig -a コマンドで確認すると、tap_vlanが存在することが分かります。

root@raspberry:~# ifconfig -a
br0 Link encap:イーサネット ハードウェアアドレス 00:xx:xx:xx:xx:xx
inetアドレス:192.168.0.20 ブロードキャスト:192.168.0.255 マスク:255.255.255.0
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 メトリック:1
RXパケット:3665 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:3691 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:483577 (472.2 KiB) TXバイト:596296 (582.3 KiB)

eth0 Link encap:イーサネット ハードウェアアドレス 00:xx:xx:xx:xx:xx
inetアドレス:169.254.xx.xx ブロードキャスト:169.254.255.255 マスク:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:3665 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:3800 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:483577 (472.2 KiB) TXバイト:659163 (643.7 KiB)

tap_vlan Link encap:イーサネット ハードウェアアドレス 00:xx:xx:xx:xx:xx
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:18 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:500
RXバイト:0 (0.0 B) TXバイト:3380 (3.3 KiB)

 

長かったですが、これでL2TP/IPSecのVPNサーバの構築が完了です。

早速スマホ等を使って接続テストをしてみたいところですが、まだルータのポート開放設定が残っていますので、実施しましょう。

ルーターの設定

L2TP/IPSec を使用する場合は、500(UDP) と4500(UDP) の2つのポートを開放する必要があります。
この2つのポートに対する通信をRaspberryPiのIPアドレスにポートフォワーディングするように設定をルーター側で実施します。

ルーターによって設定方法が違うので、ここでは解説できませんが、ルーターにログインすれば、フィーリングで設定できると思います。

「ポートマッピング」や、「ポートフォワーディング」等のキーワードの設定を探して、設定しましょう。

設定後は、ルーターも再起動しておきましょう。

 

さて、これで設定が全て終わりました。

スマホからの接続テスト

最後はスマホ等からの接続テストを実施します。

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