メインメニューを開く

外部からSSHなどつなげられるようにしているけど…
iPadなどでVNCをつなぐ(SSHトンネリングVNC)しようとすると、なかなか使い勝手の良いアプリが見つからない…。
ってなわけで、OpenVPNでVPN環境を作ってみました。

目次

お約束

まずは、お約束で以下を実行

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

インストール

  1. インストールと言うかなんというか…以下を実行します。
    curl -L https://install.pivpn.io | bash
    
    これやると、無条件で実行しちゃうので注意!って話だけど…
    詳しくない人はどうやって注意したら良いのやら…

    一応こちらの公式サイトでも同じコマンドが書かれているので大丈夫ってことでwww
    インストール中にポイント(アドバイス?)が、ガンガン表示されながらのインストールになります。
    簡単に言えば、「PiVPN」はインストールしないけど、このツールを使えば「OpenVPN」がインストールされる…ってことだと思います。

  2. 起動直後
     
    「This installer will transform your Raspberry Pi into an OpenVPN server!」
    「このインストーラはあなたのラズベリーパイをOpenVPNサーバーに変えます!」

    はいはい、ありがとうございますwww
    単なるメッセージなので「了解」

  3. 静的IPアドレスが必要です
     
    「The PiVPN is a SERVER so it needs a STATIC IP ADDRESS to function properly.」
    「PiVPNはサーバーなので、正しく機能するにはSTATIC IP ADDRESSが必要です。」
    「In the next section, you can choose to use your current network settings (DHCP) or to manually edit them.」
    「次のセクションでは、現在のネットワーク設定(DHCP)を使用するのか、手動で編集するのかを選択できます。」

    この手順は静的IPを振っている前提で話が進みます…。
    まぁ同じくメッセージなので「了解」

  4. 静的IPアドレスの確認
     
    「do you want to use your current network settings as a static address?」
    「現在のネットワーク設定を静的アドレスとして使用しますか?」

    IPアドレスを固定している場合は「はい」、固定していない場合は「いいえ」を選択します。
    「いいえ」を選択した場合は、おそらくIPアドレスを固定する画面に遷移するかと思います

  5. 注意書き…
     
    「It is possible your router could still try to assign this IP to a device, which would cause a conflict.」
    「ルーターがこのIPをデバイスに割り当てようとしている可能性があり、これが競合を引き起こす可能性があります。」
    「But in most cases the router is smart enough to not do that.」
    「しかし、ほとんどの場合、ルーターはそれを行わないほどスマートです。」
    「If you are worried, either manually set the address, or modify the DHCP reservation pool so it does not include the IP you want.」
    「気になる場合は、手動でアドレスを設定するか、DHCP予約プールを修正して必要なIPが含まれないようにします。」
    「It is also possible to use a DHCP reservation, but if you are going to do that, you might as well set a static address.」
    「DHCP予約を使用することも可能ですが、そうする場合は、静的アドレスを設定することもできます。」

    私はバッファローのwifiルーターを使用しているのですが、その場合DHCPで割り振られるIPアドレスの範囲を設定することができます。
    そこら辺を確認すると良いと思います。

  6. ovpnの設定を保持するユーザーについて
     
    「Choose a local user that will hold your ovpn configurations.」
    「ovpn設定を保持するローカルユーザーを選択してください。」

    次の画面へのメッセージです。
    「了解」を選択します。

  7. ユーザーの選択
     
    「Choose (press space to select):」
    「選択(選択するにはスペースを押します)」

    普段使用しているユーザーを選択すればよいかと思います。
    特に特別なユーザーを作成していない場合は、「pi」で問題ありません。

  8. 無人アップグレードについて
     
    「Since this server will have at least one port open to the internet, it is recommended you enable unattended-upgrades.」
    「このサーバーは少なくとも1つのインターネットへのポートを開くため、無人アップグレードを有効にすることをお勧めします。」
    「This feature will check daily for security package updates only and apply them when necessary.」
    「この機能はセキュリティパッケージの更新のみを毎日チェックし、必要に応じて適用します。」
    「It will NOT automatically reboot the server so to fully apply some updates you should periodically reboot.」
    「定期的に再起動する必要があるアップデートを完全に適用するために、サーバーを自動的に再起動することはありません。」

    無人アップグレードについてのメッセージです。
    VPNに乗り込まれるとなんでもできてしまうので、セキュリティリスクをできるだけ少なくすることが必要になります。
    そういう意味で、無人アップグレードはしておいたほうが良いかと思います。

  9. 無人アップグレードの確認
     
    「Do you want to enable unattended upgrades of security patches to this server?」
    「このサーバーへのセキュリティ修正プログラムの無人アップグレードを有効にしますか?」

    前出の通りで、有効にしたほうが良いかと思います。
    なので、「はい」を選択します。

  10. プロトコルの選択
     
    「Choose a protocol (press space to select). Please only choose TCP if you know why you need TCP.」
    「プロトコルを選択します(選択するにはスペースを押します)。 TCPが必要な理由がわかっている場合にのみTCPを選択してください。」

    基本的にはUDPがおすすめのようです。(TCPにすると遅くなるという記事も目にしました)
    なので「UDP」が選択されている状態で「了解」を選択します。

  11. デフォルトポート
     
    「You can modify the default OpenVPN port.」
    「デフォルトのOpenVPNポートを変更することができます。」
    「Enter a new value or hit 'Enter' to retain the default」
    「新しい値を入力するか、[Enter]を押してデフォルトを維持します」

    そのままでも良いかもしれませんが、セキュリティを考えると変更した方が良さそうです。
    (画面はデフォルトポートになっています)
    ipv6の場合は利用できるポートが限られているので、注意して変更してください。

    v6プラスのポート開放について説明

  12. ポートの確認
     
    「Are these settings correct?」
    「これらの設定は正しいですか?」

    正しければ「はい」間違っていたら「いいえ」を選択してください。
    「いいえ」を選択すると、ひとつ前の画面に戻ります。

  13. 暗号化鍵の説明
     
    「OpenVPN 2.4 brings support for stronger authentication and key exchange using Elliptic Curves, along with encrypted control channel. 」
    「OpenVPN 2.4は、暗号化された制御チャネルとともに、楕円曲線を使用したより強力な認証と鍵交換のサポートをもたらします。」
    「If your clients do run OpenVPN 2.4 or later you can enable these features, otherwise choose 'No' for best compatibility.」
    「クライアントがOpenVPN 2.4以降を実行している場合は、これらの機能を有効にできます。それ以外の場合は、最高の互換性を得るために[いいえ]を選択します。」
    「NOTE: Current mobile app, that is OpenVPN connect, is supported.」
    「注:現在のモバイルアプリ、つまりOpenVPN connectはサポートしています。」

    セキュリティを高めたいなら「はい」、互換性を優先するなら「いいえ」を選択しろって言っています。
    楕円曲線DSA(ECDSA)」をサポートしているOpenVPNクライアントアプリを使用できるのであれば、「はい」を選択すれば良いです。
    そうでないなら「いいえ」を選択します。

    私は、標準の「OpenVPN connect」を使用する予定だったので、「はい」を選択しました。

  14. 鍵長の選択
     
    「Choose the desired size of your certificate (press space to select):」
    「証明書のサイズを選択してください(選択するにはスペースを押してください)。」
    「This is an certificate that will be generated on your system.」
    「これはあなたのシステムで生成される証明書です。」
    「The larger the certificate, the more time this will take.」
    「証明書が大きいほど、これにかかる時間が長くなります。」
    「For most applications, it is recommended to use 256 bits.」
    「ほとんどのアプリケーションでは、256ビットを使用することをお勧めします。」
    「You can increase the number of bits if you care about, however, consider that 256 bits are already as secure as 3072 bit RSA.」
    「気にする場合はビット数を増やすことができますが、256ビットはすでに3072ビットRSAと同じくらい安全であると考えてください。」

    鍵の長さは、長ければ長いほど安全になります。
    しかし、長くするほど鍵の生成に時間がかかるようになります。
    説明書きに「256ビットはすでに3072ビットRSAと同じくらい」書かれていますが、これが事実であれば256ビットで十分かもしれません。
    心配であれば、長くすればよいかと思います。

  15. 固定IPアクセスかドメインネームアクセスか?
     
    「Will clients use a Public IP or DNS Name to connect to your server(press space to select)?」
    「クライアントはパブリックIPまたはDNS名を使ってサーバーに接続しますか(選択するにはスペースを押します)?」
    プロバイダから固定IPが振られているのであれば、IPアドレスを選択します(ドメインを取得しているのであればDNSでも良いです)。
    プロバイダから振られているIPアドレスが変化する場合は、DDNSでドメインネームを取得しているかと思います。
    その場合はDNSを選択します。

    ipv6対応のDDNSとなると数が限られていますが…
    OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト
    がおすすめのようです。
    (というか、私もここを利用しています)

  16. DNSネームの設定
     
    「What is the public DNS name of this Server?」
    「このサーバーのパブリックDNS名は何ですか?」

    DDNSサーバーでドメインネームを取得している場合は、ここで入力します。
    IP固定の場合は、IPアドレスを入力する画面になるかと思います。
    入力したら「了解」を選択します。

  17. DNSネームの確認
     
    「Is this correct?」
    「これは正しいですか?」

    入力したドメインネームの確認画面です。
    正しければ「はい」を選択します。

  18. DNSプロバイダーの選択
     
    「Select the DNS Provider for your VPN Clients (press space to select).」
    「VPNクライアント用のDNSプロバイダを選択します(選択するにはスペースを押します)。」
    「To use your own, select Custom.」
    「自分のものを使用するには、[カスタム]を選択します。」

    VPNで使用するDNSプロバイダを選択します。
    私はよく知らなかったのですが、セキュリティにおおいに関わることなので、ちゃんと調べてから決定したほうが良さそうです。
    と言っても、私は無難にgoogleを選択しました。

  19. カスタム検索ドメインの追加
     
    「Would you like to add a custom search domain?」
    「カスタム検索ドメインを追加しますか?」
    「(This is only for advanced users who have their own domain)」
    「(これは自分のドメインを持っている上級ユーザー向けです)」

    カスタム検索ドメインを追加する場合は「はい」を選択します。
    そうでない場合は「いいえ」です。
    私は持っていないので「いいえ」を選択しました。

  20. プロファイル追加の方法
     
    「Now run 'pivpn add' to create the ovpn profiles.」
    「今度はovpnプロファイルを作成するために 'pivpn add'を実行してください。」
    「Run 'pivpn help' to see what else you can do!」
    「他にできることを確認するには、 'pivpn help'を実行してください。」

    インストール完了後にOpenVPNのプロファイルを追加する必要があるのですが、その方法を説明しています。
    「了解」を選択します。

  21. 再起動の確認
     
    「It is strongly recommended you reboot after installation.」
    「インストール後に再起動することを強くお勧めします。」
    「Would you like to reboot now?」
    「今すぐ再起動しますか?」

    再起動の確認です。
    まぁ、色々やってるので再起動したほうが良さそうです。
    なので、「はい」を選択します。

  22. 再起動の確認
     
    「The system will now reboot.」
    「システムが再起動します。」

    再起動のメッセージです。
    ここで「了解」すると、再起動が始まります。

ひとまず、これでインストール完了です。

OpenVPNプロファイルの追加

接続するクライアント用に、プロファイルを作成します。
インストール時のメッセージにあったように、以下のコマンドを実行します。

pivpn add

ユーザー名とパスワードを聞かれるので、それぞれ入力します。

そうすると以下のディレクトリに「[ユーザー名].ovpn」というファイルが作成されます。

~/ovpns

このファイルは、接続するクライアントに保存しますが…ipv6を使用している場合は、少し加工します。
(ipv4の場合はそのままで大丈夫です)

ipv6設定

OpenVPNプロファイルファイルと、サーバーの設定を変更します。

サーバー側

「/etc/openvpn/server.conf」を以下のように変更します。
【変更前】

proto udp

【変更後】

proto udp6


変更が完了したら、以下のコマンドでサービスを再起動します。

sudo service openvpn restart

クライアント側

プロファイルファイルを以下のように変更します。
【変更前】

proto udp

【変更後】

proto udp6

ルーターの設定

当然使用しているルーターによって設定のやり方は異なるのですが…。
私が使っている「WXR-2533DHP2」について一応載せておきます。

ポート開放

ポート開放は「ポート変換」画面から設定します(ややこしい…)
 
上記画面に以下の内容を入力して「新規追加」ボタンをクリックします。

  • グループ:新規追加横のテキストボックスは任意の名前
  • Internet側IPアドレス:「エアステーションのInternet側IPアドレス」
  • プロトコル:「TCP/UDP」を選択して「任意のUDPポート」に変更します。
    そして、テキストボックスにインストール時に設定したポート番号(デフォルトは1194)を入力します。
  • LAN側IPアドレス:OpenVPNをインストールしたRaspberry PiをIPアドレスを設定します。
    (ipv6使用時でもipv4アドレスで問題ありません)
  • LAN側ポート:空欄

ポートを開放してもフィルタリングされてしまっては、外部と通信できません。
引き続き、フィルタリングの設定をします。

ipフィルタリング

ipv4でもipv6でも画面構成は変わりませんが、それぞれ別画面なので、どちらで通信しているかによって使い分けてください。
 
上記画面に以下の内容を入力して「追加」ボタンをクリックします。

  • 動作:「通過」
  • 方向:「Internet->LAN」
  • 宛先:空欄(私は空欄にしているけど…宛先は設定したほうが良いのかな…)
  • プロトコル:「TCP/UDP」を選択して「任意のUDPポート」に変更します。
    そして、テキストボックスにインストール時に設定したポート番号(デフォルトは1194)を入力します。

参考サイト