Ubuntu 16.04でOpenVPNサーバーをセットアップする方法

前書き

ホテルや喫茶店のWiFiなどの信頼できないネットワークに接続したときに、スマートフォンやラップトップからインターネットに安全かつ安全にアクセスしたいですか? Virtual Private Network(VPN)を使用すると、信頼できないネットワークをプライベートネットワーク上にいるかのようにプライベートかつ安全にトラバースできます。 トラフィックはVPNサーバーから出て、宛先への旅を続けます。

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

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

[。注意]##

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

詳細については、this pageを参照してください。

前提条件

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

このガイドを開始する前に、root以外のユーザーにsudo権限を設定する必要があります。 Ubuntu 16.04 initial server setup guideに従って、適切な権限を持つユーザーを設定できます。 リンクされたチュートリアルでは、firewallも設定されます。これは、このガイドで使用されていると想定しています。

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

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

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

サーバーのパッケージインデックスを更新し、必要なパッケージタイプをインストールするには:

sudo apt-get update
sudo apt-get install openvpn easy-rsa

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

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

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

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

make-cadir ~/openvpn-ca

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

cd ~/openvpn-ca

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

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

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ファイルを入手します。

cd ~/openvpn-ca
source vars

正しくソースされている場合、次のように表示されます。

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

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

./clean-all

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

./build-ca

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

OutputGenerating 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サーバー証明書とキーペアを生成することから始めます。 これを行うには、次のように入力します。

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

./build-key-server server

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

ENTERを押して、デフォルト値を自由に受け入れてください。 notは、この設定のチャレンジパスワードを入力してください。 最後に、証明書に署名してコミットするには、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キーを生成できます。

./build-dh

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

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

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

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

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

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

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

パスワードなしで資格情報を生成するには、自動接続を支援するために、次のようにbuild-keyコマンドを使用します。

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

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

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

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

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

次に、生成した資格情報とファイルを使用してOpenVPNサービスの構成を開始できます。

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

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

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

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

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

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

OpenVPN構成を調整する

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

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"

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

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

デフォルトでは、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コマンドで別の名前を選択した場合は、表示されるcertおよびkey行を変更して、適切な.crtおよび.keyファイルを指すようにします。 。 デフォルトのserverを使用した場合、これはすでに正しく設定されているはずです。

/etc/openvpn/server.conf

cert server.crt
key server.key

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

ステップ8:サーバーのネットワーク構成を調整する

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

IP転送を許可する

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

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

sudo nano /etc/sysctl.conf

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

/etc/sysctl.conf

net.ipv4.ip_forward=1

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

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

sudo sysctl -p

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

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

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

ip route | grep default

公開インターフェースは、「dev」という語に従う必要があります。 たとえば、この結果は、wlp11s0という名前のインターフェイスを示しています。これは以下で強調表示されています。

Outputdefault via 203.0.113.1 dev wlp11s0  proto static  metric 600

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

sudo nano /etc/ufw/before.rules

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

[.note]#Note:以下の-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ファイルを開きます。

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ポートも追加します。

sudo ufw allow 1194/udp
sudo ufw allow OpenSSH

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

sudo ufw disable
sudo ufw enable

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

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

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

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

sudo systemctl start openvpn@server

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

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インターフェースが使用可能であることを確認することもできます。

ip addr show tun0

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

Output4: tun0:  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

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

sudo systemctl enable openvpn@server

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

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

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

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

mkdir -p ~/client-configs/files

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

chmod 700 ~/client-configs/files

基本構成の作成

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

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

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

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ディレクティブを追加します。 このmustは、サーバーと連携するために「1」に設定されます。

~/client-configs/base.conf

key-direction 1

最後に、commented out行をいくつか追加します。 これらをすべての構成に含めたいのですが、/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というファイルを作成して開きます。

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 '') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '\n') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '\n') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '\n') \
    ${KEY_DIR}/ta.key \
    <(echo -e '') \
    > ${OUTPUT_DIR}/${1}.ovpn

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

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

chmod 700 ~/client-configs/make_config.sh

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

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

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

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

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

ls ~/client-configs/files
Outputclient1.ovpn

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

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

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

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

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

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

ステップ12:クライアント構成をインストールする

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

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

Windows

インストール中

Windows用のOpenVPNクライアントアプリケーションはOpenVPN’s Downloads pageにあります。 Windowsのバージョンに適したインストーラーバージョンを選択します。

Note

[.note] #OpenVPNをインストールするには管理者権限が必要です。

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

C:\Program Files\OpenVPN\config

OpenVPNを起動すると、プロファイルが自動的に表示され、使用可能になります。

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

OpenVPNアプリケーションを常に管理者として実行するように設定するには、ショートカットアイコンを右クリックして、Propertiesに移動します。 Compatibilityタブの下部にある、Change settings for all usersへのボタンをクリックします。 新しいウィンドウで、Run this program as an administratorを確認します。

接続中

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

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

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

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

OS X

インストール中

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

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

接続中

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

Linux

インストール中

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

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

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

sudo apt-get update
sudo apt-get install openvpn

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

sudo yum install epel-release
sudo yum install openvpn

設定中

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

ls /etc/openvpn
Outputupdate-resolve-conf

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

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に接続できます。

sudo openvpn --config client1.ovpn

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

iOS

インストール中

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

iTunesでの転送の完了については、こちらをご覧ください。 コンピュータでiTunesを開き、iPhone>appsをクリックします。 一番下までスクロールしてFile Sharingセクションに移動し、OpenVPNアプリをクリックします。 右側の空白のウィンドウOpenVPN Documentsは、ファイルを共有するためのものです。 .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の位置にスライドして、接続を開始します。 同じボタンをOffにスライドさせて切断します。

Note

[.note]#Settingsの下のVPNスイッチを使用してVPNに接続することはできません。 試してみると、OpenVPNアプリのみを使用して接続するように通知されます。

The OpenVPN iOS app connected to the VPN

アンドロイド

インストール中

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

.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

接続中

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

The OpenVPN Android app ready to connect to the VPN

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

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

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

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

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

OpenVPNサーバーへのさらなるアクセスを防ぐために、クライアント証明書を失効させる必要がある場合があります。

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

cd ~/openvpn-ca
source vars

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

./revoke-full client3

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

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

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

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

sudo nano /etc/openvpn/server.conf

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

/etc/openvpn/server.conf

crl-verify crl.pem

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

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

sudo systemctl restart openvpn@server

これで、クライアントは古い資格情報を使用してサーバーに正常に接続できるようになります。

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

  1. ~/openvpn-caディレクトリにあるvarsファイルを取得し、クライアント名でrevoke-fullスクリプトを呼び出すことにより、新しい証明書失効リストを生成します。

  2. 新しい証明書失効リストを/etc/openvpnディレクトリにコピーして、古いリストを上書きします。

  3. OpenVPNサービスを再起動します。

このプロセスは、サーバーに対して以前に発行した証明書を取り消すために使用できます。

結論

おめでとうございます。 これで、あなたの身元、場所、およびトラフィックをスヌーパーや検閲者から保護しながら、インターネットを安全に横断しています。

より多くのクライアントを構成するには、追加のデバイスごとに手順6および11-13に従うだけで済みます。 クライアントへのアクセスを取り消すには、手順14に従います。

Related