前書き
ホテルや喫茶店の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
最後に、user
とgroup
の設定を見つけ、先頭の「;」を削除して、これらの行のコメントを解除します。
/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
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
/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を使用している場合は、group
をnogroup
から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ドキュメントウィンドウにドラッグします。
iPhoneでOpenVPNアプリを起動します。 新しいプロファイルをインポートする準備ができたという通知があります。 緑色のプラス記号をタップしてインポートします。
接続中
これで、OpenVPNを新しいプロファイルで使用する準備ができました。 ConnectボタンをOnの位置にスライドして、接続を開始します。 同じボタンをOffにスライドさせて切断します。
Note
[.note]#Settingsの下のVPNスイッチを使用してVPNに接続することはできません。 試してみると、OpenVPNアプリのみを使用して接続するように通知されます。
#
アンドロイド
インストール中
Google Playストアを開きます。 公式のAndroidOpenVPNクライアントアプリケーションであるAndroid OpenVPN Connectを検索してインストールします。
.ovpn
プロファイルは、AndroidデバイスをUSBでコンピューターに接続し、ファイルをコピーすることで転送できます。 または、SDカードリーダーをお持ちの場合は、デバイスのSDカードを取り外してプロファイルをコピーし、Androidデバイスにカードを挿入し直すことができます。
OpenVPNアプリを起動し、メニューをタップしてプロファイルをインポートします。
次に、保存されたプロファイルの場所に移動し(スクリーンショットでは/sdcard/Download/
を使用)、ファイルを選択します。 アプリは、プロファイルがインポートされたことをメモします。
接続中
接続するには、Connectボタンをタップするだけです。 OpenVPNアプリケーションを信頼するかどうかを尋ねられます。 OKを選択して接続を開始します。 VPNから切断するには、OpenVPNアプリに戻り、Disconnectを選択します。
ステップ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
これで、クライアントは古い資格情報を使用してサーバーに正常に接続できるようになります。
追加のクライアントを取り消すには、次のプロセスに従います。
-
~/openvpn-ca
ディレクトリにあるvars
ファイルを取得し、クライアント名でrevoke-full
スクリプトを呼び出すことにより、新しい証明書失効リストを生成します。 -
新しい証明書失効リストを
/etc/openvpn
ディレクトリにコピーして、古いリストを上書きします。 -
OpenVPNサービスを再起動します。
このプロセスは、サーバーに対して以前に発行した証明書を取り消すために使用できます。
結論
おめでとうございます。 これで、あなたの身元、場所、およびトラフィックをスヌーパーや検閲者から保護しながら、インターネットを安全に横断しています。
より多くのクライアントを構成するには、追加のデバイスごとに手順6および11-13に従うだけで済みます。 クライアントへのアクセスを取り消すには、手順14に従います。