Raspberry Pi で VPN

UQ WiMAX はグローバル IP アドレスオプションに加入していたので固定 IP が使えていた。しかしコミュファ光は固定 IP のサービスはやっていないようだ。

VPN で自宅ネットワークに接続したいので固定 IP の設定をした。以前もその方法について書いたがまとめ直してみる。

環境:Raspberry Pi 3 Model B+、Raspbian Jessie、iPad(VPN クライアント)

(1)No-IP のアカウントを作成。

Remote Access with Dynamic DNS – 100% DNS Uptime – No-IP
https://www.noip.com/remote-access

DNS の hostname を作成する。その際一旦現在の IP アドレスで登録する。

(2)Raspberry Pi に PiVPN をインストールする。

$ curl -L https://install.pivpn.io | bash

画面に従っていけばインストールができる。途中現在の Public IP を使うか別の Public DNS Name を使うかと聞かれるので、Public DNS を選択する。そして1で作成した hostname を入力する。

DNS Provider は Google にしておけばいい。

インストールが完了すると Raspberry Pi をリブートする。

(3)以下のコマンドで VPN クライアントを追加する。

$ pivpn add

Raspberry Pi の ovpns というディレクトリに .ovpn ファイルが生成されるので、それを iPad に転送し、OpenVPN Connect アプリで開く。その際 VPN クライアント作成時のパスワードを登録しておくと、以降 VPN 接続時に毎回パスワードを入力しなくてよい。

「OpenVPN Connect」をApp Storeで
https://apps.apple.com/jp/app/openvpn-connect/id590379981

(4)ルーターで Raspberry Pi に対して UDP の 1194 のポートを開ける。

(5)試しに OpenVPN Connect で VPN に接続してみる。WiFi ではなく 4G などの外部ネットワークから接続する。

***

(6a)IP アドレスの更新には Dynamic DNS Update Client (DUC) という No-IP の公式ソフトを使う方法があるが、IP アドレスの更新も Raspberry Pi で自動実行する設定をすることにする。(この方法は失敗したので、6b 以降に正しく動く方法を紹介する。)

$ wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz
$ sudo tar zxvf noip-duc-linux.tar.gz
$ cd noip-2.1.9-1/
$ sudo make
$ sudo make install

By typing the number associated with it. は Raspberry Pi の WiFi を使うので wlan0 を選択する。また、No-IP のログインユーザー名およびパスワードの入力を求められる。Please enter an update interval:[30] で IP アドレスの更新間隔(分)を設定する。

これで Raspberry Pi で IP アドレスを自動更新できるようになった。

以下のコマンドでプロセスを確認する。

$ sudo /usr/local/bin/noip2 -S

1 noip2 process active. と表示されるはずだが、No noip2 process active. と表示されれば以下のコマンドを実行して起動する。

$ sudo /usr/local/bin/noip2

(7a)以下のコマンドで Raspberry Pi 起動時に自動実行の設定をする。

$ sudo nano /etc/rc.local

最後の fi と exit0 の間の行に、/usr/local/bin/noip2 を追加する。

この方法で IP アドレスが自動更新されるはずが・・・・なぜか動かない。プロセスは実行されているが、更新がされないのだ。Raspberry Pi 起動時は更新される。でも指定分ごとにはできないのだ。試しに実行権限を付与するコマンドを叩いてみたが変わらず。

$ sudo chmod 755 /usr/local/bin/noip2

あるいは No-IP のメールアドレスではなくユーザー名で設定し直したが、それでも変わらなかった。

そこで別の方法で IP アドレスの更新をすることにした。

***

(6b)以下のコマンドで IP アドレスが更新されることを確認する。

$ curl "https://YOUR-USERNAME:YOUR-PASSWORD@dynupdate.no-ip.com/nic/update?hostname=YOUR-HOSTNAME"

IP アドレスが更新されたかどうかは、No-IP のサイト上で確認できる。

My No-IP :: Hostnames
https://my.noip.com/#!/dynamic-dns

パスワードを直接入力するのが嫌なら、以下のコマンドで暗号化する。

$ echo -n YOUR-USERNAME:YOUR-PASSWORD | base64

暗号化したパスワードで IP アドレスを更新してみよう。

$ curl -H "Authorization: Basic [暗号化したパスワード]" "https://dynupdate.no-ip.com/nic/update?hostname=YOUR-HOSTNAME"

うまく IP アドレスを更新できたら cron に登録してみよう(3時間ごとの0分に更新する場合)。

0 0-23/3 * * * curl -s -H "Authorization: Basic [暗号化したパスワード]" "https://dynupdate.no-ip.com/nic/update?hostname=YOUR-HOSTNAME" > /dev/null

この curl を使う方法だと自動更新もうまく動いた。

参考:
Raspberry Piで安く手軽に自宅用VPNサーバーを作る方法 – WPJ
https://www.webprofessional.jp/setting-up-a-home-vpn-using-your-raspberry-pi/

How to turn your Raspberry Pi into a Home VPN Server using PiVPN – Kamil’s Lab
http://kamilslab.com/2017/01/22/how-to-turn-your-raspberry-pi-into-a-home-vpn-server-using-pivpn/

[WiMAX][Raspberry Pi] Speed Wi-Fi HOME L01 で VPN – with a Christian Wife
https://wacw.cf/2019/01/11/pvn-with-wimax/

[Raspberry Pi] PiVPN – with a Christian Wife
https://wacw.cf/2017/05/20/raspberry-pi-pivpn/

No-IP の Dynamic DNS Update Client を使わない – with a Christian Wife
https://wacw.cf/2017/07/10/update-ipaddress-with-raspberrypi/

No-IP の Dynamic DNS Update Client を使わない2 – with a Christian Wife
https://wacw.cf/2017/07/11/update-ipaddress-with-raspberrypi-2/

raspberryPi にnoipでDDNSの設定をする方法 – 脳汁portal
http://portaltan.hatenablog.com/entry/2017/02/07/092205

How to Install the Dynamic Update Client on Linux
http://www.noip.com/support/knowledgebase/installing-the-linux-dynamic-update-client/

ダイナミックDNSのIP自動更新
http://tsuttayo.jpn.org/server/linux/ddns_update.php

No-IP(DDNS)
http://www2h.biglobe.ne.jp/hnakamur/technolab/linux/other/ddns/noip.htm

curl で No-IP のIPアドレスを更新する方法 – Qiita
https://qiita.com/ikesato/items/418090951cbcd05cb13d

curl コマンド 使い方メモ – Qiita
https://qiita.com/yasuhiroki/items/a569d3371a66e365316f

3時間毎のcron実行+α – by shigemk2
https://www.shigemk2.com/entry/2014/06/16/3%E6%99%82%E9%96%93%E6%AF%8E%E3%81%AEcron%E5%AE%9F%E8%A1%8C%2B%CE%B1