Ubuntu16.04でOpenVPNサーバーをセットアップする方法
序章
ホテルやコーヒーショップの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(認証局)のセットアップに役立ちます。
サーバーのパッケージインデックスを更新し、必要なパッケージをインストールするには、次のように入力します。
- sudo apt-get update
- sudo apt-get install openvpn easy-rsa
これで、必要なソフトウェアがサーバー上にあり、構成する準備が整いました。
ステップ2:CAディレクトリを設定する
OpenVPNはTLS/SSLVPNです。 これは、サーバーとクライアント間のトラフィックを暗号化するために証明書を利用することを意味します。 信頼できる証明書を発行するには、独自の単純な認証局(CA)を設定する必要があります。
まず、make-cadir
コマンドを使用して、easy-rsa
テンプレートディレクトリをホームディレクトリにコピーできます。
- make-cadir ~/openvpn-ca
新しく作成されたディレクトリに移動して、CAの構成を開始します。
- cd ~/openvpn-ca
ステップ3:CA変数を構成する
CAが使用する値を構成するには、ディレクトリ内のvars
ファイルを編集する必要があります。 そのファイルをテキストエディタで今すぐ開きます。
- nano 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"
. . .
赤の値を好きなように編集しますが、空白のままにしないでください。
. . .
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
と呼びます。
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サーバー証明書とキーペアを生成することから始めます。 これを行うには、次のように入力します。
注:ここでserver
以外の名前を選択した場合は、以下の手順の一部を調整する必要があります。 たとえば、生成されたファイルを/etc/openvpn
ダイレクトロイにコピーする場合は、正しい名前に置き換える必要があります。 また、後で/etc/openvpn/server.conf
ファイルを変更して、正しい.crt
および.key
ファイルを指すようにする必要があります。
- ./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鍵を生成できます。
- ./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
行のコメントを解除します。
tls-auth ta.key 0 # This file is secret
次に、コメントアウトされたcipher
行を探して、暗号化暗号に関するセクションを見つけます。 AES-128-CBC
暗号は、優れたレベルの暗号化を提供し、十分にサポートされています。 「;」を削除して、cipher AES-128-CBC
行のコメントを解除します。
cipher AES-128-CBC
この下に、auth
行を追加して、HMACメッセージダイジェストアルゴリズムを選択します。 このためには、SHA256
が適切な選択です。
auth SHA256
最後に、user
とgroup
の設定を見つけて、先頭の「; 」を削除して、これらの行のコメントを解除します。
user nobody
group nogroup
(オプション)DNSの変更をプッシュして、VPNを介してすべてのトラフィックをリダイレクトします
上記の設定により、2台のマシン間にVPN接続が作成されますが、接続でトンネルを使用するように強制されることはありません。 VPNを使用してすべてのトラフィックをルーティングする場合は、DNS設定をクライアントコンピューターにプッシュすることをお勧めします。
これを行うには、VPNを介してすべてのWebトラフィックをリダイレクトするようにクライアントマシンを構成するいくつかのディレクティブのコメントを解除します。 redirect-gateway
セクションを見つけ、redirect-gateway
行の先頭からセミコロン「;」を削除してコメントを解除します。
push "redirect-gateway def1 bypass-dhcp"
このすぐ下に、dhcp-option
セクションがあります。 繰り返しますが、両方の行の前から「; 」を削除して、コメントを解除します。
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は通常、ファイアウォールルールで許可されているため、一般的な選択肢です。
# Optional!
port 443
多くの場合、プロトコルがそのポートにも制限される場合。 その場合は、proto
をUDPからTCPに変更します。
# Optional!
proto tcp
別のポートを使用する必要がない場合は、これら2つの設定をデフォルトのままにしておくことをお勧めします。
(オプション)デフォルト以外の資格情報を指す
以前に./build-key-server
コマンドで別の名前を選択した場合は、適切な.crt
および.key
ファイル。 デフォルトのserver
を使用した場合、これはすでに正しく設定されているはずです。
cert server.crt
key server.key
終了したら、ファイルを保存して閉じます。
手順8:サーバーのネットワーク構成を調整する
次に、OpenVPNがトラフィックを正しくルーティングできるように、サーバーのネットワークのいくつかの側面を調整する必要があります。
IP転送を許可する
まず、サーバーがトラフィックを転送できるようにする必要があります。 これは、VPNサーバーに提供させたい機能にとって非常に重要です。
/etc/sysctl.conf
ファイルを変更することで、この設定を調整できます。
- sudo nano /etc/sysctl.conf
内部で、net.ipv4.ip_forward
を設定する行を探します。 行の先頭から「#」文字を削除して、その設定のコメントを解除します。
net.ipv4.ip_forward=1
終了したら、ファイルを保存して閉じます。
ファイルを読み取り、現在のセッションの値を調整するには、次のように入力します。
- sudo sysctl -p
UFWルールを調整してクライアント接続をマスカレードする
前提条件でUbuntu16.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からのトラフィックがすべて偽装されます。
注:下の-A POSTROUTING
行のwlp11s0
を、上記のコマンドで見つけたインターフェースに置き換えることを忘れないでください。
#
# 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
に変更します。
DEFAULT_FORWARD_POLICY="ACCEPT"
終了したら、ファイルを保存して閉じます。
OpenVPNポートを開き、変更を有効にします
次に、ファイアウォール自体を調整して、OpenVPNへのトラフィックを許可します。
/etc/openvpn/server.conf
ファイルのポートとプロトコルを変更しなかった場合は、ポート1194へのUDPトラフィックを開く必要があります。 ポートやプロトコルを変更した場合は、ここで選択した値に置き換えてください。
前提条件のチュートリアルに従うときにSSHポートを追加するのを忘れた場合に備えて、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: <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
すべてがうまくいった場合は、サービスを有効にして、起動時に自動的に開始されるようにします。
- 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
を選択したポートに変更します。
. . .
# 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
. . .
プロトコルがサーバー構成で使用している値と一致していることを確認してください。
proto udp
次に、「; 」を削除して、user
およびgroup
ディレクティブのコメントを解除します。
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
ca
、cert
、およびkey
を設定するディレクティブを見つけます。 ファイル自体に証明書とキーを追加するので、これらのディレクティブをコメントアウトします。
# 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
設定をミラーリングします。
cipher AES-128-CBC
auth SHA256
次に、ファイルのどこかにkey-direction
ディレクティブを追加します。 サーバーと連携するには、この
key-direction 1
最後に、コメントアウト行をいくつか追加します。 これらをすべての構成に含めたいのですが、/etc/openvpn/update-resolv-conf
ファイルが付属しているLinuxクライアントに対してのみ有効にする必要があります。 このスクリプトは、resolvconf
ユーティリティを使用して、LinuxクライアントのDNS情報を更新します。
# 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
内部に、次のスクリプトを貼り付けます。
#!/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
終了したら、ファイルを保存して閉じます。
次のように入力して、ファイルを実行可能としてマークします。
- 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用の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
プロファイル)を選択し、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では、次のように入力することで、サーバーにインストールしたのと同じようにインストールできます。
- 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行のコメントを解除します。
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
CentOSを使用している場合は、group
をnogroup
からnobody
に変更して、ディストリビューションの使用可能なグループに一致させます。
group nobody
ファイルを保存して閉じます。
これで、openvpn
コマンドをクライアント構成ファイルにポイントするだけで、VPNに接続できます。
- 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を検索してインストールします。
.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
ファイルを再ソースします。
- 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サーバーが接続を試行するたびに作成した証明書失効リストをチェックするようにします。
crl-verify crl.pem
ファイルを保存して閉じます。
最後に、OpenVPNを再起動して、証明書の失効を実装します。
- sudo systemctl restart openvpn@server
これで、クライアントは古いクレデンシャルを使用してサーバーに正常に接続できるようになります。
追加のクライアントを取り消すには、次のプロセスに従います。
- [X89X]