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-dhcp
、push dhcp-option DNS 208.67.222.222
、push 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ソリューションをセットアップする場合に適したソリューションです。 これは高速で安全なソリューションです。