序章

ホテルやコーヒーショップの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初期サーバーセットアップガイドに従って、適切な権限を持つユーザーをセットアップできます。 リンクされたチュートリアルでは、ファイアウォールも設定されます。これは、このガイドで使用されていると想定しています。

始める準備ができたら、Ubuntuサーバーにログインします。 sudo ユーザーと以下に進みます。

ステップ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)を設定する必要があります。

まず、コピーすることができます easy-rsa テンプレートディレクトリをホームディレクトリに make-cadir 指図:

  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 directroy、正しい名前に置き換える必要があります。 また、変更する必要があります /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

基本構成

まず、HMACセクションを探して見つけます tls-auth 指令。 「;」を削除してコメントを解除します tls-auth ライン:

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

次に、コメントアウトされたものを探して、暗号暗号に関するセクションを見つけます cipher 行。 The 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 以前のコマンド、変更 certkey 適切なものを指すために表示される線 .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ファイアウォールを設置する必要があります。 ファイアウォールを使用して不要なトラフィックをブロックするかどうかに関係なく(ほとんどの場合、これを実行する必要があります)、サーバーに着信するトラフィックの一部を操作するには、このガイドのファイアウォールが必要です。 ルールファイルを変更して、マスカレードを設定する必要があります。 iptables クライアント接続を正しくルーティングするためのオンザフライの動的NATを提供する概念。

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

  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ルールがロードされる前に配置する必要のある設定を処理します。 ファイルの先頭に向かって、下に強調表示された行を追加します。 これにより、のデフォルトポリシーが設定されます POSTROUTING チェーン nat VPNからのトラフィックをテーブルに入れてマスカレードします。

:忘れずに交換してください wlp11s0 の中に -A POSTROUTING 上記のコマンドで見つけたインターフェースを以下の行に示します。

/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 指令。 から値を変更します DROPACCEPT:

/ 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

OpenVPNを確認することもできます tun0 インターフェイスは次のように入力して利用できます。

  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:クライアント構成インフラストラクチャを作成する

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

ClientConfigディレクトリ構造の作成

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

  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

次に、コメントを外します usergroup;」を削除することによるディレクティブ:

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

を設定するディレクティブを見つけます ca, cert、 と 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

ミラーリング cipherauth で設定した設定 /etc/openvpn/server.conf ファイル:

〜/ 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 ファイル。 このスクリプトは 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 ディレクトリ。

と呼ばれるファイルを作成して開きます make_config.sh 以内 ~/client-configs ディレクトリ:

  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:クライアント構成を生成する

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

ガイドに沿って従えば、クライアント証明書とキーを作成しました。 client1.crtclient1.key それぞれを実行することによって ./build-key client1 手順6のコマンド。 に移動することで、これらのクレデンシャルの構成を生成できます ~/client-configs ディレクトリと作成したスクリプトの使用:

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

すべてがうまくいけば、 client1.ovpn 私たちのファイル ~/client-configs/files ディレクトリ:

  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アプレットアイコンを右クリックして接続を開始します。 これにより、コンテキストメニューが開きます。 メニューの上部にあるclient1を選択します(これが client1.ovpn プロファイル)を選択し、接続を選択します。

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

同じ方法で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

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

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

CentOSを使用している場合は、 group から nogroupnobody ディストリビューションの利用可能なグループと一致させるには:

client1.ovpn
group nobody

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

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

  1. sudo openvpn --config client1.ovpn

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

iOS

インストール

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

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

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

接続する

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

ノート

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

アンドロイド

インストール

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

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

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

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

接続する

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

ステップ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. これは正常であり、プロセスは必要な失効情報を正常に生成しているはずです。この情報は、というファイルに保存されています。 crl.pem 以内 keys サブディレクトリ。

このファイルをに転送します /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. を調達して、新しい証明書失効リストを生成します vars のファイル ~/openvpn-ca ディレクトリを呼び出してから revoke-full クライアント名のスクリプト。
  2. 新しい証明書失効リストをにコピーします /etc/openvpn 古いリストを上書きするディレクトリ。
  3. OpenVPNサービスを再起動します。

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

結論

おめでとう! これで、インターネットを安全に移動して、身元、場所、トラフィックをスヌーパーや検閲者から保護できます。

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