Oracle Cloud Infrastructure とCiscoルータでVPN接続をしてみた(NAT構成編)

こんにちは。Oracle Cloud Infrastructure(OCI)特集 編集部です。

以前に「Oracle Cloud Infrastructure とCiscoルータでVPN接続をしてみた」にてOracle Cloud Infrastructure(以下、OCI)とCiscoルータでVPN接続を検証をしました。今回はオフィスのVPNルータがプライベートIPの場合のVPN接続を検証してみたいと思います。
※ユースケースとしましては上位のルータに変更を加えずにVPN環境を用意したいときなどが想定されます。

それでは早速、検証してみましょう!

1.   OCIとオンプレミスネットワークのVPN接続

【概要】
今回のオンプレミス側の構成はBroudband RouterとVPNルータがNATにて構成されています。絵を描いてみましたので下記をご覧ください。

図1.全体NW構成

オンプレミス側がNATの場合とそうでない場合(前回)との設定上の大きな違いはOracleサポートにSRを申請して追加設定をしてもらう場合があるということです。詳細については下記のOCIマニュアルに記載されています。
https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/configuringCPE.htm
~~~~~~~~~~~ 抜粋  ~~~~~~~~~~~
If your CPE is behind a NAT device but does not support setting the IPSec local identity, please file a ticket at My Oracle Support for help configuring your CPE and bringing up the tunnels.
~~~~~~~~~~~~~~~~~~~~~~~~~~

【前提条件】
作業を行うにあたり、必須となる前提条件を以下に記載します。
_・オンプレミスネットワークのグローバルIPがあること※上記図のGIP 1
_・OCIアカウントが準備されていること

【OCIの作業内容】
VPN接続をするためには、オンプレミスネットワーク側のルータと、OCI側とでそれぞれ設定が必要となりますが、OCI側のVPN接続設定については以下の流れとなります。

  1. VCN(Virtual Cloud Network)の作成
    VCNは仮想クラウドネットワークのことであり、従来の物理ネットワーク相当のものをS/W定義したものとなります。
    (物理ネットワーク相当:サブネット、ルーティングテーブル、ゲートウェイなど)
  2. CPE(Customer Premises Equipment)の作成
    CPEは顧客構内設備のことであり、VPN設定時には、OCI側にCPEオブジェクトとして、オンプレミスルーターを表す仮想オブジェクト作成する必要があります。
  3. DRG(Dynamic Routing Gateway)の作成
    DRGはVCNとオンプレミスネットワーク間をつなぐゲートウェイであり、IPSecVPNによるオンプレミスネットワークとの接続を確立するのに使用します。
  4. DRGをVCNに登録
    VPN接続で使用するプライベートネットワークであるVCNにゲートウェイであるDRGを登録します。
  5. ルーティングテーブルの作成
    OCIからオンプレミスネットワークへ接続するためのルーティングテーブルを作成します。
  6. セキュリティリストの作成
    オンプレミスネットワークとのトラフィック制御設定を行います。
  7. サブネットの作成
    VCN内は1つまたは複数のサブネットにわかれています。このサブネット単位でルーティングテーブルやセキュリティリストの設定が可能です。
  8. Oracle サポートへSR申請
    ipsec接続のOCIDとオンプレミスVPNルータに設定されているプライベートIPアドレスを連携します。参考として下記にOracleサポートから依頼された内容を記載します。
    ————————————————————————————————————
    1. NAT構成にする際、Tunelを確立するインターフェイスにはプライベートIPをご使用されたいと 
      お考えでしょうか? 

    2. 1が正しい場合、NATされているIPsec接続のOCIDと、関連のプライベートIPをお知らせ下さい。 
      弊社の側で構成変更を行う必要がございます。(なお、変更には2日ほどかかる見込みです) 
    ————————————————————————————————————
    ※なお、連携してから登録されるまで1営業日程度でした。

2.   VPN接続設定

2.1.    OCIへログイン

OCIの操作を行うためにOCIコンソールへログインします。

OCIのログイン画面をブラウザで表示し、「Cloud Tenant」を入力後、Continueを押下します。
※Cloud Tenant番号はOCIアカウント作成時に連絡されます。

アカウント情報を入力し、「Sign In」を押下します。

TOP画面が表示されることを確認します。

2.2.    VCN(Virtual Cloud Network)の作成

VCNを作成するための手順を以下に記載します。

MENU > Networking > Virtual Cloud Networks の順に選択をして、「Virtual Cloud Networks」を押下します。

Virtual Cloud Networksの画面で「Create Virtual Cloud Network」を押下します。

入力画面が表示されますので、必要事項を入力のうえ、
「Create Virtual Cloud Network > CLOSE」の順に押下します。
【入力項目】

  • NAME:VCN名を入力します。
  • ラジオボタン:関連リソースをあわせて作成するため
    「CREATE VIRTUAL CLOUD NETWORK PLUS RELATED RESOURCES」を選択します。

VCNが作成されたことを確認します。

2.3.    CPE(Customer Premises Equipment)の作成

CPEを作成するための手順を以下に記載します。

Customer-Premises Equipment の画面で「Create Customer-Premises Equipment」を押下します。

入力画面が表示されますので、必要事項を入力のうえ、「Create」を押下します。
【入力項目】

  • NAME:CPE名を入力します。
  • オンプレミスネットワークのグローバルIPアドレスを入力します。※図1のGIP 1になります。

CPEが作成されたことを確認します。

2.4.    DRG(Dynamic Routing Gateway)の作成

DRGを作成するための手順を以下に記載します。

Dynamic Routing Gateways の画面で「Create Dynamic Routing Gateway」を押下します。

入力画面が表示されますので、必要事項を入力のうえ、「Create Dynamic Routing Gateway」を押下します。
【入力項目】

  • NAME:DRG名を入力します。

DRGが作成されたことを確認します。
※ステータスが PROVISIONING  → AVAILABLE へと変化します。
 

先ほど作成したDRGを選択し、IPsec Connections の画面で、「Create IPsec Connection」を押下します。

入力画面が表示されますので、必要事項を入力のうえ、「Create IPsec Connection」を押下します。
【入力項目】

  • NAME:IPsec名を入力します。
  • CUSTOMER-PREMISES EQUIPMENT:作成済みのCPEを選択します。
  • STATIC ROUTE CIDR:オンプレミスネットワークのプライベートIPアドレスをCIDR形式で入力します。

IPsecが作成されたことを確認します。
※ステータスが PROVISIONING  → AVAILABLE へと変化します。
 

IPsecを作成するとDRGにグローバルIPアドレス&共有鍵がそれぞれ2個割り当てられ、これらの情報をオンプレミスルーターに登録する必要があります。
確認する方法は、作成したIPsecの右側にある「Tunnel Information」を押下します。
※ここで作成されるIPアドレスが図1のGIP 2、GIP 3になります。
 

※参考:オンプレミスルーター側の設定が完了し、VPNセッションが張られると以下のようにステータスがUPします。

2.5.    DRGをVCNに登録

DRGをVCNにアタッチする手順を以下に記載します。

MENU > Networking > Virtual Cloud Networks の画面で先ほど作成したVCNを選択します。
その後、Dynamic Routing Gatewaysの画面で「Attach Dynamic Routing Gataway」を押下します。

入力画面が表示されますので、必要事項を入力のうえ、「Attach」を押下します。
【入力項目】

  • DYNAMIC ROUTING GATEWAYS:割り当てるDRG名を入力します。

DRGがAttachされたことを確認します。

2.6.    ルーティングテーブルの作成

ルーティングテーブルの作成方法を以下に記載します。

MENU > Networking > Virtual Cloud Networks の画面で先ほど作成したVCNを選択します。
その後、Route Tablesの画面で「Create Route Table」を押下します。

入力画面が表示されますので、必要事項を入力のうえ、「Create Route Table」を押下します。
【入力項目】

  • NAME:Route Table名を入力します。
  • TARGET TYPE:DRGを選択します。
  • DESTINATION CIDR BLOCK:オンプレミスネットワークのプライベートIPアドレスをCIDR形式で入力します。
  • TARGET DYNAMIC ROUTING GATEWAY:作成したDRGを入力します。

Route Tablesが作成されたことを確認します。

2.7.    セキュリティリストの作成

セキュリティリストの作成方法を以下に記載します。

MENU > Networking > Virtual Cloud Networks の画面で先ほど作成したVCNを選択します。
その後、Security Listsの画面で「Default Security List for VCN名」を押下します。

設定の編集を行うために「Edit All Rules」を押下します。

オンプレミスネットワークとの通信許可を行うための設定を行います。
※今回はすべての通信を許可するためにIngressに対してSOURCE:0.0.0.0/0、
_PROTOCOL:All Protocolsで設定します。初期状態でSSH接続用にIngressのRule1に
_登録されているIP ProtocolsをTCP→All Protocolsに変更します。なお、Egressの
_通信許可はDestination:0.0.0.0/0、PROTOCOL:All Protocolsが初期状態で登録されています。
 

設定内容を保存するために「Save Security List Rules」を押下します。

設定内容が反映されたことを確認します。

2.8.    サブネットの作成

サブネットを作成する方法を以下に記載します。

MENU > Networking > Virtual Cloud Networks の画面で先ほど作成したVCNを選択します。
その後、Subnetsの画面で「Create Subnet」を押下します。

入力画面が表示されますので、必要事項を入力のうえ、「Create」を押下します。
【入力項目】

  • NAME:サブネット名を入力します。
  • AVAILABILITY DOMAIN:ここでは Llma:PHX-AD-1を選択します。
  • CIDR BLOCK:OCIのプライベートIPをCIDR形式で入力します。(例:10.0.3.0/24)
  • ROUTE TABLE:先ほど作成したRoute Teblesを入力します。
  • SUBNET ACCESS:PRIVATE SUBNETを選択します。※VPN接続用のSUBNETはPRIVATEで作成します。
  • Security Lists:先ほど作成したSecurity Listsを入力します。

サブネットが作成されたことを確認します。

2.9.    SRの申請

My Oracleサポートに対して以下の情報を伝達し、プライベートIPアドレスとVPNセッションを確立するための設定をしてもらいます。

  • ipsec接続のOCID
    例)ocid1.ipsecconnection.oc1.phx.xxxxxxxxxxxxxxxxxxxxxxx
  • NATされているオンプレミスルーターのプライベートIP
    例)192.168.0.2

3.   Ciscoルータ設定

今回はBroudband RouterとVPNルータ(Cisco 841MJ)が接続されています。

オフィス Private IP 192.168.100.0/24
OCI Private IP  10.0.3.0/24

今回使用した構成情報を下記に記載します。
_・Cisco機器:Cisco 841MJ
_・iosバージョン:(15.5(3)M)

【概要】
Cisco側の設定内容としてACL設定とVPN通信するための設定を行います。 本構成では2本のVPNトンネルを作成し1本のトンネルに障害が発生しても片方のトンネルに 切り替える冗長構成をとってます。

【Ciscoの作業内容】
Cisco側の設定内容については以下の流れとなります。

  1. VPNルータ(Cisco 841MJ)インターフェースにIPアドレスを設定しACLを適用させます。
  2. VPNの設定 インターネットの接続の設定が完了したらVPN接続のためVPNトンネルを作成します。 VPNトンネル内には暗号化された通信を行う際にIPsecを使用するためOCIのピアアドレス (GIP2、GIP3)と共有鍵をマッピングさせるためにプロファイルを作成しています。

3.1 ACL設定

インターフェースにIPアドレスの設定とACLの適用を行います。
※環境により値が変化する箇所は赤字で記載します。

(config)#interface GigabitEthernet0/4 
(config-if)#ip address 192.168.0.2 255.255.255.0
(config-if)#ip access-group INTERNET-INGRESS in

(config)#interface Vlan1
(config-if)#ip address 192.168.100.1 255.255.255.0
(config-if)#ip virtual-reassembly in
(config-if)#ip tcp adjust-mss 1414
(config-if)#exit

ACLの設定

Cisco側のホストアドレスとOCI側のWindowsサーバーに対してVPNで使用するプロトコルを許可します。

(config)#ip access-list extended INTERNET-INGRESS
(config-ext-nacl)#permit udp host [GIP2] host 192.168.0.2 eq isakmp
(config-ext-nacl)#permit esp host [GIP2] host 192.168.0.2
(config-ext-nacl)#permit udp host [GIP3] host 192.168.0.2 eq isakmp
(config-ext-nacl)#permit esp host [GIP3] host 192.168.0.2

(config-ext-nacl)#permit icmp any any echo
(config-ext-nacl)#permit icmp any any echo-reply
(config-ext-nacl)#permit icmp any any unreachable
(config-ext-nacl)#exit

3.2 VPN設定

NAT traversal機能を無効化します。

(config)#no crypto ipsec nat-transparency udp-encapsulation

キーリングプロファイルを設定してCiscoとOCIのアドレスを関連付けます。 今回は2つのトンネルを作成しますので2つのプロファイルを作成します。

(config)#crypto keyring profile1 
(conf-keyring)#local-address 192.168.0.2
(conf-keyring)#pre-shared-key address [GIP2] key [GIP2共通鍵]

(config)#crypto logging session

(config)#crypto keyring profile2
(conf-keyring)#local-address 192.168.0.2
(conf-keyring)#pre-shared-key address [GIP3] key [GIP3共通鍵]
(config)#crypto logging session

次にセッションのログ表示や情報やキープアライブの設定を行います。

(config)#crypto logging session
(config)#crypto isakmp fragmentation
(config)#crypto isakmp keepalive 10 10
(config)#crypto ipsec df-bit clear
(config)#crypto ipsec security-association replay window-size 128

IPsec Phase1で使用するポリシーを作成します。 こちらでもトンネルを2本作成するため、ポリシーを2つ設定していきます。 暗号化アルゴリズムと認証方式を設定します。 OCIの推奨設定が公開されているので推奨値を指定していきます。

(config)#crypto isakmp policy 1 
(config-isakmp)#encr aes 256
(config-isakmp)#hash sha384
(config-isakmp)#authentication pre-share
(config-isakmp)#lifetime 28800
(config-isakmp)#exit

(config)#crypto isakmp policy 2
(config-isakmp)#encr aes 256
(config-isakmp)#hash sha384
(config-isakmp)#authentication pre-share
(config-isakmp)#lifetime 28800
(config-isakmp)#exit

IPsec Phase1でキーリングプロファイルを作成し、OCIのアドレスをマッピングさせます こちらでもトンネルを2本作成するため、プロファイルを2つ設定していきます。

(config)#crypto isakmp profile profile1 
(conf-isa-prof)#keyring profile1
(conf-isa-prof)#self-identity address
(conf-isa-prof)#match identity address [GIP2] 255.255.255.255
(conf-isa-prof)#keepalive 10 retry 10
(conf-isa-prof)#exit

(config)#crypto isakmp profile profile2
(conf-isa-prof)#keyring profile2
(conf-isa-prof)#self-identity address
(conf-isa-prof)#match identity address [GIP3] 255.255.255.255
(conf-isa-prof)#keepalive 10 retry 10
(conf-isa-prof)#exit

IPSec Phase2設定

IPsec Phase2をトンネルモードで指定し、セキュリティ、暗号化、認証アルゴリズムを設定しTSの名前で定義します。

(config)#crypto ipsec transform-set TS esp-aes 256 esp-sha-hmac 
(cfg-crypto-trans)#mode tunnel
(cfg-crypto-trans)#exit

IPsec Phase2のプロファイルを作成し、上記で定義したTSを埋め込みます。 こちらでもトンネルを2本作成するため、プロファイルを2つ設定していきます。

(config)#crypto ipsec profile profile1 
(ipsec-profile)#set security-association dfbit clear
(ipsec-profile)#set transform-set TS
(ipsec-profile)#set pfs group5
(ipsec-profile)#exit

(config)#crypto ipsec profile profile2
(ipsec-profile)#set security-association dfbit clear
(ipsec-profile)#set transform-set TS
(ipsec-profile)#set pfs group5
(ipsec-profile)#exit

トンネルインターフェースを作成します。 CiscoとOCIの値を入れて上記で設定したプロファイルを埋め込みます。 こちらでもトンネルを2本作成するため、プロファイルを2つ設定していきます。 トンネルインターフェースで設定するIPアドレスですがユニークなIPアドレスを設定しましょう。

(config)#interface Tunnel1 
(config-if)#ip address 172.16.1.1 255.255.255.0
(config-if)#ip tcp adjust-mss 1387
(config-if)#tunnel source 192.168.0.2
(config-if)#tunnel mode ipsec ipv4
(config-if)#tunnel destination [GIP2]
(config-if)#tunnel protection ipsec profile profile1
(config-if)#exit

(config)#interface Tunnel2
(config-if)#ip address 172.16.2.1 255.255.255.0
(config-if)#ip tcp adjust-mss 1387
(config-if)#tunnel source 192.168.0.2
(config-if)#tunnel mode ipsec ipv4
(config-if)#tunnel destination [GIP3]
(config-if)#tunnel protection ipsec profile profile2
(config-if)#exit

デフォルトルートの設定

インターネットに接続するためデフォルトルートを設定します。

(config)#ip route 0.0.0.0 0.0.0.0 192.168.0.1

スタティックルートの設定

OCIにて設定されているネットワークに対してトンネルインターフェースが通信できるようにスタティックルートを設定します。

(config)#ip route 10.0.3.0 255.255.255.0 Tunnel1 
(config)#ip route 10.0.3.0 255.255.255.0 Tunnel2

確認コマンド

IPsec Phase1の確認コマンドになります。 ステータスがアクティブなのでPhase1の設定が出来ていることを確認できます。

#show crypto isakmp sa 
~~~~~~~~~~~~~~~ 出力例 ~~~~~~~~~~~~~~~
IPv4 Crypto ISAKMP SA

dst src state conn-id status
[GIP2] 192.168.0.2 QM_IDLE 2001 ACTIVE
[GIP3] 192.168.0.2 QM_IDLE 2002 ACTIVE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

IPsec Phase2の確認コマンドになります。
Phase1、Phase2の情報が表示されます。

#show crypto engine connections active 
~~~~~~~~~~~~~~~ 出力例 ~~~~~~~~~~~~~~~~~
Crypto Engine Connections

ID Type Algorithm Encrypt Decrypt LastSeqN IP-Address

ID Type Algorithm Encrypt Decrypt LastSeqN IP-Address
1 IPsec AES256+SHA 0 3 3 192.168.0.2
2 IPsec AES256+SHA 66 0 0 192.168.0.2
3 IPsec AES256+SHA 0 0 0 192.168.0.2
4 IPsec AES256+SHA 0 0 0 192.168.0.2
2001 IKE SHA384+AES256 0 0 0 192.168.0.2
2002 IKE SHA384+AES256 0 0 0 192.168.0.2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

両端の情報が表示され暗号化と複号のカウンターが上がっているのが確認できます

ACLの確認コマンドになります。ACLの情報を確認できます。

#show access-lists  
Extended IP access list INTERNET-INGRESS
10 permit udp host 129.146.13.54 host 192.168.0.2 eq isakmp (39 matches)
20 permit esp host 129.146.13.54 host 192.168.0.2 (3 matches)
30 permit udp host 129.146.12.52 host 192.168.0.2 eq isakmp (8 matches)
40 permit esp host 129.146.12.52 host 192.168.0.2
50 permit icmp any any echo
60 permit icmp any any echo-reply (9 matches)
70 permit icmp any any unreachable

 isakmpのカウンタとespのカウンタが上がっていますのでCisco側で設定できました!!

いかがでしたでしょうか?

ちょっと試してみようかな?と思った方は、最大3,500時間のトライアルもありますので、
下記URLからアクセスして、是非お試しください!

https://cloud.oracle.com/ja_JP/tryit?intcmp=ocom-cloud