ポートの開放することなく、Respberry Piに外からアクセスする（OpenVPN Cloud編）

[ポートの開放することなく、Respberry Piに外からアクセスする](https://qiita.com/moritalous/items/6ddd36f895ca656eac80)
[ポートの開放することなく、Respberry Piに外からアクセスする(2020年 AWS編)](https://qiita.com/moritalous/items/b3b194fe665aa5461ebc)
に続く第３段です。

今回はOpenVPNのクラウドサービス「OpenVPN Cloud」を使います。

OpenVPN Cloud | The Next-Generation Cloud VPN Solution
https://openvpn.net/cloud-vpn/

公式サイトから引用すると

>A managed service that provides secure networking, over the Internet, between an enterprise’s private networks and remote users in the form of a “VPN in the Cloud”.

DeepLによる翻訳

> 企業のプライベートネットワークとリモートユーザーの間で、インターネットを介して安全なネットワークを提供するマネージドサービスです。

とのことです。

**OpenVPNのサーバー機能**をサービス提供してくれますので、Raspberry Piはサーバーではなくクライアントとしてセットアップします。そのため、ポートの開放は不要です。

2020/11時点で3接続までは無料です。10台接続の場合は、$7.50/接続のようです。
https://openvpn.net/cloud-vpn/pricing/

# OpenVPN Cloudの作成と設定

https://cloud.openvpn.net/
にアクセスし、アカウントを作成しましょう。アカウント作成までに必要なものはメールアドレスのみで、クレジットカードなどは必要ありませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/23e803f8-98c9-00e0-49ff-e01ab59f0a7e.png)

アカウントが作成されたら、管理画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/435a1086-6436-ab9a-e0dd-17966816a20f.png)

メニューの「Users」を選択しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/35958641-c900-76c5-2a4d-19bd921c39ad.png)

初期状態では、Userは1つ（OpenVPN Cloudアカウントと同じもの）だけですが、プラスボタンでUserが追加できます。
Groupの設定はとりあえず「Default」でも良さそうです。

アカウントが作成できたら、「User Portal URL」に記載のあるURLにアクセスします。（OpenVPN Cloudアカウント作成時に指定したドメインです）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/b67691fe-739d-2fa3-3d55-0a576948e790.png)

ここに、先程自分で作成したUserでログインします。

ログイン後、クライアントアプリのインストール方法が表示されいます。
WindowsやMac、iOS、AndroidをOpenVPNに接続する方法はこの内容に従ってインストールしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/b95452ba-1c47-a029-ce56-22ae05029104.png)

Linux向けのクライアント設定方法もリンクがあるのですが、armアーキテクチャには対応してなかったので、以下の方法でRaspberry Piの設定をしましょう

# Raspberry PiのOpenVPN Client設定

もう少しブラウザでの設定が続きます。

ブラウザ上部の「MY DEVICES」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/2f8e5b6f-15ed-b242-3421-c6fb039a66fd.png)

作成したデバイスの「Download profile」ボタン（ダウンロードっぽいやつ）を押し、.ovpnファイルをダウンロードします。リージョンはお好きなところを選択してください。

さて、いよいよRaspberry Pi上での設定です。

OpenVPNのインストール
OpenVPNのクライアントだけのインストール方法はわからなかったので、サーバーも一緒にインストールしちゃいます。

```console
sudo apt install openvpn -y
```

OpenVPNのサーバーが起動する設定なので止めます。

```console
sudo systemctl disable openvpn.service
```

先程ブラウザで入手した.ovpnファイルを`/etc/openvpn/client.conf`として保存します。
拡張子も変えてしまいます。

OpenVPNのクライアントだけサービス起動するように設定し、起動します。

```console
sudo systemctl enable openvpn@client.service
sudo systemctl start openvpn@client.service
```

トンネルインターフェイスが作成されます

```terminal
pi@raspberrypi:~ $ ip addr show tun0
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 100.96.1.4/28 brd 100.96.1.15 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fd:0:0:8100::4/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::a644:7126:6232:c17b/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
pi@raspberrypi:~ $ 
```


これで、もう一つOpenVPNのクライアントをインストールした環境から接続ができるようになります。