OpenVPNは、安全な VPN を実装するための最も人気があり、最も簡単なソリューションの 1 つであるオープンソース ソフトウェア スイートです。 OpenVPN を使用すると、サーバーとクライアント (NAT やファイアウォールの背後にある場合でも) を単一のネットワークに結合したり、リモート オフィスのネットワークに接続したりできます。 OpenVPN のサーバー部分は、Linux、Windows、MacOS、*BSD など、ほぼすべての利用可能なオペレーティング システムに導入できます。 OpenVPN サーバーは、Windows Server 2022/20119/2016/2012R2、またはデスクトップ Windows エディション (Windows 10 または 11) を実行しているコンピューターにもインストールできます。
この記事では、Windows 10 を実行しているコンピューターに OpenVPN サーバーをインストールして構成し、別の Windows デバイスに OpenVPN クライアントをセットアップして、安全な VPN 接続を確立する方法を示します。
コンテンツ:
- Windows に OpenVPN サーバー サービスをインストールする方法
- OpenVPN 暗号化キーと証明書を作成する
- Windows 用 OpenVPN サーバー構成ファイル
- Windows での OpenVPN クライアントの構成
OpenVPN は、リモートの従業員にアクセスを提供するために SOHO セグメントで非常に人気があります。Windows Server に基づいて VPN サーバーを構築するための特別なハードウェアやライセンスを購入する必要はありません。RDPポートインターネットへの接続を簡単に保護できます。RDP ブルート フォース攻撃。
Windows に OpenVPN サーバー サービスをインストールする方法
公式 Web サイト (https://openvpn.net/community-downloads/)。私たちの場合、これはOpenVPN-2.5.7-I602-amd64.msi(https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.7-I602-amd64.msi)。
セットアップを実行して選択しますOpenVPN サービスインストールします。 OpenVPN サーバーを自動的に起動したい場合は、OpenVPN GUI をインストールしなくても構いません。
OpenVPN 2.5 (およびそれ以降) は、ウィンタンWireGuard 開発者からのドライバー。このドライバーは、デフォルトの TAP OpenVPN ドライバーよりも高速です。 TAP-Windows6 の代わりに Wintun ドライバーをインストールすることをお勧めします。
をインストールしますEasyRSA 証明書管理スクリプトOpenSSL ユーティリティ。
インストールを完了します。
デフォルトでは、OpenVPN は C:\Program Files\OpenVPN にインストールされます。
インストールが完了すると、新しいネットワーク アダプターが表示されます。Wintun ユーザースペース トンネル。 OpenVPN サービスが実行されていない場合、このアダプターは無効になります。
OpenVPN 暗号化キーと証明書を作成する
OpenVPN は OpenSSL 暗号化に基づいています。これは、クライアントと VPN サーバー間のネットワーク接続を確立するために RSA3 キーと証明書を使用する必要があることを意味します。
コマンド プロンプトを開き、easy-rsa ディレクトリに移動します。
cd "C:\Program Files\OpenVPN\easy-rsa"
ファイルのコピーを作成します。
vars.example vars をコピー
を開きます変数任意のテキストエディタでファイルを作成します。 OpenVPN および EaseRSA 作業フォルダーへのパスを確認します。
以下に示すように、必ず EASYRSA_TEMP_DIR 変数を編集してください。
set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"
証明書フィールドに入力できます (オプション)。
set_var EASYRSA_REQ_COUNTRY "DE"set_var EASYRSA_REQ_PROVINCE "BY"set_var EASYRSA_REQ_CITY "MUN"set_var EASYRSA_REQ_ORG "WOSHUB-Com"set_var EASYRSA_REQ_EMAIL "[emailprotected]"set_var EASYRSA_REQ_OU "IT 部門"
証明書の有効期限を設定します。
set_var EASYRSA_CA_EXPIRE 3650 set_var EASYRSA_CERT_EXPIRE 825
ファイルを保存し、次のコマンドを実行します。
EasyRSA-Start.bat
次のコマンドはすべて EasyRSA シェルで実行する必要があります。
PKI を初期化します。
./easyrsa init-pki
次のメッセージが表示されるはずです。
init-pki が完了しました。これで、CA またはリクエストを作成できます。新しく作成した PKI ディレクトリは、C:/Program Files/OpenVPN/easy-rsa/pki です。
次に、ルート CA を生成します。
./easyrsa build-ca
CA パスワードを 2 回入力します。
CA の作成が完了したので、証明書リクエストをインポートして署名できるようになります。
上記のコマンドにより以下が作成されました。
- 証明機関のルート証明書:
C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt
- 認証局キー: C
:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key
次に、OpenVPN サーバーの証明書リクエストとキーを生成します。
./easyrsa gen-req サーバー nopass
このツールは次の 2 つのファイルを生成します。
要求:C:/プログラム ファイル/OpenVPN/easy-rsa/pki/reqs/server.req
鍵:C:/プログラム ファイル/OpenVPN/easy-rsa/pki/private/server.key
CA を使用してサーバー証明書を発行するリクエストに署名します。
./easyrsa 署名要求サーバー サーバー
入力してデータを確認しますはい。
次に、ルート CA の CA パスワードを入力します。
server.crt ファイルが次の場所に表示されます。発行済みフォルダー (C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt
)。
次に、Diffie-Hellman キーを生成できます (時間がかかります)。
./easyrsa gen-dh
VPN サーバーに追加の保護を提供するには、有効にすることをお勧めします。TLS認証。この機能により、SSL/TLS ハンドシェイクで HMAC 署名を使用できるようになり、追加の整合性チェックが開始されます。このような署名のないパケットは、VPN サーバーによってドロップされます。これにより、VPN サーバーのポート スキャン、DoS 攻撃、SSL/TLS バッファ オーバーフローなどから保護されます。
tls-auth キーを生成します。
cd C:\Program Files\OpenVPN\bin
openvpn --genkey シークレット ta.key
のC:\Program Files\OpenVPN\bin\ta.key
ファイルが表示されます。に移動しますC:\Program Files\OpenVPN\easy-rsa\pkiフォルダ。
その後、OpenVPN クライアントのキーを生成できます。 VPN サーバーに接続する各クライアントには、独自のキー ペアが必要です。
OpenVPN キーを生成してクライアントに配布するには、いくつかの方法があります。
以下の例では、サーバー上にクライアント キーを作成し、パスワード (PEM パス フレーズ) で保護します。
./easyrsa gen-req testuser1
./easyrsa 署名要求クライアント testuser1
キーファイルをコピーします(C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key
) クライアント コンピュータにパスワード (音声、電子メール、SMS) を伝えます。クライアントはキーのパスワード保護を無効にできます。
openssl rsa -in "C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key"-out "C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1_use.key"
パスワードで保護されていないキーを生成したい場合は、次のコマンドを実行する必要があります。
./easyrsa gen-req testuser2 nopass
VPN サーバー上でユーザー用に任意の数のキーと証明書を作成できます。他のクライアントのキーと証明書も同様に生成します。
侵害されたクライアント証明書を取り消すことができます。
cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
./easyrsa は testuser2 を取り消します
したがって、OpenVPN サーバー用のキーと証明書のセットを生成しました。これで、VPN サービスを構成して実行できるようになりました。
Windows 用 OpenVPN サーバー構成ファイル
OpenVPN サーバーの構成ファイル テンプレートをコピーします。
コピー "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"
任意のテキストエディタでserver.ovpnを開き、設定を行います。次の OpenVPN 構成を使用しています。
# ポート、プロトコル、デバイスの種類を指定しますport 1194proto udpdev tun# サーバー証明書へのパスを指定しますca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"cert "C:\\ Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt"key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key" dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem"# VPN クライアントがサーバー 10.24.1.0 255.255.255.0# から IP アドレスを取得する IP ネットワークの設定を指定します。クライアントが同じキーを使用して接続できるようにするには、duplicate-cn オプションを有効にします (推奨されません)# Duplicate-cn# TLS protectiontls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki \\ta.key" 0cipher AES-256-GCM# その他のオプションkeepalive 20 60persist-keypersist-tunstatus "C:\\Program Files\\OpenVPN\\log\\status.log"log "C:\\Program Files\\ OpenVPN\\log\\openvpn.log"verb 3mute 20windows-driver wintun
ファイルを保存します。
OpenVPN を使用すると、TCP プロトコルと UDP プロトコルの両方を使用できます。この例では、UDP ポート 1194 で OpenVPN を実行しています。UDPパフォーマンスとセキュリティの両方の点で最適であるためです。
クライアントとサーバーで指定した OpenVPN ポート番号のポートをファイアウォールで開くことを忘れないでください。あなたはできるPowerShell を使用して Windows Defender でポートを開く。
OpenVPN サーバーのファイアウォール ルール:
New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -方向 受信 -プロトコル UDP -LocalPort 1194 -アクション 許可
クライアントのルール:
New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -方向 アウトバウンド -プロトコル UDP -LocalPort 1194 -アクション 許可
次に、OpenVPN サービスを実行し、スタートアップの種類を自動に変更します。 PowerShell を使用してサービスを有効にします。
Set-Service OpenVPNService –startuptypeautomatic –passthru
Get-Service OpenVPNService|サービス開始
ネットワーク接続ダイアログを開きます(ncpa.cpl
)、OpenVPN Wintun 仮想アダプターが有効になっていることを確認します。そうでない場合は、ログ ファイルを確認してくださいC:\Program Files\OpenVPN\log\server.log
。
OpenVPN の起動時にログに次のエラーが表示される場合:
オプション エラー: C:\Program Files\OpenVPN\config-auto\server.ovpn:1: オプション行の最大長 (256) を超えています。行は次で始まります…
改行文字を次のように変更しますWindows CRLF(Notepad++ で、[編集] -> [EOL 変換] -> [Windows CR LF] を選択します)。ファイルを保存し、OpenVPNService を再起動します。
この OpenVPN 構成では、リモート クライアントがサーバー リソースにのみアクセスできるようになります。サーバーのローカル ネットワーク内の他のコンピューターとサービスは、リモート クライアントからは利用できません。 OpenVPN クライアントが内部 LAN にアクセスできるようにするには、IPEnableRouterレジストリのオプション (Windows で IP ルーティングを有効にするHyper-V ネットワーク間のルーティング、そしてあなたが使用することができますポートフォワーディング):
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v IPEnableRouter /t REG_DWORD /d 1 /f
ローカル IP ネットワークへのルートをサーバー構成ファイルに追加します。
「ルート 10.24.1.0 255.255.255.0」をプッシュ「ルート 192.168.31.0 255.255.255.0」をプッシュ
必要に応じて、DNS サーバーのアドレスをクライアントに割り当てます。
プッシュ「dhcp-option DNS 192.168.31.10」push「dhcp-option DNS 192.168.31.11」
すべてのクライアント要求 (インターネット トラフィックを含む) を OpenVPN サーバーにリダイレクトする場合は、次のオプションを追加します。
「リダイレクトゲートウェイdef1」をプッシュ
これらのオプションは、前に検討したケースについて説明しています。VPN に接続した後にインターネット接続が失われるそしてVPN接続時にDNS解決ができない。
Windows での OpenVPN クライアントの構成
次の設定を使用して、サーバー上に VPN クライアント用のテンプレート構成ファイル (client.ovpn テンプレートに基づく) を作成します (ファイル名はテストユーザー1.ovpn):
clientdev tunproto udpremote your_vpn_server_address 1194resolv-retryfinitynobindpersist-keypersist-tunca ca.crtcert testuser1.crtkey testuser1.keyremote-cert-tls servertls-auth ta.key 1cipher AES-256-GCMconnect-retry-max 25verb 3
OpenVPN サーバーのパブリック IP アドレスまたは DNS 名を指定します。リモート指令。
ダウンロードとインストールWindows 用 OpenVPN Connect(https://openvpn.net/downloads/openvpn-connect-v3-windows.msi)。
次に、次のファイルをサーバーから、OpenVPN クライアントがインストールされているコンピューターにコピーします。
- ca.crt
- テストユーザー1.crt
- testuser1.key
- dh.pem
- タキー
- テストユーザー1.ovpn
輸入*.ovpn
プロファイル ファイルを作成し、VPN サーバーへの接続を試みます。
正しく設定されている場合は、次の画像が表示されます。
クライアント上の OpenVPN 接続ログを確認します。C:\Program Files\OpenVPN Connect\agent.log
Mon Jul 17 08:09:30 2022 proxy_auto_config_urlMon Jul 17 08:09:31 2022 TUN SETUPTAP ADAPTERS:guid='{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}'index=22 name='ローカル エリア接続'TAP デバイスを開く"ローカル エリア接続" PATH="\\.\Global\{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}.tap" SUCCEEDEDTAP-Windows ドライバー バージョン 9.24ActionDeleteAllRoutesOnInterface iface_index=22netsh インターフェイス ip セット インターフェイス 22 metric=1Ok.netsh インターフェイス ipアドレスを設定 22 静的 10.24.1.10 255.255.255.252 ゲートウェイ = 10.24.1.5 ストア = activeIPHelper: ルートを追加 10.24.1.1/32 22 10.24.1.5 メトリック = -1
クライアントは VPN サーバーに正常に接続し、IP アドレス 10.24.1.10 を受け取りました。
次に、サーバー側の OpenVpn ログを確認します (C:\Program Files\OpenVPN\log\openvpn.log
)。ここでは、クライアントがテストユーザー1証明書がサーバーに正常に接続されました。
2022-07-17 08:09:35 192.168.13.20:55648 [tesuser1] [AF_INET6]::ffff:192.168.13.20:556482022-07-17 08:09:35 tesuser1/192.168.13.20:556 でピア接続が開始されました。 48 MULTI_sva: プールが返されました IPv4=10.24.1.10、IPv6=(無効)2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI: 学習: 10.24.1.10 -> testuser1/192.168.13.20:556482022- 07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI: tesuser1/192.168.13.20:55648 のプライマリ仮想 IP: 10.24.1.10