このセクションでは、IPSec VPN の作成について紹介します。ここでは、作成されている OpenStack の仮想ネットワーク間を IPSec で VPN 接続する例で紹介します。

demo クレデンシャルを読み込み、非管理者専用 CLI コマンドへのアクセス権を取得します。

[root@controller ~]# . openrc/demo-openrc 
[root@controller ~]# 

サブネットとルーターの確認

ネットワークのサブネットリストを表示し、現在作成されているサブネットを確認します。

[root@controller ~]# openstack subnet list
+--------------------------------------+----------------+--------------------------------------+-----------------+
| ID                                   | Name           | Network                              | Subnet          |
+--------------------------------------+----------------+--------------------------------------+-----------------+
| 04360fb4-82c6-43f5-a448-a7a72e218d36 | Self network 2 | 43f15c29-76d3-479d-9df0-0b2de354713e | 172.16.3.0/24   |
| 812d8088-e027-452b-b006-3124bbee81c2 | Self network 1 | 2769f828-ae94-4934-8b63-eb5a7a139b73 | 172.16.2.0/24   |
| b80414a4-b901-4b5d-a030-b144e49733ca | provider       | a07ede34-eb96-470e-97a8-6dd6917ba18d | 192.168.25.0/24 |
+--------------------------------------+----------------+--------------------------------------+-----------------+
[root@controller ~]# 

ネットワークのルーターリストを表示し、現在作成されているルーターを確認します。

[root@controller ~]# openstack router list
+--------------------------------------+----------+--------+-------+-------------+------+----------------------------------+
| ID                                   | Name     | Status | State | Distributed | HA   | Project                          |
+--------------------------------------+----------+--------+-------+-------------+------+----------------------------------+
| 24a5432c-5001-439d-8da4-7d8789dfdb5f | Router 2 | ACTIVE | UP    | None        | None | b9644b0689c4469baa45f9acb009d860 |
| 669c99e1-0e27-4246-841c-b75cfd7ae3b7 | Router 1 | ACTIVE | UP    | None        | None | b9644b0689c4469baa45f9acb009d860 |
+--------------------------------------+----------+--------+-------+-------------+------+----------------------------------+
[root@controller ~]# 

自ネットワークのポリシー作成

自ネットワークに適用する IPSec のポリシーを作成します。ここでは、ipsec-policy1 としています。

[root@controller ~]# openstack vpn ipsec policy create ipsec-policy1
+-------------------------------+----------------------------------------+
| Field                         | Value                                  |
+-------------------------------+----------------------------------------+
| Authentication Algorithm      | sha1                                   |
| Description                   |                                        |
| Encapsulation Mode            | tunnel                                 |
| Encryption Algorithm          | aes-128                                |
| ID                            | 057f208e-13e5-4a11-b0fc-7deecc10d22d   |
| Lifetime                      | {u'units': u'seconds', u'value': 3600} |
| Name                          | ipsec-policy1                          |
| Perfect Forward Secrecy (PFS) | group5                                 |
| Project                       | b9644b0689c4469baa45f9acb009d860       |
| Transform Protocol            | esp                                    |
| project_id                    | b9644b0689c4469baa45f9acb009d860       |
+-------------------------------+----------------------------------------+
[root@controller ~]#

自ネットワークに適用する ike のポリシーを作成します。ここでは、ike-policy1 としています。

[root@controller ~]# openstack vpn ike policy create ike-policy1
+-------------------------------+----------------------------------------+
| Field                         | Value                                  |
+-------------------------------+----------------------------------------+
| Authentication Algorithm      | sha1                                   |
| Description                   |                                        |
| Encryption Algorithm          | aes-128                                |
| ID                            | a36515da-01ac-4d62-9265-6f9a55d96c91   |
| IKE Version                   | v1                                     |
| Lifetime                      | {u'units': u'seconds', u'value': 3600} |
| Name                          | ike-policy1                            |
| Perfect Forward Secrecy (PFS) | group5                                 |
| Phase1 Negotiation Mode       | main                                   |
| Project                       | b9644b0689c4469baa45f9acb009d860       |
| project_id                    | b9644b0689c4469baa45f9acb009d860       |
+-------------------------------+----------------------------------------+
[root@controller ~]# 

自ネットワークの VPNサービスを作成します。ここでは、vpn-1 としています。

[root@controller ~]# openstack vpn service create vpn-1 --router 669c99e1-0e27-4246-841c-b75cfd7ae3b7 --subnet 812d8088-e027-452b-b006-3124bbee81c2
+----------------+--------------------------------------+
| Field          | Value                                |
+----------------+--------------------------------------+
| Description    |                                      |
| Flavor         | None                                 |
| ID             | cc192bdc-fe0f-4253-aa9d-773a609c5116 |
| Name           | vpn-1                                |
| Project        | b9644b0689c4469baa45f9acb009d860     |
| Router         | 669c99e1-0e27-4246-841c-b75cfd7ae3b7 |
| State          | True                                 |
| Status         | PENDING_CREATE                       |
| Subnet         | 812d8088-e027-452b-b006-3124bbee81c2 |
| external_v4_ip | 192.168.25.123                       |
| external_v6_ip | None                                 |
| project_id     | b9644b0689c4469baa45f9acb009d860     |
+----------------+--------------------------------------+
[root@controller ~]# 

対向先ネットワークのポリシー作成

対向先ネットワークに適用する IPSec のポリシーを作成します。ここでは、ipsec-policy2 としています。

[root@controller ~]# openstack vpn ipsec policy create ipsec-policy2
+-------------------------------+----------------------------------------+
| Field                         | Value                                  |
+-------------------------------+----------------------------------------+
| Authentication Algorithm      | sha1                                   |
| Description                   |                                        |
| Encapsulation Mode            | tunnel                                 |
| Encryption Algorithm          | aes-128                                |
| ID                            | abb44ee1-faa3-4d98-9705-d7c9061b2168   |
| Lifetime                      | {u'units': u'seconds', u'value': 3600} |
| Name                          | ipsec-policy2                          |
| Perfect Forward Secrecy (PFS) | group5                                 |
| Project                       | b9644b0689c4469baa45f9acb009d860       |
| Transform Protocol            | esp                                    |
| project_id                    | b9644b0689c4469baa45f9acb009d860       |
+-------------------------------+----------------------------------------+
[root@controller ~]# 

対向先ネットワークに適用する ike のポリシーを作成します。ここでは、ike-policy2 としています。

[root@controller ~]# openstack vpn ike policy create ike-policy2
+-------------------------------+----------------------------------------+
| Field                         | Value                                  |
+-------------------------------+----------------------------------------+
| Authentication Algorithm      | sha1                                   |
| Description                   |                                        |
| Encryption Algorithm          | aes-128                                |
| ID                            | 23a52fd7-06ac-46ed-a2c3-81c8b175d71d   |
| IKE Version                   | v1                                     |
| Lifetime                      | {u'units': u'seconds', u'value': 3600} |
| Name                          | ike-policy2                            |
| Perfect Forward Secrecy (PFS) | group5                                 |
| Phase1 Negotiation Mode       | main                                   |
| Project                       | b9644b0689c4469baa45f9acb009d860       |
| project_id                    | b9644b0689c4469baa45f9acb009d860       |
+-------------------------------+----------------------------------------+
[root@controller ~]# 

対向先ネットワークの VPNサービスを作成します。ここでは、vpn-2 としています。

[root@controller ~]# openstack vpn service create vpn-2 --router 24a5432c-5001-439d-8da4-7d8789dfdb5f --subnet 04360fb4-82c6-43f5-a448-a7a72e218d36
+----------------+--------------------------------------+
| Field          | Value                                |
+----------------+--------------------------------------+
| Description    |                                      |
| Flavor         | None                                 |
| ID             | 2d6edf62-6042-479f-b8ad-c0e8a8af1ea9 |
| Name           | vpn-2                                |
| Project        | b9644b0689c4469baa45f9acb009d860     |
| Router         | 24a5432c-5001-439d-8da4-7d8789dfdb5f |
| State          | True                                 |
| Status         | PENDING_CREATE                       |
| Subnet         | 04360fb4-82c6-43f5-a448-a7a72e218d36 |
| external_v4_ip | 192.168.25.102                       |
| external_v6_ip | None                                 |
| project_id     | b9644b0689c4469baa45f9acb009d860     |
+----------------+--------------------------------------+
[root@controller ~]# 

自ネットワークのVPN接続作成

自ネットワークの VPN接続を作成します。ここでは、conn-1 としています。

[root@controller ~]# openstack vpn ipsec site connection create conn-1 \
  --vpnservice vpn-1 \
  --ikepolicy ike-policy1 \
  --ipsecpolicy ipsec-policy1 \
  --peer-address 192.168.25.102 \
  --peer-id 192.168.25.102 \
  --peer-cidr 172.16.3.0/24 \
  --psk secret
+--------------------------+--------------------------------------------------------+
| Field                    | Value                                                  |
+--------------------------+--------------------------------------------------------+
| Authentication Algorithm | psk                                                    |
| Description              |                                                        |
| ID                       | b2770bc7-ec9b-4435-a75f-5a7fe04abdb2                   |
| IKE Policy               | a36515da-01ac-4d62-9265-6f9a55d96c91                   |
| IPSec Policy             | 057f208e-13e5-4a11-b0fc-7deecc10d22d                   |
| Initiator                | bi-directional                                         |
| Local Endpoint Group ID  | None                                                   |
| Local ID                 |                                                        |
| MTU                      | 1500                                                   |
| Name                     | conn-1                                                 |
| Peer Address             | 192.168.25.102                                         |
| Peer CIDRs               | 172.16.3.0/24                                          |
| Peer Endpoint Group ID   | None                                                   |
| Peer ID                  | 192.168.25.102                                         |
| Pre-shared Key           | secret                                                 |
| Project                  | b9644b0689c4469baa45f9acb009d860                       |
| Route Mode               | static                                                 |
| State                    | True                                                   |
| Status                   | PENDING_CREATE                                         |
| VPN Service              | cc192bdc-fe0f-4253-aa9d-773a609c5116                   |
| dpd                      | {u'action': u'hold', u'interval': 30, u'timeout': 120} |
| project_id               | b9644b0689c4469baa45f9acb009d860                       |
+--------------------------+--------------------------------------------------------+
[root@controller ~]#

VPN 接続のリストを表示します。 conn-1 が作成されていることが確認できます。この時点では、対向先の VPN 接続 がないため、ステータスが Down と表示されています。

[root@controller ~]# openstack vpn ipsec site connection list
+--------------------------------------+--------+----------------+--------------------------+--------+
| ID                                   | Name   | Peer Address   | Authentication Algorithm | Status |
+--------------------------------------+--------+----------------+--------------------------+--------+
| 8e6b871d-fa3f-4ede-9b7b-36cfd9dca399 | conn-1 | 192.168.25.102 | psk                      | DOWN   |
+--------------------------------------+--------+----------------+--------------------------+--------+
[root@controller ~]# 

対向先ネットワークのVPN接続作成

対向先ネットワークの VPN接続を作成します。ここでは、conn-2 としています。

[root@controller ~]# openstack vpn ipsec site connection create conn-2 \
>   --vpnservice vpn-2 \
>   --ikepolicy ike-policy2 \
>   --ipsecpolicy ipsec-policy2 \
>   --peer-address 192.168.25.123 \
>   --peer-id 192.168.25.123 \
>   --peer-cidr 172.16.2.0/24 \
>   --psk secret
+--------------------------+--------------------------------------------------------+
| Field                    | Value                                                  |
+--------------------------+--------------------------------------------------------+
| Authentication Algorithm | psk                                                    |
| Description              |                                                        |
| ID                       | a4e355ad-e2f2-43af-a313-a3aff45d3ca2                   |
| IKE Policy               | 23a52fd7-06ac-46ed-a2c3-81c8b175d71d                   |
| IPSec Policy             | abb44ee1-faa3-4d98-9705-d7c9061b2168                   |
| Initiator                | bi-directional                                         |
| Local Endpoint Group ID  | None                                                   |
| Local ID                 |                                                        |
| MTU                      | 1500                                                   |
| Name                     | conn-2                                                 |
| Peer Address             | 192.168.25.123                                         |
| Peer CIDRs               | 172.16.2.0/24                                          |
| Peer Endpoint Group ID   | None                                                   |
| Peer ID                  | 192.168.25.123                                         |
| Pre-shared Key           | secret                                                 |
| Project                  | b9644b0689c4469baa45f9acb009d860                       |
| Route Mode               | static                                                 |
| State                    | True                                                   |
| Status                   | PENDING_CREATE                                         |
| VPN Service              | 2d6edf62-6042-479f-b8ad-c0e8a8af1ea9                   |
| dpd                      | {u'action': u'hold', u'interval': 30, u'timeout': 120} |
| project_id               | b9644b0689c4469baa45f9acb009d860                       |
+--------------------------+--------------------------------------------------------+
[root@controller ~]# 

VPN 接続のリストを表示します。 conn-2 が作成されていることが確認できます。この時点では、conn-1 と conn-2 のステータスが Active( IPSec VPN 接続できている) になります。

[root@controller ~]# openstack vpn ipsec site connection list
+--------------------------------------+--------+----------------+--------------------------+--------+
| ID                                   | Name   | Peer Address   | Authentication Algorithm | Status |
+--------------------------------------+--------+----------------+--------------------------+--------+
| 3b36557a-b531-464c-bdf7-47c86fccb832 | conn-2 | 192.168.25.123 | psk                      | ACTIVE |
| 8e6b871d-fa3f-4ede-9b7b-36cfd9dca399 | conn-1 | 192.168.25.102 | psk                      | ACTIVE |
+--------------------------------------+--------+----------------+--------------------------+--------+
[root@controller ~]#