【Raspberry Pi】pivpnをインストール

ラズパイはARMプロセッサなわけですが、pritunlというVPNサーバOSSはARMに対応していませんでした。がっかり。

これまでSoftEtherVPN【Raspberry Pi】SoftEtherでVPNを参照)をやっていましたが、tapデバイス設定が割と面倒で、これをやらないとネットワーク内にVPNサーバとなった自分自身がVPNネットワークに表示されないという、結構面倒な仕様でした。

というわけで、pivpnのインストールに挑戦。

あ、使うのはラズパイ3です。

 

※WireGuardに対応したようなので、そちらも記載しました。

engetu21.hatenablog.com

1.PIVPNとは

まぁ、書いてある通りですね。簡単にOpenVPNをラズパイでインストールできるとのこと。

 

2.インストール

インストールは以下のコマンドで実行。TeratermなどでSSHで入って打てばOK

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

 

勝手にデータをダウンロードしてインストールが始まります。

f:id:engetu21:20171016224113j:plain

 

ウェルカム画面。了解を押すことで次へ。

f:id:engetu21:20171016224234j:plain

 

自身のIPアドレスデフォルトゲートウェイのアドレスが表示される。

事前に静的IPアドレスを割り当ててるので、このまま「はい」を選択。

f:id:engetu21:20171016224435j:plain

 

f:id:engetu21:20171016224841j:plain

「ルータがこのIPをデバイスに割り当てようとする可能性があり、競合が発生する可能性があります。 しかし、ほとんどの場合、ルータはスマートではありません。
あなたが心配している場合は、手動でアドレスを設定するか、必要なIPが含まれないようにDHCP予約プールを変更してください。 DHCP予約を使用することもできますが、これを行う場合は、静的アドレスを設定することもできます。」

by Google翻訳

 

というか、了解しか押せないので、次に進む。

ovpn構成を保持するローカルユーザーを選択せよと言われます。今はデフォルトユーザの「pi」しかいないので、それを選択。

f:id:engetu21:20171016225012j:plain

f:id:engetu21:20171016225215j:plain

 

f:id:engetu21:20171016225449j:plain

「このサーバーには少なくとも1つのポートがインターネットに接続されているため、無人アップグレードを有効にすることをお勧めします。この機能は毎日セキュリティパッケージの更新をチェックし、必要なときに適用します。 定期的に再起動する必要がある更新プログラムを完全に適用するため、サーバーを自動的に再起動しません。」

by Google翻訳

 

これも了解しか押せないので、次に進む。

f:id:engetu21:20171016225624j:plain

「このサーバーに対するセキュリティパッチの無人アップグレードを有効にしますか?」

by Google翻訳

 

したほうがよさそうかな?一応「はい」にします。

 

f:id:engetu21:20171016225829j:plain

一度メニュー?画面が閉じ、元のコンソール画面へ。終了するとまたメニュー画面へ。

 

f:id:engetu21:20171016230000j:plain

プロトコルを選択します(選択するスペースを押してください)。 TCPが必要な理由がわかっている場合は、TCPを選択してください。」

by Google翻訳

 

ふむ?たぶんVPN通信をUDPでやるかTCPでやるかということかな?TCPは3ウェイハンドシェイクとかもろもろの理由で遅いだろうからUDPを選択。

 

f:id:engetu21:20171016230329j:plain

ポートの指定。特に変更なしでそのままにします。

 

f:id:engetu21:20171016230522j:plain

暗号化のレベル。長くなると処理も遅くなるのでデフォルトの2048を選択。

 

f:id:engetu21:20171016230709j:plain

プライベートキーを自動で生成してくれる。

 

f:id:engetu21:20171016230831j:plain

「サーバーキー、Diffie-Hellmanキー、およびHMACキーが生成されます。」

by Google翻訳

 

一度メニュー画面を終了させ、キーを生成してくれる。

f:id:engetu21:20171016230959j:plain

 

なお、キーの生成はラズパイの性能もあってなかなか時間がかかる模様です。大体6~7分程度。

 

f:id:engetu21:20171016232347j:plain

「クライアントはパブリックIPまたはDNS名を使用してサーバーに接続しますか(選択するためにスペースを押してください)?」

by Google翻訳

 

ここは以前から使ってるieserverのドメインを使います。ので、DNS Entryを選択。

 

f:id:engetu21:20171016232525j:plain

ドメイン名入力。

 

 

f:id:engetu21:20171016232627j:plain

DNSプロバイダーの選択。無難にGoogleで。

 

f:id:engetu21:20171016232749j:plain

「次に、 'pivpn add'を実行してovpnプロファイルを作成します。 他に何ができるのかを見るには 'pivpn help'を実行してください! インストールログは/etc/pivpnにあります。」

by Google翻訳

 

 

f:id:engetu21:20171016232925j:plain

「インストール後に再起動することを強くお勧めします。 今すぐ再起動しますか?」

by Google翻訳

 

断る理由がないので、再起動!

 

3.プロファイルの作成

OpenVPNはプロファイルファイルを作り、それをクライアントソフトで指定することで簡単にアクセスできるようになります。

というわけで、2つほど説明の画面で出てきたコマンドをコンソールで実行。

$ pivpn add

f:id:engetu21:20171016233626j:plain

クライアント名とパスフレーズの入力を求められるので、好きなものを設定。

コマンドを実行したディレクトリ(たぶん)にovpnsディレクトリとその中に「クライアント名.ovpn」が生成されるため、あとはovpnファイルをスマホなどに移動させ、OpenVPNアプリで実行させるのみです。

 

つながらない場合は、ルータの1194UDPポートに対してのファイアウォール設定やラズパイへのFORWARD設定を見直しましょう。

 

※2018/12/30追記

一度作成したクライアントを再作成したい場合は一旦削除して作成を行います。

まずはクライアントを確認。

$ pivpn -l

: NOTE : The first entry should always be your valid server!

::: Certificate Status List :::
:: Status || Name ::
Valid :: server_U6ExeXoLIBIVDWO4
Valid :: ******** ←追加したクライアント

-rオプションでクライアントを指定して削除を実行

$ pivpn -r ********

::: Revoking certificate '********'.
Using configuration from /etc/openvpn/easy-rsa/openssl-easyrsa.cnf
Revoking Certificate 961AFAD9BE48F1C9C1B9D2FADC42D36B.
Data Base Updated

Note: using Easy-RSA configuration from: ./vars
Using configuration from /etc/openvpn/easy-rsa/openssl-easyrsa.cnf

An updated CRL has been created.
CRL file: /etc/openvpn/easy-rsa/pki/crl.pem


::: Certificate revoked, and CRL file updated.
::: Removing certs and client configuration for this profile.
::: Completed!

あとは pivpn addでクライアントを再作成すればOK。 

※追記終わり