序章

ホテルやコーヒーショップのWiFiなどの信頼できないネットワークに接続しているときに、スマートフォンやラップトップからインターネットに安全かつ確実にアクセスしたいですか? 仮想プライベートネットワーク(VPN)を使用すると、信頼できないネットワークをプライベートネットワーク上にいるかのようにプライベートかつ安全にトラバースできます。 トラフィックはVPNサーバーから出て、宛先への移動を続けます。

HTTPS接続と組み合わせると、この設定により、ワイヤレスログインとトランザクションを保護できます。 地理的な制限や検閲を回避し、場所と暗号化されていないHTTPトラフィックを信頼できないネットワークから保護することができます。

OpenVPN は、幅広い構成に対応するフル機能のオープンソースのSecure Socket Layer(SSL)VPNソリューションです。 このチュートリアルでは、Droplet上にOpenVPNサーバーをセットアップし、Windows、OS X、iOS、Androidからのアクセスを構成します。 このチュートリアルでは、これらのセットアップのインストールと構成の手順を可能な限り簡単にします。

注: DigitalOcean DropletにOpenVPNサーバーをセットアップする場合は、多くのホスティングプロバイダーと同様に、帯域幅の超過に対して課金されることに注意してください。 このため、サーバーが処理しているトラフィックの量に注意してください。

詳細については、このページを参照してください。

前提条件

このチュートリアルを完了するには、Ubuntu16.04サーバーにアクセスする必要があります。

このガイドを開始する前に、root以外のユーザーにsudo権限を設定する必要があります。 Ubuntu 16.04初期サーバーセットアップガイドに従って、適切な権限を持つユーザーをセットアップできます。 リンクされたチュートリアルでは、ファイアウォールも設定されます。これは、このガイドで使用されていると想定しています。

開始する準備ができたら、sudoユーザーとしてUbuntuサーバーにログインし、以下を続行します。

ステップ1:OpenVPNをインストールする

まず、OpenVPNをサーバーにインストールします。 OpenVPNはUbuntuのデフォルトのリポジトリで利用できるため、インストールにaptを使用できます。 また、easy-rsaパッケージをインストールします。これは、VPNで使用するための内部CA(認証局)のセットアップに役立ちます。

サーバーのパッケージインデックスを更新し、必要なパッケージをインストールするには、次のように入力します。

  1. sudo apt-get update
  2. sudo apt-get install openvpn easy-rsa

これで、必要なソフトウェアがサーバー上にあり、構成する準備が整いました。

ステップ2:CAディレクトリを設定する

OpenVPNはTLS/SSLVPNです。 これは、サーバーとクライアント間のトラフィックを暗号化するために証明書を利用することを意味します。 信頼できる証明書を発行するには、独自の単純な認証局(CA)を設定する必要があります。

まず、make-cadirコマンドを使用して、easy-rsaテンプレートディレクトリをホームディレクトリにコピーできます。

  1. make-cadir ~/openvpn-ca

新しく作成されたディレクトリに移動して、CAの構成を開始します。

  1. cd ~/openvpn-ca

ステップ3:CA変数を構成する

CAが使用する値を構成するには、ディレクトリ内のvarsファイルを編集する必要があります。 そのファイルをテキストエディタで今すぐ開きます。

  1. nano vars

内部には、証明書の作成方法を決定するために調整できるいくつかの変数があります。 これらのいくつかについて心配する必要があるだけです。

ファイルの下部に向かって、新しい証明書のフィールドのデフォルトを設定する設定を見つけます。 次のようになります。

〜/ openvpn-ca / vars
. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"

. . .

赤の値を好きなように編集しますが、空白のままにしないでください。

〜/ openvpn-ca / vars
. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="[email protected]"
export KEY_OU="Community"

. . .

ここにいる間、このセクションのすぐ下にあるKEY_NAME値も編集します。これにより、件名フィールドにデータが入力されます。 これを簡単にするために、このガイドではserverと呼びます。

〜/ openvpn-ca / vars
export KEY_NAME="server"

終了したら、ファイルを保存して閉じます。

ステップ4:認証局を構築する

これで、設定した変数とeasy-rsaユーティリティを使用して、認証局を構築できます。

CAディレクトリにいることを確認してから、編集したvarsファイルを入手します。

  1. cd ~/openvpn-ca
  2. source vars

正しく供給された場合は、次のように表示されます。

Output
NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

次のように入力して、クリーンな環境で動作していることを確認します。

  1. ./clean-all

これで、次のように入力してルートCAを構築できます。

  1. ./build-ca

これにより、ルート認証局のキーと証明書を作成するプロセスが開始されます。 varsファイルに入力したので、すべての値が自動的に入力されます。 プロンプトからENTERを押すだけで、選択を確認できます。

Output
Generating a 2048 bit RSA private key ..........................................................................................+++ ...............................+++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [NY]: Locality Name (eg, city) [New York City]: Organization Name (eg, company) [DigitalOcean]: Organizational Unit Name (eg, section) [Community]: Common Name (eg, your name or your server's hostname) [DigitalOcean CA]: Name [server]: Email Address [[email protected]]:

これで、必要な残りのファイルを作成するために使用できるCAができました。

ステップ5:サーバー証明書、キー、および暗号化ファイルを作成する

次に、サーバー証明書とキーペア、および暗号化プロセス中に使用されるいくつかの追加ファイルを生成します。

OpenVPNサーバー証明書とキーペアを生成することから始めます。 これを行うには、次のように入力します。

:ここでserver以外の名前を選択した場合は、以下の手順の一部を調整する必要があります。 たとえば、生成されたファイルを/etc/openvpnダイレクトロイにコピーする場合は、正しい名前に置き換える必要があります。 また、後で/etc/openvpn/server.confファイルを変更して、正しい.crtおよび.keyファイルを指すようにする必要があります。

  1. ./build-key-server server

繰り返しになりますが、プロンプトには、渡した引数(server)とソースしたvarsファイルの内容に基づいたデフォルト値があります。

ENTER を押して、デフォルト値を自由に受け入れてください。 この設定のチャレンジパスワードを入力しないでください。 最後に、証明書に署名してコミットするために、2つの質問にyを入力する必要があります。

Output
. . . Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated

次に、他のいくつかのアイテムを生成します。 次のように入力することで、鍵交換中に使用する強力なDiffie-Hellman鍵を生成できます。

  1. ./build-dh

これが完了するまでに数分かかる場合があります。

その後、HMAC署名を生成して、サーバーのTLS整合性検証機能を強化できます。

  1. openvpn --genkey --secret keys/ta.key

ステップ6:クライアント証明書とキーペアを生成する

次に、クライアント証明書とキーのペアを生成できます。 これはクライアントマシンで実行し、セキュリティ上の目的でサーバー/ CAによって署名することができますが、このガイドでは、簡単にするためにサーバー上で署名付きキーを生成します。

このガイドでは単一のクライアントキー/証明書を生成しますが、複数のクライアントがある場合は、このプロセスを何度でも繰り返すことができます。 各クライアントのスクリプトに一意の値を渡します。

後でこの手順に戻る可能性があるため、varsファイルを再ソースします。 このガイドの最初の証明書/キーペアの値としてclient1を使用します。

パスワードなしでクレデンシャルを生成するには、自動接続を支援するために、次のようにbuild-keyコマンドを使用します。

  1. cd ~/openvpn-ca
  2. source vars
  3. ./build-key client1

代わりに、パスワードで保護された一連の資格情報を作成する場合は、build-key-passコマンドを使用します。

  1. cd ~/openvpn-ca
  2. source vars
  3. ./build-key-pass client1

ここでも、デフォルトを設定する必要があるため、ENTERを押すだけで続行できます。 チャレンジパスワードを空白のままにし、証明書に署名してコミットするかどうかを尋ねるプロンプトにyを入力してください。

ステップ7:OpenVPNサービスを構成する

次に、生成したクレデンシャルとファイルを使用してOpenVPNサービスの構成を開始できます。

ファイルをOpenVPNディレクトリにコピーします

まず、必要なファイルを/etc/openvpn構成ディレクトリにコピーする必要があります。

生成したばかりのすべてのファイルから始めることができます。 これらは、作成時に~/openvpn-ca/keysディレクトリ内に配置されました。 CA証明書、サーバー証明書とキー、HMAC署名、およびDiffie-Hellmanファイルを移動する必要があります。

  1. cd ~/openvpn-ca/keys
  2. sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn

次に、サンプルのOpenVPN構成ファイルを構成ディレクトリにコピーして解凍し、セットアップの基礎として使用できるようにする必要があります。

  1. gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

OpenVPN構成を調整する

ファイルが配置されたので、サーバー構成ファイルを変更できます。

  1. sudo nano /etc/openvpn/server.conf

基本構成

まず、tls-authディレクティブを探して、HMACセクションを見つけます。 「;」を削除して、tls-auth行のコメントを解除します。

/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret

次に、コメントアウトされたcipher行を探して、暗号化暗号に関するセクションを見つけます。 AES-128-CBC暗号は、優れたレベルの暗号化を提供し、十分にサポートされています。 「;」を削除して、cipher AES-128-CBC行のコメントを解除します。

/etc/openvpn/server.conf
cipher AES-128-CBC

この下に、auth行を追加して、HMACメッセージダイジェストアルゴリズムを選択します。 このためには、SHA256が適切な選択です。

/etc/openvpn/server.conf
auth SHA256

最後に、usergroupの設定を見つけて、先頭の「; 」を削除して、これらの行のコメントを解除します。

/etc/openvpn/server.conf
user nobody
group nogroup

(オプション)DNSの変更をプッシュして、VPNを介してすべてのトラフィックをリダイレクトします

上記の設定により、2台のマシン間にVPN接続が作成されますが、接続でトンネルを使用するように強制されることはありません。 VPNを使用してすべてのトラフィックをルーティングする場合は、DNS設定をクライアントコンピューターにプッシュすることをお勧めします。

これを行うには、VPNを介してすべてのWebトラフィックをリダイレクトするようにクライアントマシンを構成するいくつかのディレクティブのコメントを解除します。 redirect-gatewayセクションを見つけ、redirect-gateway行の先頭からセミコロン「;」を削除してコメントを解除します。

/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"

このすぐ下に、dhcp-optionセクションがあります。 繰り返しますが、両方の行の前から「; 」を削除して、コメントを解除します。

/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

これは、クライアントがDNS設定を再構成して、VPNトンネルをデフォルトゲートウェイとして使用するのに役立ちます。

(オプション)ポートとプロトコルを調整します

デフォルトでは、OpenVPNサーバーはポート1194とUDPプロトコルを使用してクライアント接続を受け入れます。 クライアントが存在する可能性のあるネットワーク環境が制限されているために別のポートを使用する必要がある場合は、portオプションを変更できます。 OpenVPNサーバーでWebコンテンツをホストしていない場合、ポート443は通常、ファイアウォールルールで許可されているため、一般的な選択肢です。

/etc/openvpn/server.conf
# Optional!
port 443

多くの場合、プロトコルがそのポートにも制限される場合。 その場合は、protoをUDPからTCPに変更します。

/etc/openvpn/server.conf
# Optional!
proto tcp

別のポートを使用する必要がない場合は、これら2つの設定をデフォルトのままにしておくことをお勧めします。

(オプション)デフォルト以外の資格情報を指す

以前に./build-key-serverコマンドで別の名前を選択した場合は、適切な.crtおよび.keyファイル。 デフォルトのserverを使用した場合、これはすでに正しく設定されているはずです。

/etc/openvpn/server.conf
cert server.crt
key server.key

終了したら、ファイルを保存して閉じます。

手順8:サーバーのネットワーク構成を調整する

次に、OpenVPNがトラフィックを正しくルーティングできるように、サーバーのネットワークのいくつかの側面を調整する必要があります。

IP転送を許可する

まず、サーバーがトラフィックを転送できるようにする必要があります。 これは、VPNサーバーに提供させたい機能にとって非常に重要です。

/etc/sysctl.confファイルを変更することで、この設定を調整できます。

  1. sudo nano /etc/sysctl.conf

内部で、net.ipv4.ip_forwardを設定する行を探します。 行の先頭から「」文字を削除して、その設定のコメントを解除します。

/etc/sysctl.conf
net.ipv4.ip_forward=1

終了したら、ファイルを保存して閉じます。

ファイルを読み取り、現在のセッションの値を調整するには、次のように入力します。

  1. sudo sysctl -p

UFWルールを調整してクライアント接続をマスカレードする

前提条件でUbuntu16.04初期サーバーセットアップガイドに従っている場合は、UFWファイアウォールを設置する必要があります。 ファイアウォールを使用して不要なトラフィックをブロックするかどうかに関係なく(ほとんどの場合、これを実行する必要があります)、サーバーに着信するトラフィックの一部を操作するには、このガイドのファイアウォールが必要です。 ルールファイルを変更して、クライアント接続を正しくルーティングするためのオンザフライの動的NATを提供するiptablesの概念であるマスカレードを設定する必要があります。

ファイアウォール構成ファイルを開いてマスカレードを追加する前に、マシンのパブリックネットワークインターフェイスを見つける必要があります。 これを行うには、次のように入力します。

  1. ip route | grep default

パブリックインターフェイスは「dev」という単語の後に続く必要があります。 たとえば、この結果はwlp11s0という名前のインターフェイスを示しており、以下で強調表示されています。

Output
default via 203.0.113.1 dev wlp11s0 proto static metric 600

デフォルトルートに関連付けられたインターフェイスがある場合は、/etc/ufw/before.rulesファイルを開いて、関連する構成を追加します。

  1. sudo nano /etc/ufw/before.rules

このファイルは、従来のUFWルールがロードされる前に配置する必要のある設定を処理します。 ファイルの先頭に向かって、下に強調表示された行を追加します。 これにより、natテーブルのPOSTROUTINGチェーンのデフォルトポリシーが設定され、VPNからのトラフィックがすべて偽装されます。

:下の-A POSTROUTING行のwlp11s0を、上記のコマンドで見つけたインターフェースに置き換えることを忘れないでください。

/etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0] 
# Allow traffic from OpenVPN client to wlp11s0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

# Don't delete these required lines, otherwise there will be errors
*filter
. . .

終了したら、ファイルを保存して閉じます。

デフォルトで転送されたパケットも許可するようにUFWに指示する必要があります。 これを行うには、/etc/default/ufwファイルを開きます。

  1. sudo nano /etc/default/ufw

内部で、DEFAULT_FORWARD_POLICYディレクティブを見つけます。 値をDROPからACCEPTに変更します。

/ etc / default / ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

終了したら、ファイルを保存して閉じます。

OpenVPNポートを開き、変更を有効にします

次に、ファイアウォール自体を調整して、OpenVPNへのトラフィックを許可します。

/etc/openvpn/server.confファイルのポートとプロトコルを変更しなかった場合は、ポート1194へのUDPトラフィックを開く必要があります。 ポートやプロトコルを変更した場合は、ここで選択した値に置き換えてください。

前提条件のチュートリアルに従うときにSSHポートを追加するのを忘れた場合に備えて、SSHポートも追加します。

  1. sudo ufw allow 1194/udp
  2. sudo ufw allow OpenSSH

これで、UFWを無効にしてから再度有効にして、変更したすべてのファイルから変更を読み込むことができます。

  1. sudo ufw disable
  2. sudo ufw enable

これで、OpenVPNトラフィックを正しく処理するようにサーバーが構成されました。

ステップ9:OpenVPNサービスを開始して有効にする

ついにサーバーでOpenVPNサービスを開始する準備が整いました。 systemdを使用してこれを行うことができます。

systemdユニットのファイル名の後にインスタンス変数として設定ファイル名を指定してOpenVPNサーバーを起動する必要があります。 サーバーの構成ファイルは/etc/openvpn/server.confと呼ばれるため、呼び出すときにユニットファイルの最後に@serverを追加します。

  1. sudo systemctl start openvpn@server

次のように入力して、サービスが正常に開始されたことを再確認します。

  1. sudo systemctl status openvpn@server

すべてがうまくいけば、出力は次のようになります。

Output
[email protected] - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta Main PID: 5856 (openvpn) Tasks: 1 (limit: 512) CGroup: /system.slice/system-openvpn.slice/[email protected] └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef] May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef] May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256 May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0 May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed

次のように入力して、OpenVPNtun0インターフェイスが使用可能であることを確認することもできます。

  1. ip addr show tun0

構成済みのインターフェースが表示されます。

Output
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link/none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever

すべてがうまくいった場合は、サービスを有効にして、起動時に自動的に開始されるようにします。

  1. sudo systemctl enable openvpn@server

ステップ10:クライアント構成インフラストラクチャを作成する

次に、クライアント構成ファイルを簡単に作成できるシステムをセットアップする必要があります。

クライアント構成ディレクトリ構造の作成

ファイルを保存するために、ホームディレクトリ内にディレクトリ構造を作成します。

  1. mkdir -p ~/client-configs/files

クライアント構成ファイルにはクライアントキーが埋め込まれているため、内部ディレクトリのアクセス許可をロックダウンする必要があります。

  1. chmod 700 ~/client-configs/files

基本構成の作成

次に、クライアント構成の例をディレクトリにコピーして、基本構成として使用します。

  1. cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

この新しいファイルをテキストエディタで開きます。

  1. nano ~/client-configs/base.conf

内部では、いくつかの調整を行う必要があります。

まず、remoteディレクティブを見つけます。 これにより、クライアントはOpenVPNサーバーアドレスを指します。 これは、OpenVPNサーバーのパブリックIPアドレスである必要があります。 OpenVPNサーバーがリッスンしているポートを変更した場合は、1194を選択したポートに変更します。

〜/ client-configs / base.conf
. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote server_IP_address 1194
. . .

プロトコルがサーバー構成で使用している値と一致していることを確認してください。

〜/ client-configs / base.conf
proto udp

次に、「; 」を削除して、userおよびgroupディレクティブのコメントを解除します。

〜/ client-configs / base.conf
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

cacert、およびkeyを設定するディレクティブを見つけます。 ファイル自体に証明書とキーを追加するので、これらのディレクティブをコメントアウトします。

〜/ client-configs / base.conf
# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key

/etc/openvpn/server.confファイルで設定したcipherおよびauth設定をミラーリングします。

〜/ client-configs / base.conf
cipher AES-128-CBC
auth SHA256

次に、ファイルのどこかにkey-directionディレクティブを追加します。 サーバーと連携するには、このを「1」に設定する必要があります。

〜/ client-configs / base.conf
key-direction 1

最後に、コメントアウト行をいくつか追加します。 これらをすべての構成に含めたいのですが、/etc/openvpn/update-resolv-confファイルが付属しているLinuxクライアントに対してのみ有効にする必要があります。 このスクリプトは、resolvconfユーティリティを使用して、LinuxクライアントのDNS情報を更新します。

〜/ client-configs / base.conf
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

クライアントがLinuxを実行していて、/etc/openvpn/update-resolv-confファイルがある場合は、生成されたOpenVPNクライアント構成ファイルからこれらの行のコメントを外す必要があります。

終了したらファイルを保存します。

構成生成スクリプトの作成

次に、関連する証明書、キー、および暗号化ファイルを使用して基本構成をコンパイルするための簡単なスクリプトを作成します。 これにより、生成された構成が~/client-configs/filesディレクトリに配置されます。

~/client-configsディレクトリ内にmake_config.shというファイルを作成して開きます。

  1. nano ~/client-configs/make_config.sh

内部に、次のスクリプトを貼り付けます。

〜/ client-configs / make_config.sh
#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn

終了したら、ファイルを保存して閉じます。

次のように入力して、ファイルを実行可能としてマークします。

  1. chmod 700 ~/client-configs/make_config.sh

ステップ11:クライアント構成を生成する

これで、クライアント構成ファイルを簡単に生成できます。

ガイドに従って、手順6で./build-key client1コマンドを実行して、それぞれclient1.crtおよびclient1.keyというクライアント証明書とキーを作成しました。 ~/client-configsディレクトリに移動し、作成したスクリプトを使用して、これらの資格情報の構成を生成できます。

  1. cd ~/client-configs
  2. ./make_config.sh client1

すべてがうまくいけば、~/client-configs/filesディレクトリにclient1.ovpnファイルがあるはずです。

  1. ls ~/client-configs/files
Output
client1.ovpn

クライアントデバイスへの構成の転送

クライアント構成ファイルを関連するデバイスに転送する必要があります。 たとえば、これはローカルコンピュータまたはモバイルデバイスである可能性があります。

この転送を実行するために使用される正確なアプリケーションは、選択とデバイスのオペレーティングシステムによって異なりますが、アプリケーションでバックエンドでSFTP(SSHファイル転送プロトコル)またはSCP(セキュアコピー)を使用する必要があります。 これにより、暗号化された接続を介してクライアントのVPN認証ファイルが転送されます。

これは、client1.ovpnの例を使用したSFTPコマンドの例です。 このコマンドは、ローカルコンピューター(OS XまたはLinux)から実行できます。 .ovpnファイルをホームディレクトリに配置します。

  1. sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

サーバーからローカルコンピューターにファイルを安全に転送するためのいくつかのツールとチュートリアルを次に示します。

手順12:クライアント構成をインストールする

次に、Windows、OS X、iOS、およびAndroidにクライアントVPNプロファイルをインストールする方法について説明します。 これらのクライアントの指示はいずれも相互に依存していないため、該当する方にスキップしてください。

OpenVPN接続は、.ovpnファイルに名前を付けたものに関係なく呼び出されます。 この例では、これは、生成した最初のクライアントファイルに対して接続がclient1.ovpnと呼ばれることを意味します。

ウィンドウズ

インストール

Windows用のOpenVPNクライアントアプリケーションは、OpenVPNのダウンロードページにあります。 ご使用のバージョンのWindowsに適切なインストーラーバージョンを選択してください。

ノート

OpenVPNをインストールするには、管理者権限が必要です。

OpenVPNをインストールした後、.ovpnファイルを次の場所にコピーします。

C:\Program Files\OpenVPN\config

OpenVPNを起動すると、プロファイルが自動的に表示され、利用できるようになります。

OpenVPNは、管理者アカウントであっても、使用するたびに管理者として実行する必要があります。 VPNを使用するたびに右クリックして管理者として実行を選択せずにこれを行うには、これを事前設定できますが、これは管理者アカウントから行う必要があります。 これは、標準ユーザーがOpenVPNを使用するために管理者のパスワードを入力する必要があることも意味します。 一方、標準ユーザーは、クライアント上のOpenVPNアプリケーションに管理者権限がない限り、サーバーに適切に接続できないため、昇格された権限が必要です。

OpenVPNアプリケーションを常に管理者として実行するように設定するには、そのショートカットアイコンを右クリックして、プロパティに移動します。 互換性タブの下部にあるボタンをクリックして、すべてのユーザーの設定を変更します。 新しいウィンドウで、このプログラムを管理者として実行するをチェックします。

接続する

OpenVPN GUIを起動するたびに、Windowsはプログラムがコンピューターに変更を加えることを許可するかどうかを尋ねます。 はいをクリックします。 OpenVPNクライアントアプリケーションを起動すると、アプレットはシステムトレイに配置されるだけなので、必要に応じてVPNを接続および切断できます。 実際にはVPN接続を確立しません。

OpenVPNが開始されたら、システムトレイアプレットに移動し、OpenVPNアプレットアイコンを右クリックして接続を開始します。 これにより、コンテキストメニューが開きます。 メニューの上部にあるclient1client1.ovpnプロファイル)を選択し、Connectを選択します。

接続が確立されている間はステータスウィンドウが開き、ログ出力が表示されます。クライアントが接続されるとメッセージが表示されます。

同じ方法でVPNから切断します。システムトレイアプレットに移動し、OpenVPNアプレットアイコンを右クリックして、クライアントプロファイルを選択し、切断をクリックします。

OS X

インストール

Tunnelblick は、MacOSX用の無料のオープンソースOpenVPNクライアントです。 最新のディスクイメージは、TunnelblickDownloadsページからダウンロードできます。 ダウンロードした.dmgファイルをダブルクリックし、プロンプトに従ってインストールします。

インストールプロセスの終わりに向かって、Tunnelblickは構成ファイルがあるかどうかを尋ねます。 いいえと答えて、Tunnelblickを終了させる方が簡単な場合があります。 Finderウィンドウを開き、client1.ovpnをダブルクリックします。 Tunnelblickはクライアントプロファイルをインストールします。 管理者権限が必要です。

接続する

Applications フォルダーのTunnelblickをダブルクリックして、Tunnelblickを起動します。 Tunnelblickが起動すると、画面右上のメニューバーに接続を制御するためのTunnelblickアイコンが表示されます。 アイコンをクリックし、接続メニュー項目をクリックしてVPN接続を開始します。 client1接続を選択します。

Linux

インストール

Linuxを使用している場合は、ディストリビューションに応じてさまざまなツールを使用できます。 デスクトップ環境またはウィンドウマネージャーには、接続ユーティリティも含まれている場合があります。

ただし、最も一般的な接続方法は、OpenVPNソフトウェアを使用することです。

UbuntuまたはDebianでは、次のように入力することで、サーバーにインストールしたのと同じようにインストールできます。

  1. sudo apt-get update
  2. sudo apt-get install openvpn

CentOSでは、EPELリポジトリを有効にしてから、次のように入力してインストールできます。

  1. sudo yum install epel-release
  2. sudo yum install openvpn

構成

ディストリビューションに/etc/openvpn/update-resolv-confスクリプトが含まれているかどうかを確認してください。

  1. ls /etc/openvpn
Output
update-resolve-conf

次に、転送したOpenVPNクライアント構成ファイルを編集します。

  1. nano client1.ovpn

update-resolv-confファイルが見つかった場合は、DNS設定を調整するために配置した3行のコメントを解除します。

client1.ovpn
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

CentOSを使用している場合は、groupnogroupからnobodyに変更して、ディストリビューションの使用可能なグループに一致させます。

client1.ovpn
group nobody

ファイルを保存して閉じます。

これで、openvpnコマンドをクライアント構成ファイルにポイントするだけで、VPNに接続できます。

  1. sudo openvpn --config client1.ovpn

これにより、サーバーに接続されます。

iOS

インストール

iTunes App Storeから、公式iOSOpenVPNクライアントアプリケーションであるOpenVPNConnectを検索してインストールします。 iOSクライアント構成をデバイスに転送するには、デバイスをコンピューターに直接接続します。

ここでは、iTunesを使用した転送の完了について概説します。 コンピュータでiTunesを開き、 iPhone > appsをクリックします。 ファイル共有セクションまで下にスクロールして、OpenVPNアプリをクリックします。 右側の空白のウィンドウOpenVPNDocuments は、ファイルを共有するためのものです。 .ovpnファイルをOpenVPNドキュメントウィンドウにドラッグします。

iTunes showing the VPN profile ready to load on the iPhone

次に、iPhoneでOpenVPNアプリを起動します。 新しいプロファイルをインポートする準備ができたという通知が表示されます。 緑のプラス記号をタップしてインポートします。

The OpenVPN iOS app showing new profile ready to import

接続する

これで、OpenVPNを新しいプロファイルで使用する準備が整いました。 ConnectボタンをOnの位置にスライドさせて接続を開始します。 同じボタンをオフにスライドさせて切断します。

ノート

設定の下のVPNスイッチを使用してVPNに接続することはできません。 試してみると、OpenVPNアプリを使用してのみ接続するように通知が届きます。

The OpenVPN iOS app connected to the VPN

アンドロイド

インストール

GooglePlayストアを開きます。 公式のAndroidOpenVPNクライアントアプリケーションであるAndroidOpenVPNConnectを検索してインストールします。

.ovpnプロファイルは、AndroidデバイスをUSBでコンピューターに接続し、ファイルをコピーすることで転送できます。 または、SDカードリーダーをお持ちの場合は、デバイスのSDカードを取り外し、プロファイルをコピーしてから、カードをAndroidデバイスに挿入し直すことができます。

OpenVPNアプリを起動し、メニューをタップしてプロファイルをインポートします。

The OpenVPN Android app profile import menu selection

次に、保存したプロファイルの場所に移動し(スクリーンショットでは、/sdcard/Download/を使用)、ファイルを選択します。 アプリは、プロファイルがインポートされたことを記録します。

The OpenVPN Android app selecting VPN profile to import

接続する

接続するには、接続ボタンをタップするだけです。 OpenVPNアプリケーションを信頼するかどうかを尋ねられます。 OKを選択して接続を開始します。 VPNから切断するには、OpenVPNアプリに戻り、切断を選択します。

The OpenVPN Android app ready to connect to the VPN

ステップ13:VPN接続をテストする

すべてがインストールされたら、簡単なチェックですべてが正しく機能していることを確認します。 VPN接続を有効にせずに、ブラウザを開いてDNSLeakTestに移動します。

このサイトは、インターネットサービスプロバイダーによって割り当てられたIPアドレスを、世界中に表示されたとおりに返します。 同じWebサイトでDNS設定を確認するには、拡張テストをクリックすると、使用しているDNSサーバーが表示されます。

次に、OpenVPNクライアントをDropletのVPNに接続し、ブラウザーを更新します。 これで、VPNサーバーの完全に異なるIPアドレスが表示されます。 それが今、あなたが世界に現れる方法です。 繰り返しになりますが、DNSLeakTestの Extended Test は、DNS設定をチェックし、VPNによってプッシュされたDNSリゾルバーを使用していることを確認します。

ステップ14:クライアント証明書を取り消す

場合によっては、OpenVPNサーバーへのそれ以上のアクセスを防ぐために、クライアント証明書を取り消す必要があります。

これを行うには、CAディレクトリに入り、varsファイルを再ソースします。

  1. cd ~/openvpn-ca
  2. source vars

次に、取り消すクライアント名を使用してrevoke-fullコマンドを呼び出します。

  1. ./revoke-full client3

これにより、error 23で終わる出力が表示されます。 これは正常であり、プロセスは必要な失効情報を正常に生成しているはずです。この情報は、keysサブディレクトリ内のcrl.pemというファイルに保存されています。

このファイルを/etc/openvpn構成ディレクトリに転送します。

  1. sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn

次に、OpenVPNサーバー構成ファイルを開きます。

  1. sudo nano /etc/openvpn/server.conf

ファイルの最後にcrl-verifyオプションを追加して、OpenVPNサーバーが接続を試行するたびに作成した証明書失効リストをチェックするようにします。

/etc/openvpn/server.conf
crl-verify crl.pem

ファイルを保存して閉じます。

最後に、OpenVPNを再起動して、証明書の失効を実装します。

  1. sudo systemctl restart openvpn@server

これで、クライアントは古いクレデンシャルを使用してサーバーに正常に接続できるようになります。

追加のクライアントを取り消すには、次のプロセスに従います。

  1. [X89X]