ルータの設定を変更できない環境でVPNを構築する方法
背景と問題
社内や, 学内のLANに外から接続したいことがあります. ですが, 一般的に, 社員, 学生が社内や学内のルータの設定は変更できません. そのため, 外からのSSH接続や, VPN接続に必要となるポート開放, ポートフォーワーディング(ポート転送)設定を変更できず, 外から接続できません.
そこで, 本稿ではこの問題を解決するため, ngrokなどのトンネルサービスを使用して, LAN側に立ち上げたVPNサーバへ外から接続し, 社内, 学内LANに接続します.
構成
ラズパイ
VPNサーバを動かすためのマシン. 常に電源をつけておきます.
pivpn
ラズパイでVPNサーバを動かすためのパッケージです. pivpnは, 簡単にラズパイでOpenVPNをインストールできるものです.
ngrok
手順
ラズパイにVPNサーバをインストール
今回使用するのは, pivpn
と呼ばれるものです.
インストールの手順は, pivpn公式サイトのとおり, 以下のコマンドのみでインストールできます.
curl -L https://install.pivpn.io | bash
あとは, ウィザードに従って設定を進めていきますが, 以下のことに注意してください.
- プロトコル選択では, TCPを選択してください
ngrok
で, UDPはサポートされていません. default OpenVPN Port
で表示されているポート番号を覚えておきます.VPNサーバに接続する際に必要です.
- カスタム検索ドメイン
Custom Search Domain
を持っていないときは,NO
を選択
pivpnでユーザ追加
pivpnインストール後, 以下のコマンドを実行します.
pivpn add
作成するユーザの名前とパスワードを設定します.
フォルダhome/pi/ovpns
に作成されたプロファイル{username}.opvn
を手持ちのパソコンにコピーします.
ラズパイにngrokをインストール
基本的な手順はngrok setupを参考にします.
openVPN client を手持ちのパソコンにインストール
OpenVPN ダウンロードサイトから, インストーラをダウンロードし, インストールします.
ngrokの起動
ラズパイで以下のコマンドを実行しngrokを起動します.
./ngrok tcp {ポート番号}
{ポート番号}
は, pivpnのセットアップ時に覚えたポート番号default OpenVPN Port
です.
ここで, 表示されているForwarding: tcp://0.tcp.ngrok.io:{ngrok側ポート番号} -> localhost:{vpnサーバ側ポート番号}
の項目を覚えておきます.
openVPNプロファイルの編集
"pivpnでのユーザ追加"で作成されたプロファイルを変更します. メモ帳などの編集ソフトでファイルを開いたのち, remote
の行を探します.
remote xxx.xxx.xxx.xxx xxx
この行を, 先ほど"ngrokの起動"で覚えたForwarding
の設定に置き換えます.
remote 0.tcp.ngrok.io {ngrok側ポート番号}
VPNサーバへの接続
最後に, 手持ちのパソコンからラズパイへVPN接続を行います.
手持ちのパソコンとラズパイを異なるLANに置きます. 手持ちのパソコンのみ携帯回線を使うのもいいでしょう.
手持ちのパソコンで起動しているOpenVPN-GUIに, 先ほど編集したプロファイルを読み込ませ, 接続を開始します.
パスワードが聞かれたのち, 問題がなければ接続できます.
- ラズパイ上でpivpnは起動していますか?
- 設定しているポートに間違いはありませんか?
- openVPNプロファイルの設定に間違いはありませんか?
- ^ "What is ngrok". ngrok. (accessed at 2020-3-1)