6.13. nmstatectl を使用して IPsec ベースの VPN 接続を設定する
IPsec VPN 接続を設定して、信頼できないネットワーク上に暗号化されたトンネルを確立し、転送中のデータの完全性を確保します。Nmstate を使用すると、宣言型の API を使用して IPsec VPN 接続を作成できます。
nmstatectl ユーティリティーを使用すると、Nmstate API を介して Libreswan IPsec VPN 接続を設定できます。nmstatectl ユーティリティーは、宣言型の Nmstate API を通じてホストネットワークを管理するためのコマンドラインツールです。ユーザーは複数の命令的なコマンドを実行してインターフェイスを設定するのではなく、YAML ファイルで目的の状態を定義します。Nmstate はこの定義を取得してシステムに適用します。このアプローチの主な利点は、アトミックな結果です。Nmstate は、最終的な設定を YAML 定義と正確に一致させます。設定の一部が適用に失敗した場合、すべての変更が自動的にロールバックされるため、システムで不適切なネットワーク状態や壊れたネットワーク状態が発生しません。
NetworkManager-libreswan プラグインの設計上、nmstatectl は一方のピアでのみ使用できます。他方のピアでは Libreswan を手動で設定する必要があります。
6.13.1. nmstatectl を使用して raw RSA 鍵認証による IPsec ホスト間 VPN を設定する リンクのコピーリンクがクリップボードにコピーされました!
宣言型の Nmstate API を使用すると、2 つのデバイス間でホスト間 VPN を設定して、セキュアでないネットワーク経由でセキュアに通信することができます。Nmstate を使用すると、結果が必ず設定ファイルと一致したものになります。一致しない場合は、変更がロールバックされます。
認証に関しては、RSA 鍵は事前共有鍵 (PSK) よりもセキュアです。非対称暗号化によって秘密情報共有のリスクが排除されるためです。また、RSA 鍵を使用すると、強力なピアツーピア認証を提供しつつも、認証局 (CA) が不要になるため、デプロイが容易になります。
一般に、どちらのホストを left または right と呼ぶかは任意です。ただし、NetworkManager では、ローカルホストには常に left という用語を使用し、リモートホストには常に right という用語を使用します。
前提条件
リモート側のピアは Libreswan IPsec を実行しており、ホスト間 接続の準備ができています。
NetworkManager-libreswanプラグインの設計上、Nmstate は、同じ接続にこのプラグインを使用する他のピアと通信することはできません。
手順
Libreswan がまだインストールされていない場合は、次の手順を実行します。
必要なパッケージをインストールします。
# dnf install nmstate libreswan NetworkManager-libreswanNetworkManager サービスを再起動します。
# systemctl restart NetworkManagerネットワークセキュリティーサービス (NSS) データベースを初期化します。
# ipsec initnssこのコマンドにより、
/var/lib/ipsec/nss/ディレクトリーにデータベースが作成されます。ファイアウォールで IPsec ポートとプロトコルを開きます。
# firewall-cmd --permanent --add-service="ipsec" # firewall-cmd --reload
RSA 鍵ペアを作成します。
# ipsec newhostkeyipsecユーティリティーにより、鍵ペアが NSS データベースに保存されます。left と right 両方のピアの Certificate Key Attribute ID (CKAID) を表示します。
# ipsec showhostkey --list < 1> RSA keyid: <key_id> ckaid: <ckaid>以降のステップで、両方のピアの CKAID が必要になります。
公開鍵を表示します。
left ピアで次のように入力します。
# ipsec showhostkey --left --ckaid <ckaid_of_left_peer> # rsakey AwEAAdKCx leftrsasigkey=0sAwEAAdKCxpc9db48cehzQiQD...right ピアで次のように入力します。
# ipsec showhostkey --right --ckaid <ckaid_of_right_peer> # rsakey AwEAAcNWC rightrsasigkey=0sAwEAAcNWCzZO+PR1j8WbO8X...
これらのコマンドにより、設定ファイルで使用する必要がある対応するパラメーターとともに、公開鍵が表示されます。
次の内容を含む YAML ファイル (例:
~/ipsec-host-to-host-rsa-auth.yml) を作成します。--- interfaces: - name: '<connection_name>' type: ipsec libreswan: ikev2: insist left: <ip_address_or_fqdn_of_left_peer> leftid: peer_b leftrsasigkey: <public_key_of_left_peer> leftmodecfgclient: false right: <ip_address_or_fqdn_of_right_peer> rightid: peer_a rightrsasigkey: <public_key_of_right_peer> rightsubnet: <ip_address_of_right_peer>/32この例で指定されている設定は次のとおりです。
ikev2: insist- 最新の IKEv2 プロトコルを、IKEv1 へのフォールバックなしで、唯一許可されるプロトコルとして定義します。この設定は、Nmstate を使用したホスト間設定では必須です。
left=<ip_address_or_fqdn_of_left_peer>およびright=<ip_address_or_fqdn_of_right_peer>- ピアの IP アドレスまたは DNS 名を定義します。
leftid=<id>およびrightid=<id>-
Internet Key Exchange (IKE) ネゴシエーションプロセス中に各ピアを識別する方法を定義します。これには IP アドレスまたはリテラル文字列を指定できます。NetworkManager は、IP アドレス以外のすべての値をリテラル文字列として解釈し、内部的に先頭に
@記号を追加することに注意してください。そのため、Libreswan ピアも ID としてリテラル文字列を使用する必要があります。そうしないと、認証が失敗します。 leftrsasigkey=<public_key>およびrightrsasigkey=<public_key>-
ピアの公開鍵を指定します。前のステップで
ipsec showhostkeyコマンドによって表示された値を使用します。 leftmodecfgclient: false- このホストで動的設定を無効にします。この設定は、Nmstate を使用したホスト間設定では必須です。
rightsubnet: <ip_address_of_right_peer>/32- ホストがこのピアにのみアクセスできるように定義します。この設定は、Nmstate を使用したホスト間設定では必須です。
設定をシステムに適用します。
# nmstatectl apply ~/ipsec-host-to-host-rsa-auth.yml
検証
IPsec ステータスを表示します。
# ipsec status接続が正常に確立されていれば、出力に次の行が含まれています。
Internet Key Exchange バージョン 2 (IKEv2) ネゴシエーションのフェーズ 1 が正常に完了しています。
000 #1: "<connection_name>":500 STATE_V2_ESTABLISHED_IKE_SA (established IKE SA); REKEY in 27935s; REPLACE in 28610s; newest; idle;これで、セキュリティーアソシエーション (SA) が、実際のデータ暗号化トンネル (子 SA またはフェーズ 2 SA と呼ばれる) をネゴシエートする準備が整いました。
子 SA が確立されています。
000 #2: "<connection_name>":500 STATE_V2_ESTABLISHED_CHILD_SA (established Child SA); REKEY in 27671s; REPLACE in 28610s; IKE SA #1; idle;これは、データトラフィックが通過する実際のトンネルです。
トラブルシューティング
NetworkManager が Libreswan に渡す実際の設定を表示するには、次のように入力します。
# nmcli connection export <connection_name>この出力は、リモートホスト上の Libreswan 設定と比較する際に、ID や鍵などの設定の違いを特定するのに役立ちます。
次のステップ
- DHCP またはステートレスアドレス自動設定 (SLAAC) が設定されたネットワークでこのホストを使用すると、接続がリダイレクトされる危険性があります。詳細および緩和策手順については、VPN 接続を専用ルーティングテーブルに割り当てて、接続がトンネルを迂回するのを防ぐ を参照してください。