開発者ドキュメント

Ubuntu20.04でOpenVPNサーバーをセットアップおよび構成する方法

序章

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

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

OpenVPN は、幅広い構成に対応するフル機能のオープンソーストランスポート層セキュリティ(TLS)VPNソリューションです。 このチュートリアルでは、Ubuntu 20.04サーバーでOpenVPNをセットアップし、クライアントマシンからアクセスできるように構成します。

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

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

前提条件

このチュートリアルに従うには、次のものが必要です。

注: OpenVPNサーバーまたはローカルマシンをCAとして使用することは技術的には可能ですが、VPNをセキュリティの脆弱性にさらす可能性があるため、これはお勧めしません。 公式のOpenVPNドキュメントに従って、証明書要求のインポートと署名専用のスタンドアロンマシンにCAを配置する必要があります。 このため、このガイドでは、CAが別のUbuntu 20.04サーバー上にあり、sudo権限と基本ファイアウォールが有効になっている非rootユーザーもいることを前提としています。

それに加えて、OpenVPNサーバーへの接続に使用するクライアントマシンが必要になります。 このガイドでは、これをOpenVPNクライアントと呼びます。 このチュートリアルでは、ローカルマシンをOpenVPNクライアントとして使用することをお勧めします。

これらの前提条件が整ったら、Ubuntu20.04でOpenVPNサーバーのセットアップと構成を開始する準備が整います。

注:これらのサーバーの構成中にパスワード認証を無効にすると、このガイドの後半でサーバー間でファイルを転送するときに問題が発生する可能性があることに注意してください。 この問題を解決するには、各サーバーでパスワード認証を再度有効にすることができます。 または、サーバーごとにSSHキーペアを生成してから、OpenVPNサーバーの公開SSHキーをCAマシンのに追加することもできます。 authorized_keys ファイルおよびその逆。 これらのソリューションのいずれかを実行する方法については、 Ubuntu20.04でSSHキーを設定する方法を参照してください。

ステップ1—OpenVPNとEasy-RSAのインストール

このチュートリアルの最初のステップは、OpenVPNとEasy-RSAをインストールすることです。 Easy-RSAは、OpenVPNサーバーで使用する公開鍵インフラストラクチャ(PKI)管理ツールであり、証明書要求を生成してから、CAサーバーで検証してサインオンします。

まず、OpenVPNサーバーのパッケージインデックスを更新し、OpenVPNとEasy-RSAをインストールします。 どちらのパッケージもUbuntuのデフォルトのリポジトリで利用できるため、次を使用できます。 apt インストールの場合:

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

次に、root以外のユーザーが呼ばれるようにOpenVPNサーバー上に新しいディレクトリを作成する必要があります ~/easy-rsa:

  1. mkdir ~/easy-rsa

次に、からシンボリックリンクを作成する必要があります easyrsa パッケージがインストールされたスクリプト ~/easy-rsa 作成したディレクトリ:

  1. ln -s /usr/share/easy-rsa/* ~/easy-rsa/

注:他のガイドがあなたにコピーするように指示するかもしれませんが easy-rsa ファイルをPKIディレクトリにパッケージ化する場合、このチュートリアルではシンボリックリンクアプローチを採用しています。 その結果、 easy-rsa パッケージは、PKIのスクリプトに自動的に反映されます。

最後に、ディレクトリの所有者がroot以外のsudoユーザーであることを確認し、を使用してそのユーザーへのアクセスを制限します。 chmod:

  1. sudo chown sammy ~/easy-rsa
  2. chmod 700 ~/easy-rsa

これらのプログラムがインストールされ、システムの適切な場所に移動されたら、次のステップは、OpenVPNサーバー上に公開鍵インフラストラクチャ(PKI)を作成して、クライアントやその他のサーバーのTLS証明書を要求および管理できるようにすることです。 VPNに接続します。

ステップ2—OpenVPN用のPKIを作成する

OpenVPNサーバーの秘密鍵と証明書を作成する前に、OpenVPNサーバー上にローカルの公開鍵インフラストラクチャディレクトリを作成する必要があります。 CAサーバー上で直接作成するのではなく、このディレクトリを使用してサーバーとクライアントの証明書要求を管理します。

OpenVPNサーバー上にPKIディレクトリを構築するには、次のファイルを作成する必要があります。 vars いくつかのデフォルト値があります。 まず、 cdeasy-rsa ディレクトリ、次に作成して編集します vars nanoまたはお好みのテキストエディタを使用してファイルします。

  1. cd ~/easy-rsa
  2. nano vars

ファイルを開いたら、次の2行を貼り付けます。

〜/ easy-rsa / vars
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

これらはあなたがこれで必要とする唯一の2行です vars 認証局として使用されないため、OpenVPNサーバー上のファイル。 これにより、秘密鍵と証明書要求が、最新の楕円曲線暗号(ECC)を使用して、クライアントとOpenVPNサーバーの鍵と安全な署名を生成するように構成されていることが保証されます。

OpenVPNおよびCAサーバーをECCを使用するように構成すると、クライアントとサーバーが共有対称鍵を確立しようとしたときに、楕円曲線アルゴリズムを使用して交換を行うことができます。 鍵交換にECCを使用すると、従来のRSAアルゴリズムでプレーンなDiffie-Hellmanを使用するよりも大幅に高速になります。これは、数値がはるかに小さく、計算が高速であるためです。

背景:クライアントがOpenVPNに接続するとき、クライアントは非対称暗号化(公開鍵/秘密鍵とも呼ばれます)を使用してTLSハンドシェイクを実行します。 ただし、暗号化されたVPNトラフィックを送信する場合、サーバーとクライアントは対称暗号化を使用します。これは共有キー暗号化とも呼ばれます。

対称暗号化では、非対称暗号化に比べて計算のオーバーヘッドがはるかに少なくなります。使用される数ははるかに少なく、最新のCPU は命令を統合して、最適化された対称暗号化操作を実行します。 非対称暗号化から対称暗号化に切り替えるために、OpenVPNサーバーとクライアントは楕円曲線ディフィーヘルマン(ECDH)アルゴリズムを使用して、共有秘密鍵について可能な限り迅速に合意します。

を入力したら vars PKIディレクトリの作成に進むことができるファイル。 これを行うには、を実行します easyrsa スクリプトと init-pki オプション。 前提条件の一部としてCAサーバーでこのコマンドをすでに実行しましたが、OpenVPNサーバーとCAサーバーには別々のPKIディレクトリがあるため、ここで実行する必要があります。

  1. ./easyrsa init-pki

OpenVPNサーバーでは、認証局を作成する必要がないことに注意してください。 CAサーバーは、証明書の検証と署名について単独で責任を負います。 VPNサーバー上のPKIは、証明書要求と公開証明書を保存するための便利で一元化された場所としてのみ使用されます。

OpenVPNサーバーでPKIを初期化したら、次のステップに進む準備ができています。次のステップでは、OpenVPNサーバーの証明書要求と秘密鍵を作成します。

ステップ3—OpenVPNサーバー証明書リクエストと秘密鍵の作成

OpenVPNサーバーにすべての前提条件がインストールされたので、次のステップは、OpenVPNサーバーで秘密鍵と証明書署名要求(CSR)を生成することです。 その後、リクエストをCAに転送して署名し、必要な証明書を作成します。 署名された証明書を取得したら、それをOpenVPNサーバーに転送し直して、サーバーが使用できるようにインストールします。

開始するには、に移動します ~/easy-rsa 非rootユーザーとしてのOpenVPNサーバー上のディレクトリ:

  1. cd ~/easy-rsa

今、あなたは easyrsa とともに gen-req オプションの後にマシンの共通名(CN)が続きます。 CNは好きなものにすることができますが、わかりやすいものにするのに役立ちます。 このチュートリアル全体を通して、OpenVPNサーバーのCNは server. 必ず含めてください nopass オプションも。 そうしないと、リクエストファイルがパスワードで保護され、後で権限の問題が発生する可能性があります。

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

  1. ./easyrsa gen-req server nopass
Output
Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

これにより、サーバーの秘密鍵と、という証明書要求ファイルが作成されます。 server.req. サーバーキーをにコピーします /etc/openvpn/server ディレクトリ:

  1. sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

これらの手順を完了すると、OpenVPNサーバーの秘密鍵が正常に作成されました。 OpenVPNサーバーの証明書署名要求も生成しました。 これで、CSRはCAによる署名の準備が整いました。 このチュートリアルの次のセクションでは、CAサーバーの秘密鍵を使用してCSRに署名する方法を学習します。

ステップ4—OpenVPNサーバーの証明書リクエストに署名する

前の手順で、OpenVPNサーバーの証明書署名要求(CSR)と秘密鍵を作成しました。 ここで、CAサーバーは server 証明書を作成して検証します。 CAが証明書を検証してOpenVPNサーバーに中継すると、CAを信頼するクライアントはOpenVPNサーバーも信頼できるようになります。

OpenVPNサーバーで、root以外のユーザーとして、SCPまたは別の転送方法を使用して server.req 署名のためのCAサーバーへの証明書要求:

  1. scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

前提条件Ubuntu20.04 チュートリアルで認証局(CA)をセットアップおよび構成する方法に従った場合、次のステップはCAサーバーに非ルートとしてログインすることです。 CAを管理するために作成したユーザー。 あなたは cd~/easy-rsa PKを作成し、を使用して証明書要求をインポートしたディレクトリ easyrsa 脚本:

  1. cd ~/easy-rsa
  2. ./easyrsa import-req /tmp/server.req server
Output
. . . The request has been successfully imported with a short name of: server You may now use this name to perform signing operations on this request.

次に、を実行してリクエストに署名します easyrsa スクリプトと sign-req オプションの後に、リクエストタイプと共通名が続きます。 リクエストタイプは次のいずれかになります client また server. OpenVPNサーバーの証明書要求を処理しているので、必ず server リクエストの種類:

  1. ./easyrsa sign-req server server

出力では、リクエストが信頼できるソースからのものであることを確認するように求められます。 タイプ yes 次にを押します ENTER 確認するために:

Output
You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

CA秘密鍵を暗号化した場合は、この時点でパスワードの入力を求められることに注意してください。

これらの手順が完了すると、CAサーバーの秘密鍵を使用してOpenVPNサーバーの証明書要求に署名したことになります。 結果として server.crt ファイルには、OpenVPNサーバーの公開暗号化キーとCAサーバーからの署名が含まれています。 署名のポイントは、CAサーバーを信頼するすべての人に、OpenVPNサーバーに接続するときにも信頼できることを伝えることです。

証明書の構成を完了するには、 server.crtca.crt CAサーバーからOpenVPNサーバーへのファイル:

  1. scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
  2. scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

OpenVPNサーバーに戻り、ファイルをコピーします。 /tmp/etc/openvpn/server:

  1. sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

これで、OpenVPNサーバーは接続を受け入れる準備がほぼ整いました。 次のステップでは、サーバーのセキュリティを強化するためにいくつかの追加のステップを実行します。

ステップ5—OpenVPN暗号化資料の構成

セキュリティをさらに強化するために、サーバーとすべてのクライアントがOpenVPNのtls-cryptディレクティブで使用する共有秘密鍵を追加します。 このオプションは、サーバーとクライアントが最初に相互に接続するときに使用されるTLS証明書をわかりにくくするために使用されます。 また、OpenVPNサーバーは、着信パケットのクイックチェックを実行するために使用します。パケットが事前共有キーを使用して署名されている場合、サーバーはそれを処理します。 署名されていない場合、サーバーはそれが信頼できないソースからのものであることを認識し、追加の復号化作業を実行することなく破棄できます。

このオプションは、OpenVPNサーバーが認証されていないトラフィック、ポートスキャン、およびサーバーリソースを占有する可能性のあるサービス拒否攻撃に確実に対処できるようにするのに役立ちます。 また、OpenVPNネットワークトラフィックの識別が困難になります。

を生成するには tls-crypt 事前共有キー、OpenVPNサーバーで以下を実行します ~/easy-rsa ディレクトリ:

  1. cd ~/easy-rsa
  2. openvpn --genkey --secret ta.key

結果は次のファイルになります ta.key. にコピーします /etc/openvpn/server/ ディレクトリ:

  1. sudo cp ta.key /etc/openvpn/server

これらのファイルをOpenVPNサーバーに配置すると、VPNへの接続に使用するユーザーのクライアント証明書とキーファイルを作成する準備が整います。

ステップ6—クライアント証明書とキーペアの生成

クライアントマシンで秘密鍵と証明書の要求を生成し、それをCAに送信して署名することもできますが、このガイドでは、OpenVPNサーバーで証明書の要求を生成するプロセスの概要を説明します。 このアプローチの利点は、必要なすべてのキーと証明書を含むクライアント構成ファイルを自動的に生成するスクリプトを作成できることです。 これにより、キー、証明書、および構成ファイルをクライアントに転送する必要がなくなり、VPNに参加するプロセスが合理化されます。

このガイドでは、単一のクライアントキーと証明書のペアを生成します。 複数のクライアントがある場合は、クライアントごとにこのプロセスを繰り返すことができます。 ただし、すべてのクライアントのスクリプトに一意の名前の値を渡す必要があることに注意してください。 このチュートリアル全体を通して、最初の証明書/キーのペアは次のように呼ばれます。 client1.

クライアント証明書とキーファイルを保存するために、ホームディレクトリ内にディレクトリ構造を作成することから始めます。

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

クライアントの証明書/キーのペアと構成ファイルをこのディレクトリに保存するため、セキュリティ対策として、今すぐアクセス許可をロックダウンする必要があります。

  1. chmod -R 700 ~/client-configs

次に、EasyRSAディレクトリに戻り、 easyrsa スクリプトと gen-reqnopass オプション、およびクライアントの一般名:

  1. cd ~/easy-rsa
  2. ./easyrsa gen-req client1 nopass

プレス ENTER 一般名を確認します。 次に、 client1.key ファイルに ~/client-configs/keys/ 以前に作成したディレクトリ:

  1. cp pki/private/client1.key ~/client-configs/keys/

次に、転送します client1.req 安全な方法を使用してCAサーバーにファイルします。

  1. scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

次に、CAServerにログインします。 次に、EasyRSAディレクトリに移動し、証明書要求をインポートします。

  1. cd ~/easy-rsa
  2. ./easyrsa import-req /tmp/client1.req client1

次に、前の手順でサーバーに対して行ったのと同じ方法でリクエストに署名します。 ただし、今回は必ず指定してください client リクエストの種類:

  1. ./easyrsa sign-req client client1

プロンプトが表示されたら、次のように入力します yes 証明書要求に署名するつもりであり、それが信頼できるソースからのものであることを確認するには、次のようにします。

Output
Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

ここでも、CAキーを暗号化した場合は、ここでパスワードの入力を求められます。

これにより、という名前のクライアント証明書ファイルが作成されます client1.crt. このファイルをサーバーに転送します。

  1. scp pki/issued/client1.crt sammy@your_server_ip:/tmp

OpenVPNサーバーに戻り、クライアント証明書をにコピーします ~/client-configs/keys/ ディレクトリ:

  1. cp /tmp/client1.crt ~/client-configs/keys/

次に、 ca.crtta.key にファイル ~/client-configs/keys/ ディレクトリも作成し、sudoユーザーに適切な権限を設定します。

  1. cp ~/easy-rsa/ta.key ~/client-configs/keys/
  2. sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
  3. sudo chown sammy.sammy ~/client-configs/keys/*

これで、サーバーとクライアントの証明書とキーがすべて生成され、OpenVPNサーバーの適切なディレクトリに保存されます。 これらのファイルで実行する必要のあるアクションはまだいくつかありますが、それらは後のステップで実行されます。 今のところ、OpenVPNの設定に進むことができます。

ステップ7—OpenVPNの設定

他の多くの広く使用されているオープンソースツールと同様に、OpenVPNには、特定のニーズに合わせてサーバーをカスタマイズするために利用できる多数の構成オプションがあります。 このセクションでは、このソフトウェアのドキュメントに含まれているサンプル構成ファイルの1つに基づいてOpenVPNサーバー構成をセットアップする方法について説明します。

まず、サンプルをコピーします server.conf 独自の構成ファイルの開始点としてのファイル:

  1. sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
  2. sudo gunzip /etc/openvpn/server/server.conf.gz

選択したテキストエディタで編集するために新しいファイルを開きます。 この例ではnanoを使用します。

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

このファイルの数行を変更する必要があります。 まず、 HMAC を検索して構成のセクション tls-auth 指令。 この行はデフォルトで有効になります。 追加してコメントアウトする ; 行頭まで。 次に、値を含む行の後に新しい行を追加します tls-crypt ta.key それだけ:

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

次に、暗号化暗号に関するセクションを探して、 cipher 行。 デフォルト値はに設定されています AES-256-CBC、 しかし AES-256-GCM 暗号は、より優れたレベルの暗号化とパフォーマンスを提供し、最新のOpenVPNクライアントで十分にサポートされています。 デフォルト値を追加してコメントアウトします ; この行の先頭に署名すると、更新された値を含む行の後に別の行が追加されます。 AES-256-GCM:

/etc/openvpn/server/server.conf
;cipher AES-256-CBC
cipher AES-256-GCM

この行の直後に、 auth HMACメッセージダイジェストアルゴリズムを選択するためのディレクティブ。 このため、 SHA256 良い選択です:

/etc/openvpn/server/server.conf
auth SHA256

次に、を含む行を見つけます dh Diffie-Hellmanパラメーターを定義するディレクティブ。 楕円曲線暗号を使用するようにすべての証明書を構成したので、Diffie-Hellmanシードファイルは必要ありません。 次のような既存の行をコメントアウトします dh dh2048.pem また dh dh.pem. Diffie-Hellmanキーのファイル名は、サーバー構成ファイルの例にリストされているものとは異なる場合があります。 次に、その後に内容を含む行を追加します dh none:

/etc/openvpn/server/server.conf
;dh dh2048.pem
dh none

次に、OpenVPNを起動したら特権なしで実行する必要があるため、ユーザーnobodyとグループnogroupで実行するように指示する必要があります。 これを有効にするには、を見つけてコメントを外します user nobodygroup nogroup を削除して行 ; 各行の先頭から署名します。

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

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

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

開始するには、次の行を見つけてコメントを外します push "redirect-gateway def1 bypass-dhcp". これを行うと、OpenVPNサーバーを介してすべてのトラフィックをリダイレクトするようにクライアントに指示されます。 この機能を有効にすると、SSHなどの他のネットワークサービスとの接続の問題が発生する可能性があることに注意してください。

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

この線のすぐ下で、 dhcp-option セクション。 繰り返しますが、 ; 両方の行の先頭からコメントを外します。

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

これらの行は、リストされたIPアドレスで無料のOpenDNSリゾルバーを使用するようにクライアントに指示します。 他のDNSリゾルバーが必要な場合は、強調表示されたIPの代わりにそれらを置き換えることができます。

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

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

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

ポート443でリッスンするようにOpenVPNを変更するには、 server.conf ファイルを作成し、次のような行を見つけます。

/etc/openvpn/server/server.conf
port 1194

ポートが443になるように編集します。

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

多くの場合、プロトコルはそのポートにも制限されています。 もしそうなら、 proto 下の行 port 回線を作成し、プロトコルをから変更します udptcp:

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

プロトコルをTCPにdo切り替える場合は、 explicit-exit-notify からのディレクティブの値 10、このディレクティブはUDPでのみ使用されるため。 TCPの使用中にこれを行わないと、OpenVPNサービスの開始時にエラーが発生します。

を見つける explicit-exit-notify ファイルの最後の行で、値を次のように変更します 0:

/etc/openvpn/server/server.conf
# Optional!
explicit-exit-notify 0

別のポートとプロトコルを使用する必要がない場合は、これらの設定を変更しないでおくことをお勧めします。

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

中に別の名前を選択した場合 ./easyrsa gen-req server 以前のコマンド、変更 certkey の行 server.conf 適切なものを指すように構成ファイル .crt.key ファイル。 デフォルトの名前を使用した場合は、 server、これはすでに正しく設定されています:

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

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

これで、OpenVPNの一般設定の構成が完了しました。 次のステップでは、サーバーのネットワークオプションをカスタマイズします。

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

OpenVPNがVPNを介してトラフィックを正しくルーティングできるように、サーバーのネットワーク構成のいくつかの側面を微調整する必要があります。 これらの最初のものは、 IP転送です。これは、IPトラフィックをルーティングする場所を決定するための方法です。 これは、サーバーが提供するVPN機能に不可欠です。

OpenVPNサーバーのデフォルトのIP転送設定を調整するには、 /etc/sysctl.conf を使用してファイル nano またはお好みの編集者:

  1. sudo nano /etc/sysctl.conf

次に、ファイルの最後に次の行を追加します。

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

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

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

  1. sudo sysctl -p
Output
net.ipv4.ip_forward = 1

これで、OpenVPNサーバーは着信トラフィックをあるイーサネットデバイスから別のイーサネットデバイスに転送できるようになります。 この設定により、サーバーは、仮想VPNインターフェイスに接続するクライアントからのトラフィックを他の物理イーサネットデバイス経由で転送できるようになります。 この構成では、クライアントからのすべてのWebトラフィックがサーバーのIPアドレスを介してルーティングされ、クライアントのパブリックIPアドレスは事実上非表示になります。

次のステップでは、OpenVPNサーバーとの間のトラフィックが適切に流れるようにファイアウォールルールを構成する必要があります。

ステップ9—ファイアウォールの構成

これまで、サーバーにOpenVPNをインストールして構成し、クライアントがVPNにアクセスするために必要なキーと証明書を生成しました。 ただし、クライアントからの着信Webトラフィックの送信先に関する指示はOpenVPNにまだ提供されていません。 いくつかのファイアウォールルールとルーティング構成を確立することにより、サーバーがクライアントトラフィックを処理する方法を規定できます。

このチュートリアルの開始時に前提条件に従っていると仮定すると、すでに ufw サーバーにインストールして実行します。 OpenVPNがファイアウォールを通過できるようにするには、マスカレードを有効にする必要があります。これは、クライアント接続を正しくルーティングするためのオンザフライの動的ネットワークアドレス変換(NAT)を提供するiptablesの概念です。

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

  1. ip route list default

パブリックインターフェイスは、このコマンドの出力内にある「dev」という単語に続く文字列です。 たとえば、この結果は次の名前のインターフェイスを示しています eth0、以下で強調表示されています:

Output
default via 159.65.160.1 dev eth0 proto static

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

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

UFWルールは通常、 ufw 指図。 にリストされているルール before.rules ただし、ファイルは、従来のUFWルールがロードされる前に読み取られ、配置されます。 ファイルの先頭に向かって、下に強調表示された行を追加します。 これにより、のデフォルトポリシーが設定されます POSTROUTING チェーン nat VPNからのトラフィックをテーブルに入れてマスカレードします。 交換することを忘れないでください eth0 の中に -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 eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -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へのトラフィックを許可します。 でポートとプロトコルを変更しなかった場合 /etc/openvpn/server.conf ファイルの場合、ポートへのUDPトラフィックを開く必要があります 1194. ポートやプロトコルを変更した場合は、ここで選択した値に置き換えてください。

前提条件のチュートリアルに従うときにSSHポートを追加するのを忘れた場合は、ここにも追加してください。

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

:別のファイアウォールを使用している場合、またはUFW構成をカスタマイズしている場合は、ファイアウォールルールを追加する必要がある場合があります。 たとえば、VPN接続を介してすべてのネットワークトラフィックをトンネリングする場合は、そのポートを確認する必要があります 53 DNSリクエスト、および次のようなポートのトラフィックが許可されます 80443 それぞれHTTPおよびHTTPSトラフィック用。 VPNを介して使用している他のプロトコルがある場合は、それらのルールも追加する必要があります。

これらのルールを追加した後、UFWを無効にしてから再度有効にして再起動し、変更したすべてのファイルから変更をロードします。

  1. sudo ufw disable
  2. sudo ufw enable

これで、OpenVPNトラフィックを正しく処理するようにサーバーが構成されました。 ファイアウォールルールを設定すると、サーバーでOpenVPNサービスを開始できます。

ステップ10—OpenVPNを開始する

OpenVPNはとして実行されます systemd サービスなので、使用できます systemctl それを管理します。 サーバーが稼働している限りいつでもVPNに接続できるように、起動時に起動するようにOpenVPNを構成します。 これを行うには、OpenVPNサービスをに追加して有効にします systemctl:

  1. sudo systemctl -f enable openvpn-server@server.service

次に、OpenVPNサービスを開始します。

  1. sudo systemctl start openvpn-server@server.service

次のコマンドを使用して、OpenVPNサービスがアクティブであることを再確認します。 君は見るべきだ active (running) 出力:

  1. sudo systemctl status openvpn-server@server.service
Output
● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpn\x2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

これで、OpenVPNのサーバー側の構成が完了しました。 次に、クライアントマシンを構成し、OpenVPNサーバーに接続します。

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

OpenVPNクライアントの構成ファイルの作成は、すべてのクライアントが独自の構成を持っている必要があり、それぞれがサーバーの構成ファイルで概説されている設定と一致している必要があるため、多少複雑になる可能性があります。 この手順では、1つのクライアントでのみ使用できる単一の構成ファイルを作成するのではなく、構成ファイルをオンザフライで生成するために使用できるクライアント構成インフラストラクチャを構築するプロセスの概要を説明します。 最初に「基本」構成ファイルを作成し、次にスクリプトを作成して、必要に応じて一意のクライアント構成ファイル、証明書、およびキーを生成できるようにします。

クライアント構成ファイルを格納する新しいディレクトリを作成することから始めます。 client-configs 以前に作成したディレクトリ:

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

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

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

を使用してこの新しいファイルを開きます nano またはお好みのテキストエディタ:

  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 your_server_ip 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

同様に、コメントアウトします tls-auth 追加するディレクティブ ta.key クライアント構成ファイルに直接(そしてサーバーは使用するように設定されています) tls-crypt):

〜/ client-configs / base.conf
# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1

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

〜/ client-configs / base.conf
cipher AES-256-GCM
auth SHA256

次に、 key-direction ファイルのどこかにディレクティブ。 VPNをクライアントマシンで正しく機能させるには、これを「1」に設定する必要があります。

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

最後に、LinuxベースのVPNクライアントがDNS解決に使用するさまざまな方法を処理するために、コメントアウト行をいくつか追加します。 2つの類似しているが、別々のコメントアウト行のセットを追加します。 最初のセットは、を使用しないクライアント用です systemd-resolved DNSを管理します。 これらのクライアントは resolvconf LinuxクライアントのDNS情報を更新するユーティリティ。

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

次に、を使用するクライアント用に別の行セットを追加します systemd-resolved DNS解決の場合:

〜/ client-configs / base.conf
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .

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

このチュートリアルのステップ13-クライアント構成のインストールステップの後半で、LinuxクライアントでDNS解決がどのように機能するか、およびコメントを解除するセクションを決定する方法を学習します。

次に、関連する証明書、キー、および暗号化ファイルを使用して基本構成をコンパイルするスクリプトを作成し、生成された構成を ~/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=~/client-configs/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-crypt>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-crypt>') \
    > ${OUTPUT_DIR}/${1}.ovpn

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

次に進む前に、次のように入力して、このファイルを実行可能としてマークしてください。

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

このスクリプトは、 base.conf 作成したファイルを作成し、クライアント用に作成したすべての証明書とキーファイルを収集し、それらのコンテンツを抽出して、基本構成ファイルのコピーに追加し、このすべてのコンテンツを新しいクライアント構成ファイルにエクスポートします。 つまり、クライアントの構成、証明書、およびキーファイルを個別に管理する必要はなく、必要なすべての情報が1か所に保存されます。 この方法を使用する利点は、将来クライアントを追加する必要がある場合に、このスクリプトを実行して新しい構成ファイルをすばやく作成し、すべての重要な情報が単一のアクセスしやすい場所に保存されるようにすることができることです。位置。

新しいクライアントを追加するときはいつでも、このスクリプトを実行してその構成ファイルを生成する前に、そのクライアントの新しいキーと証明書を生成する必要があることに注意してください。 次のステップで、このスクリプトを使用して練習します。

ステップ12—クライアント構成の生成

ガイドに従った場合は、という名前のクライアント証明書とキーを作成しました client1.crtclient1.keyそれぞれ、ステップ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認証ファイルが転送されます。

これは、ローカルコンピューター(macOSまたはLinux)から実行できるSFTPコマンドの例です。 これはコピーします client1.ovpn 最後のステップで作成したファイルをホームディレクトリに追加します。

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

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

手順13—クライアント構成のインストール

このセクションでは、Windows、macOS、Linux、iOS、およびAndroidにクライアントVPNプロファイルをインストールする方法について説明します。 これらのクライアント命令はいずれも相互に依存していないため、デバイスに該当する方にスキップしてください。

OpenVPN接続はあなたが呼んだものと同じ名前になります .ovpn ファイル。 このチュートリアルに関して、これは接続に名前が付けられていることを意味します client1.ovpn、生成した最初のクライアントファイルに合わせます。

ウィンドウズ

インストール

OpenVPNのダウンロードページからWindows用の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

インストール

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

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

接続する

アプリケーションフォルダのTunnelblickアイコンをダブルクリックして、Tunnelblickを起動します。 Tunnelblickが起動すると、画面右上のメニューバーに接続を制御するためのTunnelblickアイコンが表示されます。 アイコンをクリックし、 Connect client1 メニュー項目をクリックして、VPN接続を開始します。 TunnelblickでカスタムDNS設定を使用している場合は、詳細構成ダイアログで「手動で設定されたネットワーク設定への変更を許可する」をチェックする必要がある場合があります。

Linux

インストール

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

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

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

  1. sudo apt update
  2. sudo apt install openvpn

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

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

を使用するクライアントの構成 systemd-resolved

まず、システムが使用しているかどうかを確認します systemd-resolved をチェックしてDNS解決を処理する /etc/resolv.conf ファイル:

  1. cat /etc/resolv.conf
Output
# This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

システムがを使用するように構成されている場合 systemd-resolved DNS解決の場合、後のIPアドレス nameserver オプションは 127.0.0.53. 表示される出力のように、ファイルにコメントがあり、その方法を説明している必要があります。 systemd-resolved ファイルを管理しています。 とは異なるIPアドレスをお持ちの場合 127.0.0.53 システムが使用していない可能性があります systemd-resolved そして、次のセクションに進むことができます。 update-resolv-conf 代わりにスクリプト。

これらのクライアントをサポートするには、最初に openvpn-systemd-resolved パッケージ。 強制するスクリプトを提供します systemd-resolved DNS解決にVPNサーバーを使用します。

  1. sudo apt install openvpn-systemd-resolved

そのパッケージがインストールされている場合は、それを使用するようにクライアントを構成し、VPNインターフェイスを介してすべてのDNSクエリを送信します。 クライアントのVPNファイルを開きます。

  1. nano client1.ovpn

ここで、前に追加した次の行のコメントを解除します。

client1.ovpn
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .

を使用するクライアントの構成 update-resolv-conf

システムが使用していない場合 systemd-resolved DNSを管理するには、ディストリビューションに /etc/openvpn/update-resolv-conf 代わりにスクリプト:

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

クライアントに含まれている場合 update-resolv-conf ファイルを作成し、前に転送したOpenVPNクライアント構成ファイルを編集します。

  1. nano client1.ovpn

DNS設定を調整するために追加した3行のコメントを解除します。

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

これにより、VPNに接続されます。

注:クライアントが使用する場合 systemd-resolved DNSを管理するには、を実行して設定が正しく適用されていることを確認します systemd-resolve --status このようなコマンド:

  1. systemd-resolve --status tun0

次のような出力が表示されます。

Output
Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

OpenVPNサーバーで構成したDNSサーバーのIPアドレスと、 ~. 出力でDNSドメインを設定すると、VPNサーバーのDNSリゾルバーを使用するようにクライアントが正しく構成されます。 DNS Leak test.com などのサイトを使用して、VPN経由でDNSクエリを送信していることを確認することもできます。

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アプリを起動し、 FILE プロファイルをインポートするためのメニュー。

次に、保存されたプロファイルの場所に移動します(スクリーンショットでは /storage/emulated/0/openvpn)そしてあなたの .ovpn ファイル。 をタップします IMPORT ボタンをクリックして、このプロファイルのインポートを終了します。

接続プロファイルが追加されると、次のような画面が表示されます。

接続するには、使用するプロファイルの近くにあるトグルボタンをタップします。 OpenVPNサーバーを介してルーティングされている接続とトラフィックのリアルタイムの統計が表示されます。

切断するには、左上のトグルボタンをもう一度タップします。 VPNから切断することを確認するように求められます。

ステップ14— VPN接続のテスト(オプション)

注: VPN接続をテストするこの方法は、手順7ですべてのトラフィックをVPN経由でルーティングすることを選択した場合にのみ機能します。 server.conf OpenVPNのファイル。

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

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

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

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

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

これを行うには、 Ubuntu20.04証明書の取り消しセクションにある認証局を設定および構成する方法の前提条件チュートリアルの例に従います。

これらの手順を使用してクライアントの証明書を取り消したら、生成されたものをコピーする必要があります crl.pem OpenVPNサーバーへのファイル /etc/openvpn/server ディレクトリ:

  1. sudo cp /tmp/crl.pem /etc/openvpn/server/

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

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

ファイルの下部に、 crl-verify オプション。接続が試行されるたびに作成した証明書失効リストを確認するようにOpenVPNサーバーに指示します。

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

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

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

  1. sudo systemctl restart openvpn-server@server.service

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

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

  1. で証明書を取り消します ./easyrsa revoke client_name 指図
  2. 新しいCRLを生成する
  3. 新しいを転送します crl.pem ファイルをOpenVPNサーバーにコピーし、 /etc/openvpn/server/ 古いリストを上書きするディレクトリ。
  4. OpenVPNサービスを再起動します。

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

結論

これで、OpenVPNサーバー上で完全に機能する仮想プライベートネットワークが実行されているはずです。 悪意のある攻撃者があなたの活動を追跡することを心配することなく、Webを閲覧してコンテンツをダウンロードできます。

VPNに自動的に接続するようにクライアントを構成したり、クライアント固有のルールとアクセスポリシーを構成したりするなど、OpenVPNのインストールをさらにカスタマイズするために実行できるいくつかの手順があります。 これらおよびその他のOpenVPNのカスタマイズについては、公式のOpenVPNドキュメントを参照してください。

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

モバイルバージョンを終了