はじめに
外出中に自宅LANにアクセスしたい!この願望を叶えます。
私のマンションの回線はv6プラスで、固定グローバルIPはおろか、ポート解放もできません。
なので、クラウド環境をフロントに配置して、自宅からクラウドの環境にトンネリングすることで外部から安全に接続できるようにしました。
最終的な構成のイメージは以下の通りです。
自宅NWとConoHaが常時VPNトンネルで接続され、外出先からはConoHa上にL2TPでVPNトンネルを開通することで、自宅LANに参加できます。
目次
- はじめに
- 目次
- 動作環境
- SoftEther ServerとSoftEther Bridgeのインストール
- SoftEther VPN Server Managerダウンロード
- SoftEther Serverセットアップ
- SoftEther Bridgeセットアップ
- IPアドレスの設定
- 疎通確認
- おわりに
- 参考サイト
動作環境
- Raspberry Pi 3B+ Rasbian 9.3 (SoftEther Bridge用)
- ConoHa CentOS 8.1 (SoftEther Server用)
- Windows 10 (Manager用)
SoftEther ServerとSoftEther Bridgeのインストール
公式のダウンロードセンターから、ダウンロードできます。
ConoHaのVPS上にSoftEther Server、ラズパイ上にSoftEther Bridgeをそれぞれインストールします。
インストール作業は、公式ドキュメントVPN Server の導入の通りにやれば簡単にできます。
SoftEther VPN Bridgeの手順は、こちらVPN Bridge の導入 を参考にどうぞ。
gccなどの依存パッケージは、自分でインストールする必要があるのは要注意です。
SoftEther VPN Server Managerダウンロード
これも公式のダウンロードセンターから、SoftEther VPN Server Manager(以降 Manager)のパッケージをダウンロードできます。
解凍したファイルのvpnsmgr.exeを起動して、手元のWindows 10からセットアップ作業をしていきます。
SoftEther Serverセットアップ
接続情報入力
Managerの新しい接続設定を押下して、SoftEther Serverに繋げます。
入力項目は下記の図のように、ホスト名には上記でSoftEther ServerをインストールしたサーバのIPアドレスを入力します。
仮想HUBの作成
[仮想HUBの作成]を押下し、新規の仮想HUBを作成します。
ユーザの作成
[仮想HUBの管理]>[ユーザの管理]>[新規作成]を順に押下します。
任意のユーザ名とパスワードを入力します。最後に[OK]を押して確定です。
ローカルブリッジ設定
仮想HUBと実際のNICを繋ぐための設定です。
ConoHaのVPSは、NICが1つしかないのでtapデバイスとブリッジ接続させます。
[ローカルブリッジ接続]を押下し、下記の図を参考に入力します。
入力できたら[ローカルブリッジを追加]を押下して追加します。
L2TPサーバの有効化
iPhoneやPCから、VPN接続できるように[IPsec / L2TP 設定]>[L2TP サーバ機能を有効にする]にチェックを入れます。
IPsecの事前共有鍵のパスワードを入力できたら、[OK]を押下する。
SoftEther Bridgeセットアップ
接続情報入力
SoftEther Serverと同様の手順のため割愛
ローカルブリッジ設定
SoftEther Serverと同様の手順で追加しますが、1つ注意点があります。
既に自宅ルータと接続しているNICと同じものを選択すると、正常に通信ができません。
仮に無線のwlan0を既に使用しているなら、eth0など別のNICを選んでください。
自分は未検証ですが、おそらくtapデバイスでも可能です。
私はwlan0で自宅のWi-Fiに繋いでるので、使用していないeth0を選択しました。
eth0を選んだ場合は、写真のようにLANケーブルで自宅のルータと繋いであげます。
カスケード接続
[仮想HUBの管理]>[カスケード接続の管理]を順に押下します。
[新規作成]から、上記手順でセットアップしたSoftEther Serverの情報を入力します。
入力後、状態がオンライン(接続済み)になっていれば成功です。
これで自宅LAN(RaspberryPi)とConoHaのVPS間で、L2のVPNトンネルができました。
IPアドレスの設定
SoftEther Server
L2レイヤーでの接続ができましたが、IPアドレスを適切に設定してあげないとIP通信ができません。
SoftEther Server(ConoHa)側でifconfigを叩くと、tap_(tapデバイス名)があるはずです。
こいつに自宅LANのIPアドレスを割り当てます。下記のように、ifcfgコマンドで割り当てられます。
#!/bin/bash
# case Static IP
TAP_IF="tap_vpn" # ここは自分の環境に合わせてください
# 30sec Loop
for i in {1..30}
do
sleep 1
ip tap | grep --quiet ${TAP_IF}
STATUS=$?
if [ "${STATUS}" == "0" ]
then
# 自宅と同セグメントのIPアドレス
ifcfg ${TAP_IF} add 192.168.10.254/24
break;
fi
done
exit 0
#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
STATIC_IP=/usr/local/vpnserver/setting_ip.sh # 追加
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
$STATIC_IP # 追加
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
$STATIC_IP # 追加
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
上記のスクリプトを、Softetherのスタートアップスクリプトに組み込みます。
SoftEther Bridge
公式ドキュメントの推奨通り、ローカルブリッジで使用するNICにはIPアドレスが振られないようにします。
Debian系のOSなら、下記の通り/etc/dhcpcd.confに2行追加します。
追加できたら、ネットワークの再起動かrebootで設定を適用させます。
SoftEther公式ドキュメント
ローカルブリッジ用に、コンピュータに用意したローカルブリッジ専用 LAN カードがある場合には、パフォーマンスを向上させるために、その LAN カードには TCP/IP プロトコルや他のプロトコルスタックなどを「無効」にすることを推奨します。
$ vi /etc/dhcpcd.conf
# eth0 configuration
interface eth0
static ip_address=0.0.0.0
疎通確認
全ての設定ができたら、pingコマンドで疎通確認してみてください。
$ ping 192.168.10.254 // SoftEther ServerのIPアドレス宛
注意点ですが、ローカルブリッジで使用しているNIC(この場合は、eth0)に割り当てられるIPを無効にしてあげないと正常に通信できません。
公式ドキュメントで下記のように説明されています。
SoftEther公式ドキュメント
Linux オペレーティングシステム内部での制限事項により、VPN 側 (仮想 HUB 側) からローカルブリッジしている LAN カードに割り当てられる IP アドレスに対して通信を行うことはできません。
おわりに
記事に書いてみると、本当に少ない手順でVPN環境が作成できましたね。
しかし、ネット検索で出てくる記事の通りにやってもIPの通信疎通できなかったので、今回は自分が実施した手順を投稿させていただきました。
自分が出来なかったのは、以下のポイントで不適切な設定をしていたからです。
- SoftEther ServerとSoftEther BridgeのIPアドレスの設定
- ローカルブリッジで使用するNICの設定
- 外部接続時用にSecureNAT機能を有効にしていた
(自宅ルータから、IPアドレスを取得するので不要)
ここまでで力尽きて、記事では割愛してますが、同セグメント化しているので、
ファイアウォールの設定を適切にしてあげないと、クラウドを突破されるといきなり自宅LANまで侵入されます。
私は、インターネットからのSSH接続を完全に拒否してVPNトンネル開通に必要な443ポートだけ空けてます。
なので、外部からはVPN経由でしか入れないようになってます。
誰かの参考になれば幸いです(。・ω・。)