Ubuntu20.04でOpenVPNを設定する方法

OpenVPN 機能豊富なオープンソースのSecureSocket Layer(SSL)VPNです。 VPNを使用すると、ホテル、空港、モールのWIFIネットワークなどの信頼できないネットワークに安全に接続できます。 VPNを使用すると、企業ネットワークへの安全な接続でリソースにアクセスすることもできます。 トンネルは、SSL / TLS認証、証明書、資格情報を使用して保護されます。

このチュートリアルでは、セットアップ方法を説明します。 VPN を使用して OpenVPN の上 Ubuntu 20.04

前提条件

バージョン20.04で実行されている2つのUbuntuサーバーを使用します。

  • A 認証局(CA)サーバー これにより、要求が検証され、クライアントの証明書に署名されます。
  • OpenVPN VPNをインストールするサーバー。

CAサーバーを構成する

CA(認証局)として機能するスタンドアロンサーバーを維持することをお勧めします。 これはセキュリティ上の理由によるものです。 CAサーバーの構成に進みましょう。

まず、システムが更新されていることを確認します。 次のコマンドを実行します。

$ sudo apt update

認証局サーバーの構成には、root以外のユーザーを作成する必要があります。

$ sudo adduser malain

次に、ユーザーに sudo 特権:

$ sudo usermod -aG sudo malain

次に、ログアウトしてから、root以外のユーザーで再度ログインします。

EasyRSAをCAサーバーにインストールします

Easy-rsa PKICAを構築および管理するためのCLIユーティリティです。 Easy-RSAは、CAサーバーが秘密鍵と公開ルート証明書を生成するために使用します。これらの証明書は、CAに依存するクライアントとサーバーからの要求に署名するために使用されます。

easy-rsaをインストールするには、wgetを使用してgithubからPKI管理ツールをダウンロードします。

$ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz

次に、tgzファイルを解凍します。

$ tar xvf EasyRSA-3.0.8.tgz

ユーザーのみにアクセスを制限するには、次を使用します。

$ chmod 700 EasyRSA-3.0.8

次に、EasyRSAをに移動します opt ディレクトリ

$ sudo mv EasyRSA-3.0.8 /opt/

使用しています EasyRSA 3.0.8 この構成のバージョン。

EasyRSAを使用してCAを作成する

まず、という名前のファイルを作成する必要があります vars 組織情報を保存します。 このために、私たちは使用することができます example EasyRSA-3.0.8ディレクトリで利用可能なファイル。

EasyRSAディレクトリの下のファイルを一覧表示するには、次を使用します。

$ cd EasyRSA-3.0.8/ && ls -l

出力:

-rw-rw-r-- 1 malain malain 1305 Sep 9 2020 COPYING.md
-rw-rw-r-- 1 malain malain 5056 Sep 9 2020 ChangeLog
-rw-rw-r-- 1 malain malain 2049 Sep 9 2020 README.md
-rw-rw-r-- 1 malain malain 3335 Sep 9 2020 README.quickstart.md
drwxrwxr-x 2 malain malain 4096 Sep 9 2020 doc
-rwxrwxr-x 1 malain malain 76946 Sep 9 2020 easyrsa
-rw-rw-r-- 1 malain malain 18093 Sep 9 2020 gpl-2.0.txt
-rw-rw-r-- 1 malain malain 1036 Sep 9 2020 mktemp.txt
-rw-rw-r-- 1 malain malain 4616 Sep 9 2020 openssl-easyrsa.cnf
-rw-rw-r-- 1 malain malain 8925 Sep 9 2020 vars.example
drwxrwxr-x 2 malain malain 4096 Mar 28 14:14 x509-types

ファイルvarsのコピーを作成します。example 変数として:

$ cp vars.example vars

次に、varsファイルを開き、ファイルの最後に組織情報を追加します。

$ vim vars
set_var EASYRSA_REQ_COUNTRY "CM"
set_var EASYRSA_REQ_PROVINCE "Littoral"
set_var EASYRSA_REQ_CITY "Douala"
set_var EASYRSA_REQ_ORG "OPEN-SHARE"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "Com"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

次に、CAサーバーでPKIを初期化します。これにより、pkiフォルダーが作成されます。

$ ./easyrsa init-pki

これで、 ルートパブリック秘密鍵ペア 私たちのCAのために。 プロセス中、通常、証明書に署名または取り消す必要があるときはいつでも、キーペアのパスフレーズを入力するように求められます。 この例では、パスフレーズの入力を求められないようにコマンドを使用します。 また、 一般名 (CN)ただし、を押してデフォルトのままにします Enter 鍵。

$ ./easyrsa build-ca nopass

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
read EC key
writing EC 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.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/opt/EasyRSA-3.0.8/pki/ca.crt

これにより作成されます ルート証明書 pkiディレクトリとpの名前付きca.crtファイルrivateキー pki / privateディレクトリのca.key。

$ ls -l pki/
total 52
-rw------- 1 malain malain 749 Mar 28 14:30 ca.crt
drwx------ 2 malain malain 4096 Mar 28 14:29 certs_by_serial
drwx------ 2 malain malain 4096 Mar 28 14:29 ecparams
-rw------- 1 malain malain 0 Mar 28 14:29 index.txt
-rw------- 1 malain malain 0 Mar 28 14:29 index.txt.attr
drwx------ 2 malain malain 4096 Mar 28 14:29 issued
-rw------- 1 malain malain 4616 Mar 28 14:24 openssl-easyrsa.cnf
drwx------ 2 malain malain 4096 Mar 28 14:30 private
drwx------ 5 malain malain 4096 Mar 28 14:29 renewed
drwx------ 2 malain malain 4096 Mar 28 14:24 reqs
drwx------ 5 malain malain 4096 Mar 28 14:29 revoked
-rw------- 1 malain malain 4575 Mar 28 14:24 safessl-easyrsa.cnf
-rw------- 1 malain malain 3 Mar 28 14:29 serial

$ ls -l pki/private/
total 4
-rw------- 1 malain malain 288 Mar 28 14:29 ca.key

これで、CAサーバーの準備が整いました。

Openvpnサーバーのインストールと構成

2番目のサーバーにジャンプして、openvpnをインストールして構成しましょう。 また、このサーバーでroot以外のユーザーを作成し、彼に sudo 特権。

openvpnをインストールする ubuntuで、次のコマンドを実行します。

$ sudo apt update
$ sudo apt install openvpn

openvpnサーバーでは、easyrsaを使用して、CAサーバーによって検証および署名される証明書要求を生成します。 前のセクションで行ったのと同じ手順に従って、Easyrsaをインストールします。

$ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz

ダウンロードしたtgzファイルを解凍します。

$ tar xvf EasyRSA-3.0.8.tgz

ユーザーのみにアクセスを制限します。

$ chmod 700 EasyRSA-3.0.8

EasyRSA-3.0.8をに移動します opt ディレクトリ:

$ sudo mv EasyRSA-3.0.8 /opt/

PKIを作成する

今、私たちはする必要があります PKIを作成する これは、VPNに接続するクライアントおよびその他のサーバーのTLS証明書を要求および管理するのに役立ちます。

すでに利用可能なサンプルファイルを使用してvarsファイルを作成しましょう。

$ cp vars.example vars

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

$ vim vars
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

PKIフォルダを作成するには openvpnサーバーで、 easyrsa スクリプトファイル:

$ ./easyrsa init-pki

出力:

注:次のEasy-RSA構成を使用します:/opt/EasyRSA-3.0.8/vars init-pki complete; これで、CAまたはリクエストを作成できます。 新しく作成されたPKIディレクトリは次のとおりです:/opt/EasyRSA-3.0.8/pki

サーバー証明書要求と秘密鍵を作成します

今、私たちは生成します 秘密鍵証明書要求 OpenVPNサーバー上。 次に、必要な証明書を作成するために、署名する証明書要求ファイルをCAサーバーに転送します。

同じフォルダにあるので、リクエストを生成できます nopass オプション。 次のコマンドは、openvpn-server.keyという名前の秘密鍵ファイルとopenvpn-server.reqという名前の証明書要求ファイルを作成します。

$ ./easyrsa gen-req openvpn-server nopass

出力:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020
Generating an EC private key
writing new private key to '/opt/EasyRSA-3.0.8/pki/easy-rsa-4737.CGhQHN/tmp.UGQ9wi'
-----
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.
-----
Common Name (eg: your user, host, or server name) [openvpn-server]:

Keypair and certificate request completed. Your files are:
req: /opt/EasyRSA-3.0.8/pki/reqs/openvpn-server.req
key: /opt/EasyRSA-3.0.8/pki/private/openvpn-server.key

次に、openvpn-server.keyという名前のサーバーキーファイルを/ etc / openvpn / serverという名前のディレクトリにコピーします。

$ sudo cp /opt/EasyRSA-3.0.8/pki/private/openvpn-server.key /etc/openvpn/server

次に、証明書要求ファイルをにコピーします CAサーバー

$ scp /opt/EasyRSA-3.0.8/pki/reqs/openvpn-server.req [email protected]:/tmp

CAサーバで、easyrsaディレクトリに移動します。

$ cd /opt/EasyRSA-3.0.8/

リクエストをインポートする、次のコマンドを実行します。

$ ./easyrsa import-req /tmp/openvpn-server.req openvpn-server

出力:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020

The request has been successfully imported with a short name of: openvpn-server
You may now use this name to perform signing operations on this request.

次に、リクエストに署名します。 サーバーのリクエストに署名しているので、ディレクティブを使用する必要があります server openvpnサーバーの共通名の前。 クライアントのリクエストの場合は、ディレクティブを使用する必要があります client 代わりは。

リクエストに署名する

$ ./easyrsa sign-req server openvpn-server

出力:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020

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 825 days:

subject=
commonName = openvpn-server

Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /opt/EasyRSA-3.0.8/pki/easy-rsa-4100.IbygpP/tmp.hJY2T5
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'openvpn-server'
Certificate is to be certified until Jul 1 19:50:36 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /opt/EasyRSA-3.0.8/pki/issued/openvpn-server.crt

これで、OpenVPNサーバーの証明書要求がCAサーバーによって署名されたので、署名された要求と公開証明書をOpenVPNサーバーに転送する必要があります。

$ scp pki/{ca.crt,issued/openvpn-server.crt} [email protected]:/tmp

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

ここで、tls-crypt事前共有キーを生成して、OpenVPNサーバーが認証されていないトラフィック、ポートスキャン、およびサーバーのリソースを大量に使用する可能性のあるいくつかの攻撃に対処できるようにします。

$ ./easyrsa gen-dh

出力:

注:Easy-RSA構成の使用:/opt/EasyRSA-3.0.8/vars SSLの使用:openssl OpenSSL 1.1.1f 2020年3月31日DHパラメーターの生成、2048ビット長の安全素数、ジェネレーター2これには長い時間がかかります……………………………… +…………。 ………………………………………….。 ………………………………………….。 ……………………………………………。 ………………………….. + ……. + ……. +。 .. ….. +…………………………………..。 ……………. …………………………. ++ * ++ * ++ * +++ / opt / EasyRSA-3.0.8 / pki / dh.pemで作成されたサイズ2048のDHパラメータ

$ openvpn --genkey --secret ta.key

次に、キーファイルとpemファイルをディレクトリ/ etc / openvpn / serverにコピーします。

$ sudo cp ta.key pki/dh.pem /etc/openvpn/server

クライアント証明書とキーのペアを生成する

クライアントの証明書とキーを保持するためのディレクトリを作成する必要があります。 root以外のユーザーに許可を与えるようにしてください。

$ sudo mkdir -p /opt/client-configs/keys
$ sudo chown franck:franck -R /opt/client-configs
$ sudo chmod 700 -R /opt/client-configs

クライアント証明書の要求を生成します。

$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa gen-req my-pc nopass

出力:

注:Easy-RSA構成の使用:/opt/EasyRSA-3.0.8/vars SSLの使用:openssl OpenSSL 1.1.1f 2020年3月31日新しい秘密鍵を ‘/opt/EasyRSA-3.0.8/に書き込むEC秘密鍵の生成pki / easy-rsa-6961.m7fBMu / tmp.dkqaZI ‘—–証明書要求に組み込まれる情報の入力を求められようとしています。 入力しようとしているのは、いわゆる識別名またはDNです。 かなりの数のフィールドがありますが、空白のままにすることができます。一部のフィールドにはデフォルト値があります。「。」と入力すると、フィールドは空白のままになります。 —–一般名(例:ユーザー、ホスト、またはサーバー名) [my-pc]:キーペアと証明書の要求が完了しました。 ファイルは次のとおりです。req:/opt/EasyRSA-3.0.8/pki/reqs/my-pc.reqキー:/opt/EasyRSA-3.0.8/pki/private/my-pc.key

次に、クライアントキーをclient-configsディレクトリにコピーします。

$ cp pki/private/my-pc.key /opt/client-configs/keys/

クライアント証明書要求ファイルをCAサーバーにコピーします。

$ scp pki/reqs/my-pc.req [email protected]:/tmp

CAサーバーで、CSRをインポートします。

$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa import-req /tmp/my-pc.req my-pc

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020

The request has been successfully imported with a short name of: my-pc
You may now use this name to perform signing operations on this request.

次に、クライアントのリクエストに署名する必要があります。次のように入力します。

$ ./easyrsa sign-req client my-pc

出力:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020

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 client certificate for 825 days:

subject=
commonName = my-pc

Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /opt/EasyRSA-3.0.8/pki/easy-rsa-5511.IwDcbS/tmp.doUbCv
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'my-pc'
Certificate is to be certified until Jul 1 21:33:52 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /opt/EasyRSA-3.0.8/pki/issued/my-pc.crt

openvpnサーバーにクライアント証明書をコピーします。

$ scp pki/issued/my-pc.crt [email protected]:/tmp

ここで、openvpnサーバーで、すべてのクライアントファイルを以前に作成したクライアントディレクトリにコピーする必要があります。

$ sudo cp /tmp/my-pc.crt /opt/client-configs/keys/

$ sudo cp /etc/openvpn/server/ca.crt /opt/client-configs/keys/

$ cp /opt/EasyRSA-3.0.8/ta.key /opt/client-configs/keys/

root以外のユーザーがファイルに対する権限を持っていることを確認してください。

$ sudo chown franck:franck /opt/client-configs/keys/*

VPNサービスを構成する

まず、使用するテンプレートのコピーを作成する必要があります

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

次に、ファイルを解凍します

$ sudo gzip -d /etc/openvpn/server/server.conf.gz

そして、フォルダに入ります

$ cd /etc/openvpn/server

一部の行は、構成に一致するように置き換えられます::

  • 暗号暗号はに設定されます AES-256-CBC
  • HMACメッセージダイジェストアルゴリズムは次のようになります sha256
  • Diffie-Hellmanパラメーターも使用するため、次のように設定します。 dh.pem
  • ユーザーを使用します 誰でもない とグループ nogroup 開始後に特権なしでopenvpnを実行する
  • DNSの変更をプッシュして、値を使用してVPNを介してすべてのトラフィックをリダイレクトします push redirect-gateway def1 bypass-dhcppush dhcp-option DNS 208.67.222.222push dhcp-option DNS 208.67.220.220
  • デフォルトのポートを保持します 1194
  • を使用します udp プロトコル
  • キーを示す必要があります openvpn-server.key および証明書 openvpn-server.crt クレデンシャルとして使用する

したがって、ファイルは次のようになります。

$ sudo vim /etc/openvpn/server/server.conf
tls-crypt ta.key
cipher AES-256-CBC
auth SHA256
dh dh.pem
user nobody
group nogroup
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
port 1194
proto udp
explicit-exit-notify 1
cert openvpn-server.crt
key openvpn-server.key

/etc/sysctl.confのnet.ipv4.ip_forward値を編集して、IPv転送をアクティブ化する必要があります。

$ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1

/etc/sysctl.confで行った変更を有効にするには、次のコマンドを実行します。

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

次に、マスカレードを有効にして、ファイアウォールを通過するOpenVPNを許可する必要があります。 そのためには、パブリックネットワークインターフェイスの名前を特定する必要があります。

$ ip route | grep default
default via X.X.X.X dev eth0 proto static

私たちの場合、それはeth0です。 次に、ファイアウォール構成にマスカレードルールを追加する必要があるため、ルールのファイルの先頭に次の行を追加します。

$ sudo vim /etc/ufw/before.rules
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to the public server interface eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

次に、ufwを編集して、デフォルトで転送されたパケットを許可しましょう。

$ sudo vim /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

ファイアウォールでopenvpnポートを開きます。

$ sudo ufw allow '1194/udp'

ufwサービスを再起動するには、次のように入力します。

$ sudo ufw disable && sudo ufw enable

システムの起動時にopenvpnサービスを開始できるようにするには、次のように入力します。

$ sudo systemctl enable openvpn-server@server

openvpnを開始するには、次のように入力します。

$ sudo systemctl start openvpn-server@server

openvpnのステータスは次の方法で確認できます。

$ sudo systemctl status openvpn-server@server

出力:

[email protected] - OpenVPN service for server
Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
Active: active (running) since Sun 2021-03-28 23:30:57 UTC; 8s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 78132 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 1073)
Memory: 1.0M
CGroup: /system.slice/system-openvpnx2dserver.slice/[email protected]
└─78132 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf

Mar 28 23:30:57 localhost systemd[1]: Starting OpenVPN service for server...
Mar 28 23:30:57 localhost systemd[1]: Started OpenVPN service for server.

トンネルインターフェースを確認するには、次のように入力します。

$ ip addr show tun0

出力:

3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel 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
inet6 fe80::c3d9:85d1:e2a9:6b2c/64 scope link stable-privacy
valid_lft forever preferred_lft forever

クライアントのVPNファイルを構成する

$ sudo mkdir -p /opt/client-configs/files

次に、サンプル構成ファイルをコピーする必要があります

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

root以外のユーザーに権限を与える

$ sudo chown franck:franck -R /opt/client-configs/

base.confファイルを編集します

$ vim /opt/client-configs/base.conf
remote your_server_ip 1194
proto udp
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
#ca ca.crt
#cert client.crt
#key client.key
#tls-auth ta.key 1
cipher AES-256-CBC
auth SHA256
key-direction 1
# For the clients using resolvconf for DNS resolution, uncomment the lines below on the client computer
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf
# Instead for the clients using systemd-resolved for DNS resolution, uncomment the lines below on the client computer
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .

次に、クライアントで証明書と暗号化ファイルを生成するスクリプトを作成します。 このスクリプトは、base.confファイルのコピーも作成し、クライアント用に作成されたすべてのキーと証明書を収集します。 クライアントごとに、スクリプトを実行する前に証明書とキーを生成する必要があります

$ vim /opt/client-configs/make_config.sh
#!/bin/bash

# First argument: Client identifier

KEY_DIR=/opt/client-configs/keys
OUTPUT_DIR=/opt/client-configs/files
BASE_CONFIG=/opt/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

root以外のユーザーのみがスクリプトを実行できることを確認してください。

$ chmod 700 /opt/client-configs/make_config.sh

これで、クライアントキーと証明書の構成(my-pc.crtとmy-pc.key)に基づいてクライアント接続ファイルを生成できます。

$ cd /opt/client-configs

次に、スクリプトを実行し、続いてクライアントに使用される共通名を実行します。これにより、使用するクライアントVPNファイルが作成されます。

$ ./make_config.sh my-pc

結果を確認できます。

$ ls -l files/
total 12
-rw-rw-r-- 1 franck franck 8598 Mar 30 11:12 my-pc.ovpn

クライアントをOpenVPN接続に接続します

クライアントにopenvpnをインストールします。 これは、サーバーとのVPN接続を確立するために使用されます

$ sudo apt update && sudo apt install openvpn -y

次に、サーバー上にあるOpenVPNクライアントファイルをクライアントコンピューターにコピーします。 したがって、クライアントコンピュータで、次のコマンドを実行します。

$ rsync -av [email protected]:/opt/client-configs/files/my-pc.ovpn .

クライアントのOpenVPN構成ファイルを編集する前に、DNS解決にresolvconfまたはsystemd-resolvedのどちらを使用しているかを確認する必要があります

$ cat /etc/resolv.conf
OUTPUT:
# This file is managed by man:systemd-resolved(8). Do not edit.
. . .

nameserver 127.0.0.53
options edns0

値で nameserver 127.0.0.53、systemd-resolvedを使用していることを示しています。 したがって、接続時にDNS解決にVPNを使用するようにsystemd-resolvedを支援するパッケージをインストールします。

$ sudo apt install openvpn-systemd-resolved

これで、systemd-resolvedに必要な行のコメントを解除して、VPNクライアントファイルを編集できます。

$ vim my-pc.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を使用しているシステムの場合、行のコメントを解除します

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

それでは試してみましょう VPNへの接続 クライアント構成ファイルへのopenvpnコマンドの使用:

$ sudo openvpn --config my-pc.ovpn

トンネルインターフェースのIP情報を確認できます

$ ip a

これにより、トンネルIPアドレスが表示され、OpenVPNサーバーにpingを実行できます。 これにより、同じプライベートネットワークにいるかのようにサーバーにアクセスできることを確認できます。

結論

OpenVPNを使用すると、VPN接続を簡単に設定できます。 これは、仮想ファイアウォールなどの特殊なソリューションを使用せずに、クラウドサーバーにVPNソリューションをセットアップする場合に適したソリューションです。 これは高速で安全なソリューションです。