グローバルIPアドレスがない環境でのVPN構築

SoftEther VPN Serverを使ってVPNを構築する方法を説明した記事を公開しております。

記事内の前提条件にも記載があります通り、グローバルIPアドレスが割り当てられていてポートの開放が可能な環境を想定した記事になっています。

しかし、上記に該当しない環境でもSoftEtherの機能を使えばVPNを構築できる場合がありますので紹介したいと思います。

目次

想定している環境

いわゆる「マンションタイプ」のネット回線です。
LAN内のルーターのWAN側にプライベートIPアドレスが割り当てられている場合はこれに該当するかと思います。
(うちはこのタイプです)

用意するもの

  • グローバルIPアドレスが割り当てられたVPS
  • LAN内で常時起動させておけるPC
  • SoftEtherの管理ツールを動かすためのWindows機

概要

結局のところ、グローバルIPアドレスは必須です。
大抵のVPSサービスにはグローバルIPアドレスがついてくるのでそれを使ってしまおうというわけです。

また、外からLAN内に入ってこられないのなら予めLAN内から経路を作っておきます。
そのために常時起動させておくPCが必要になります。
その常時起動PCから仮想的なLANケーブルをVPSに繋ぐイメージです。
これによりVPSで動いているVPN Serverと常時起動PCは同一LAN上に存在することになり、そのLAN上に存在する他のPCやNASとも繋がることになります。

構築手順(VPS側)

「SoftEther VPN Server」をインストールして設定を行います。
詳細な手順は前述の「SoftEther VPN Serverをインストールしてみた」と「SoftEther VPN ServerによるVPNの構築」を参考にしてください。

STEP

管理ツールでVPN Serverに接続し、「仮想HUBの管理」をクリックします。

仮想HUBの管理
STEP

「ユーザーの管理」をクリックします。

ユーザーの管理
STEP

「新規作成」をクリックして「ユーザー名」と「パスワード」を入力して常時起動PCをVPSで動いているVPN Serverに接続する際に使用するユーザーを作成します。

ユーザーの作成

以上でVPS側の設定は完了です。
前述の記事との相違点はVPNに接続する際に使用するユーザーとは別に「VPSで動いているVPN Serverに接続するユーザー」が存在することです。

構築手順(常時起動PC側)

今回は常時起動PCとして「Raspberry Pi 3 Model B」を使用しました。

STEP

「SoftEtherダウンロードセンター」から最新のインストール用パッケージファイルをダウンロードします。

コンポーネントは「SoftEther VPN Bridge」を選択し、プラットフォームとCPUは常時起動PCに合ったものを選択します。

ダウンロード
STEP

インストールから動作チェックまで行います。

下記の記事と同様の作業になります。
「vpnserver」が「vpnbridge」に変わる点だけご注意ください。

STEP

「すべてのチェックに合格しました」と表示されたらスクリプトの作成を行います。

init.dを使うように設定していきます。
/etc/init.dディレクトリの中に「vpnbridge」というファイルを下記の内容で作成します。

このファイルには実行属性を付与してください

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

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

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
STEP

vpnbridgeサービスを起動します。

sudo systemctl daemon-reload
sudo systemctl start vpnbridge
STEP

動作状況を確認します。

systemctl status vpnbridge
STEP

動作に問題ないようだったらサーバー起動時にvpnbridgeサービスも起動するように設定します。

sudo systemctl enable vpnbridge
STEP

管理ツールで常時起動PCのVPN Bridgeに接続します。

以下の記事の10番まで進めます。

STEP

「仮想HUBの管理」をクリックします。

仮想HUBの管理
STEP

「カスケード接続の管理」をクリックします。

カスケード接続の管理
STEP

「新規作成」をクリックします。

カスケード接続の新規作成
STEP

「接続設定名」には管理ツール上で判別するための名称、「ホスト名」にはVPSのグローバルIPアドレス(もしくはホスト名)、ポート番号には「5555」、仮想HUB名は前述のVPSで動いているVPN Serverの仮想HUB名(ホスト名を入力した段階で自動的に出てくると思います)を入力します。

「ユーザー名」と「パスワード」には構築手順(VPS側)のSTEP3で作成したユーザーの情報を入力します。

新しい接続設定
STEP

「オンライン」をクリックします。

カスケード接続を有効化

以上で完了です。

接続してみる

下記の記事の「各種デバイスでの設定」で接続できると思います。
もしうまく接続できない場合は常時起動PCで動いているVPN BridgeのSecure NAT機能(仮想NAT)を有効にしてみてください。


まとめ

いかがでしたでしょうか。
SoftEtherのおかげで様々な制限がある環境でも柔軟にVPNが構築できることが分かっていただけたかと思います。

この記事がグローバルIPアドレスの付与されない環境でのVPN構築の参考になれば幸いです。

VPSの通信量にはご注意ください。
従量課金になっている場合は想定外の請求額になる可能性があります。
また、常時起動PCの発熱にもご注意ください。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次