はじめに
仮想プライベートネットワーク(VPN)は、すべてのネットワークトラフィックを暗号化し、ユーザーをマスクして、信頼できないネットワークからユーザーを保護します。企業ネットワークへの安全な接続を提供し、地理的制限を回避し、データをプライベートに保ちながら、パブリックWi-Fiネットワークを使用してWebを閲覧できるようにします。
OpenVPNは、フル機能のオープンソースのSecure Socket Layer(SSL)VPNソリューションです。
このチュートリアルでは、CentOS 7サーバーでOpenVPNをセットアップし、クライアントマシンからOpenVPNに接続する方法を学習します。
前提条件
- CentOS7またはCentOS8サーバー
- root(sudo)アクセス権を持つユーザーアカウント
- コマンドライン/ターミナルウィンドウへのアクセス
- サーバーに解決されるドメインまたはサブドメイン
- OpenVPNサーバーに接続するクライアントマシン
ステップ1:OpenVPNをインストールする
1.次のコマンドを実行してCentOSリポジトリとパッケージを更新します:
yum update -y
2.デフォルトのCentOSリポジトリからOpenVPNパッケージをダウンロードすることはできません。ただし、OpenVPNは、エンタープライズLinux用の追加パッケージ(EPEL)リポジトリで利用できます。 EPELリポジトリを有効にするには、次のコマンドを実行します。
yum install epel-release -y
3.リポジトリを再度更新します:
yum update -y
4.これで、次のコマンドを使用してOpenVPNをインストールできます。
yum install -y openvpn
ステップ2:EasyRSAをインストールする
次のステップは、公開鍵インフラストラクチャ(PKI)を構築することです。これを行うには、 easy RSAをインストールする必要があります 、PKI認証局(CA)を作成および管理するためのCLIユーティリティ。
Easy RSAは、内部認証局(CA)を設定し、SSLキーペアを生成してVPN接続を保護するのに役立ちます。
1.簡単なRSAパッケージをダウンロードするには、 wget
を使用します 指図。 CenOSシステムにwgetがない場合は、次のコマンドを実行してインストールします。
yum install -y wget
2.執筆時点では、CLIユーティリティの最新バージョンは3.0.8であり、これをダウンロードします。別のバージョンを使用するには、GitHubの簡単なRSAのリリースページを確認してください。
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.8.tar.gz
3.次に、ダウンロードしたアーカイブを抽出します:
tar -xf v3.0.8.tar.gz
4.新しいopenvpnを作成して移動します ディレクトリ:
cd /etc/openvpn/
5.次に、サブディレクトリ easy-rsa
を作成します パス/etc/openvpn
の下 :
mkdir /etc/openvpn/easy-rsa
6.抽出したディレクトリを/etc/ openvpn / easy-rsaに移動します:
mv /root/easy-rsa-3.0.8 /etc/openvpn/easy-rsa
easy-rsa-3.0.8からすべてを正常に移動したかどうかを確認するには ディレクトリで、 cd /etc/openvpn/easy-rsa
を使用してeasy-rsaに移動します ls
でコンテンツを一覧表示します 。下の画像のように、ファイルとフォルダのリストが表示されます。
ステップ3:OpenVPNを構成する
OpenVPNとEasyRSAをインストールしたら、OpenVPNサーバーの構成に進むことができます。
このセクションの手順は、基本構成のセットアップに役立ちます。必要に応じて変更できます。
コマンドを実行する前に、必ずルートディレクトリに戻ってください。これを行うには、 cd
と入力します ターミナルウィンドウでEnterを押します 。
1.最初のステップは、サンプルの server.confをコピーすることです。 OpenVPNのドキュメントディレクトリからのファイル:
cp /usr/share/doc/openvpn-2.4.9/sample/sample-config-files/server.conf /etc/openvpn
OpenVPNサンプル構成ファイルが見つからない場合は、 find
を使用してその場所を検索してください コマンド:
find / -name server.conf
2.次に、コピーした構成ファイルを選択したテキストエディタで開きます。
vi etc/openvpn/server.conf
このコマンドは、サンプルのOpenVPN構成ファイルを開きます。ファイル内のコメントはハッシュタグ#で始まります またはセミコロン;
。
3.基本構成を設定するには、コメントを外す必要があります セミコロンを削除して次の行を表示します。
topology subnet
(OpenVPNインストールをサブネットワークとして機能させます)-
push "redirect-gateway def1 bypass-dhcp"
(OpenVPNサーバーを介してトラフィックをリダイレクトするようにクライアントに指示します) -
push "dhcp-option DNS 208.67.222.222"
(OpenDNSリゾルバーを使用してOpenVPNに接続します) -
push "dhcp-option DNS 208.67.220.220"
(OpenDNSリゾルバーを使用してOpenVPNに接続します) -
user nobody
(特権なしでOpenVPNを実行します) group nobody
(特権なしでOpenVPNを実行します)
4.次に、静的暗号化キーを生成してTLS認証を有効にします。これを行うには、 tls-auth ta.key 0
という行を見つけます。 ;
を追加してコメントします その前に。次に、その下に新しい行を追加します:
tls-crypt myvpn.tlsauth
5.構成ファイルを保存して終了します。
6.最後に、次のコマンドを使用して、ファイルで指定された静的暗号化キーを生成します。
openvpn --genkey --secret /etc/openvpn/myvpn.tlsauth
ステップ4:キーと証明書を生成する
1. varsを作成します vars.exampleを使用した構成ファイル / easy-rsa / easyrsa3に保存されます ディレクトリ。上記のディレクトリに移動します:
cd /etc/openvpn/easy-rsa/easyrsa3
2. ls
を使用してコンテンツを一覧表示できます vars.exampleがあるかどうかを確認するコマンド ファイル。
3.サンプルファイルvars.exampleをコピーします varsという名前で :
cp vars.example vars
ディレクトリ内のファイルを再度リストする場合は、別の変数が必要です。 EasyRSAの構成に使用できるファイル。
4. varsを開きます 選択したテキストエディタのファイル:
vi vars
5.ファイルをスクロールして、以下の行を見つけます。
#set_var EASYRSA_REQ_COUNTRY "US"
#set_var EASYRSA_REQ_PROVINCE "California"
#set_var EASYRSA_REQ_CITY "San Francisco"
#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
#set_var EASYRSA_REQ_EMAIL "[email protected]"
#set_var EASYRSA_REQ_OU "My Organizational Unit"
6. #
を削除して、行のコメントを解除します デフォルト値を自分の情報に置き換えます。
7.次に、 KEY_NAMEを指定する行を見つけます "server"
に変更します :
export KEY_NAME="server"
8.最後に、 KEY_CNを変更します サーバーに解決されるドメインまたはサブドメインに。
export KEY_CN=openvpn.yourdomain.com
9.ファイルを保存して閉じます。
10.以前のキーをクリーンアップし、認証局を生成します。
./easyrsa clean-all
11.これで、 build-ca
を使用して認証局の構築に進むことができます。 脚本。コマンドを実行します:
./easyrsa build-ca
CAキーパスフレーズとCAの一般名を設定するように求められます。
12.サーバーのキーと証明書を作成します。
./easyrsa build-server-full server
13.次に、次のコマンドを実行して、Diffie-Hellman鍵交換ファイルを生成します。
./easyrsa gen-dh
14.クライアントごとに証明書も必要です。それらをサーバー上で生成してから、クライアントマシンにコピーします。
次のコマンドを使用して、 client1の証明書とキーを作成します 。任意の名前を使用してコマンドを変更できます。
./easyrsa build-client-full client1
15.キーと証明書を生成したら、 pkiからそれらをコピーします openvpnに ディレクトリ。これを行うには、 pkiに移動します 実行によるディレクトリ:
cd /etc/openvpn/easy-rsa/easyrsa3/pki
合計4つのファイルをコピーする必要があります:
- ca.crt
- dh.pem
- ca.key
- server.key
最初の2つのファイル( ca.crt およびdh.pem )は pkiに保存されます ディレクトリ、 ca.key およびserver.key サブディレクトリpki/ privateにあります 。
したがって、 ca.crtをコピーします およびdh.pem openvpnに 最初のディレクトリ:
cp ca.crt dh.pem /etc/openvpn
次に、サブディレクトリ privateに移動します 、 ca.keyをコピーします およびserver.key 実行することにより:
cd private
cp ca.key server.key/etc/openvpn
ステップ5:ファイアウォールとルーティングの構成
ファイアウォールルールの設定
1.アクティブなfirewalldゾーンを確認することから始めます:
firewall-cmd --get-active-zones
出力には、firewalldゾーンが表示されます。以下の例では、 public 。
2. openvpnを追加します アクティブゾーン内でfirewalldが許可するサービスのリストへのサービス。この例のアクティブゾーンはパブリックです 。アクティブゾーンが信頼できる場合は、それに応じてコマンドを変更します。
firewall-cmd --zone=public --add-service openvpn
3.次に、次のコマンドを実行して、上記の設定を永続的にします。
firewall-cmd --zone=public --add-service openvpn --permanent
4. openvpnサービスが追加されたかどうかを確認するには、次を使用します。
firewall-cmd --list-services --zone=public
5.次に、ランタイムインスタンスにマスカレードを追加します。
firewall-cmd --add-masquerade
6.そしてそれを永続的にします:
firewall-cmd --add-masquerade --permanent
7.次を実行して、マスカレードが追加されたことを確認します。
firewall-cmd --query-masquerade
出力はyes
で応答する必要があります 。
構成のルーティング
上記の手順を完了したら、OpenVPNサブネットへのルーティングに進みます。
1.サーバーが使用するプライマリネットワークインターフェイスを表す変数を作成します。以下のコマンドでは、変数の名前は VAR
です。 。ただし、任意の名前で変数を作成できます。
VAR=$(ip route get 208.67.222.222 | awk 'NR==1 {print $(NF-2)}')
2.次に、上記で作成した変数を使用してルーティングルールを永続的に追加します。
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE
3.変更を行うためにfirewalldをリロードします:
firewall-cmd --reload
4. IP転送を有効にして、クライアントからサーバーのIPアドレスへのすべてのWebトラフィックのルーティングに進みます。 sysctl.confを開きます ファイル:
vi /etc/sysctl.conf
5.ファイルの先頭に次の行を追加します。
net.ipv4.ip_forward = 1
6.最後に、サービスを再起動します。
systemctl restart network.service
ステップ6:OpenVPNを開始する
1. OpenVPNサービスを開始するには、次のコマンドを実行します:
systemctl -f start [email protected]
2.次に、次のコマンドを実行して、起動時に起動できるようにします。
systemctl -f enable [email protected]
3.サービスがアクティブであることを確認します:
systemctl status [email protected]
出力は、サーバーのOpenVPNサービスがアクティブであると応答する必要があります(実行中) 。
ステップ7:OpenVPNクライアントを構成する
OpenVPNサーバーですべてをセットアップしたら、クライアントマシンを構成してサーバーに接続できます。
手順4で説明したように、各クライアントマシンには、CA証明書、クライアントキー、SSL証明書、および暗号化キーのローカルコピーが必要です。
1.次のファイルを見つけて、サーバーからクライアントマシンにコピーします。
- /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/client.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/private/client.key
- /etc/openvpn/myvpn.tlsauth
2.次に、OpenVPNクライアントの構成ファイルを client.ovpnという名前で作成します クライアントマシン上:
vi client.ovpn
3.次のコンテンツをファイルに追加します。
client
tls-client
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key
tls-crypt /path/to/myvpn.tlsauth
remote-cert-eku "TLS Web Client Authentication"
proto udp
remote your_server_ip 1194 udp
dev tun
topology subnet
pull
user nobody
group nobody
太字の部分は、尊重されている値に置き換えてください。
4.ファイルを保存して閉じます。
ステップ8:クライアントをOpenVPNに接続する
OpenVPNに接続する方法の説明は、クライアントマシンのオペレーティングシステムによって異なります。
Linuxユーザーの場合
OpenVPNに接続するには、次のコマンドを実行します:
openvpn --config /path/to/client.ovpn
Windowsユーザー向け
1.まず、 client.ovpnをコピーします C:Program FilesOpenVPNconfigの構成ファイル ディレクトリ。
2.OpenVPNアプリケーションをダウンロードしてインストールします。最新のビルドは、OpenVPNコミュニティのダウンロードページにあります。アプリケーションをインストールしたら、OpenVPNを起動します。
3. OpenVPNシステムトレイアイコンを右クリックして、接続を選択します 。このタスクを実行するには、管理者権限が必要です。
macOSユーザー向け
Tunnelblick(OS XおよびmacOS上のOpenVPN用のオープンソースグラフィックユーザーインターフェイス)を使用して、macOSシステムからOpenVPNに接続できます。
Tunnelblickを起動する前に、必ず client.ovpnを保存してください 〜/ Library / Application Support / Tunnelblick/Configurationsディレクトリの構成ファイル 。