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 以降に正しく動く方法を紹介する。)
1$ wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz
2$ sudo tar zxvf noip-duc-linux.tar.gz
3$ cd noip-2.1.9-1/
4$ sudo make
5$ 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