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