Oracle Cloud Infrastructure とCiscoルータでVPN接続をしてみた
こんにちは。Oracle Cloud Infrastructure(OCI)特集 編集部です。
今回はOracle Cloud Infrastructure(以下、OCI)とCiscoルータでVPN接続をしてみます。
OCIにはVPNルータ機能であるDRG(Dynamic Routing Gateway)が備わっていますので
今回はそちらを利用します。
それでは早速、使ってみましょう!
1. OCIとオンプレミスネットワークのVPN接続
【概要】
今回はオフィスのインターネット回線(グローバルIP)を利用して、Oracle Cloud Infrastructure
のゲートウェイにインターネットVPN接続をするものとなります。
VPNセッションはオフィスに設置のルータ(Cisco)とOCIのゲートウェイであるDRGとで行います。
【前提条件】
作業を行うにあたり、必須となる前提条件を以下に記載します。
_・オンプレミスネットワークのグローバルIPがあること※上記図のGIP 1
_・OCIアカウントが準備されていること
【OCIの作業内容】
VPN接続をするためには、オンプレミスネットワーク側のルータと、OCI側とでそれぞれ設定が
必要となりますが、OCI側のVPN接続設定については以下の流れとなります。
- VCN(Virtual Cloud Network)の作成
VCNは仮想クラウドネットワークのことであり、従来の物理ネットワーク相当のものをS/W定義したものとなります。
(物理ネットワーク相当:サブネット、ルーティングテーブル、ゲートウェイなど) - CPE(Customer Premises Equipment)の作成
CPEは顧客構内設備のことであり、VPN設定時には、OCI側にCPEオブジェクトとして、オンプレミスルーターを表す仮想オブジェクト作成する必要があります。 - DRG(Dynamic Routing Gateway)の作成
DRGはVCNとオンプレミスネットワーク間をつなぐゲートウェイであり、IPSecVPNによるオンプレミスネットワークとの接続を確立するのに使用します。 - DRGをVCNに登録
VPN接続で使用するプライベートネットワークであるVCNにゲートウェイであるDRGを登録します。 - ルーティングテーブルの作成
OCIからオンプレミスネットワークへ接続するためのルーティングテーブルを作成します。 - セキュリティリストの作成
オンプレミスネットワークとのトラフィック制御設定を行います。 - サブネットの作成
VCN内は1つまたは複数のサブネットにわかれています。このサブネット単位でルーティングテーブルやセキュリティリストの設定が可能です。
今回はVPN接続検証用にOCI内にWindowsインスタンスを作成します。
作成方法についてもあわせて後述します。
2. VPN接続設定
2.1. OCIへログイン
OCIの操作を行うためにOCIコンソールへログインします。
OCIのログイン画面をブラウザで表示し、「Cloud Tenant」を入力後、Continueを押下します。
※Cloud Tenant番号はOCIアカウント作成時に連絡されます。
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」を選択します。
2.3. CPE(Customer Premises Equipment)の作成
CPEを作成するための手順を以下に記載します。
Customer-Premises Equipment の画面で「Create Customer-Premises Equipment」を押下します。
入力画面が表示されますので、必要事項を入力のうえ、「Create」を押下します。
【入力項目】
- NAME:CPE名を入力します。
- オンプレミスネットワークのグローバルIPアドレスを入力します。※図1のGIP 1になります。
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名を入力します。
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を入力します。
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を入力します。
3. Windowsインスタンス作成
3.1. VPN接続用Windowsインスタンス作成
VPN接続用のWindowsインスタンス作成手順を以下に記載します。
MENU > Compute > Instances の順に選択をし、「Instances」を押下します。
Instances画面で「Create Instance」を押下します。
入力画面が表示されますので、必要事項を入力のうえ、「Create」を押下します。
【入力項目】
- Name your instance:インスタンス名を入力します。
- Choose an operating system or image source:「Change Image Source」を押下します。
OSを選択後、規約に同意し、「Select Image」を押下します。ここではWindows2016SEを選択します。 - Choose instance type:Virtual Mashineを選択します。
- Virtual cloud network:先ほど作成したVCN名を入力します。
- Subnet:先ほど作成したサブネット名を入力します。
Windowsインスタンスが作成されたことを確認します。
※起動まで完了するとステータスが PROVISIONING → RUNNING へと変化します
4. Ciscoルータ設定
OCI側の設定が出来たのでこれからCisco側の設定をしていきましょう。
以下のNWの全体構成図を元に作成していきます。
図2.NW全体構成図
オフィス Private IP | 192.168.100.0/24 |
OCI Private IP | 10.0.3.0/24 |
今回使用した構成情報を下記に記載します。
_・Cisco機器:Cisco 841MJ
_・iosバージョン:(15.5(3)M)
【概要】
Cisco側の設定内容としてインターネットに接続する設定とVPN通信するための設定を行います。
本構成では2本のVPNトンネルを作成し1本のトンネルに障害が発生しても片方のトンネルに
切り替える冗長構成をとってます。
【Ciscoの作業内容】
Cisco側の設定内容については以下の流れとなります。
- PPPoE設定
まずはインターネットに接続するためにPPPoEの設定を行います。
ISPから割り当てられた情報を元にインターネット接続を行います。(※ISPと回線キャリアが同じ事業者の場合PPPoEの設定は不要ですので4-2から設定します) - VPNの設定
インターネットの接続の設定が完了したらVPN接続のためVPNトンネルを作成します。
VPNトンネル内には暗号化された通信を行う際にIPsecを使用するためOCIのピアアドレス
(GIP2、GIP3)と共有鍵をマッピングさせるためにプロファイルを作成しています。
4.1. PPPoE設定
物理インターフェースに対してPPPoEの情報を入れ込みます。
(config-if)#interface GigabitEthernet0/4 (config-if)#pppoe enable group global (config-if)#pppoe-client dial-pool-number 1 (config-if)#no shutdown (config-if)#exit
ローカルのアドレスを設定します。
以下の赤字に記載されている値ですがISPによっては入れる値が変わってきます。
今回はフレッツ回線を使用するので1414に指定します。
(config)#interface Vlan1
(config-if)#ip address 192.168.100.1 255.255.255.0
(config-if)#ip nat inside
(config-if)#ip virtual-reassembly in
(config-if)#ip tcp adjust-mss 1414
(config-if)#exit
PPPoEセッションをDialer1インターフェースを使用してISPから割り振られた情報を入力します。
(config)#interface Dialer1 (config-if)#mtu 1454 (config-if)#ip address [GIP1] 255.255.255.0 (config-if)#no shutdown (config-if)#ip nat outside (config-if)#ip inspect CBAC out (config-if)#ip virtual-reassembly in (config-if)#encapsulation ppp (config-if)#dialer pool 1 (config-if)#dialer-group 1 (config-if)#ppp mtu adaptive (config-if)#ppp authentication chap callin (config-if)#ppp chap hostname [ISPへ接続するID] (config-if)#ppp chap password 0 [ISPへ接続するパスワード] (config-if)#ppp ipcp dns request accept (config-if)#ppp ipcp route default (config-if)#no cdp enable (config-if)#exit
Dialer1インターフェースに割り当てられたグローバルアドレスに対してアドレス変換を行い、送信元アドレスをACLで制限します。
(config)#ip dns server
(config)#ip nat inside source list 100 interface Dialer1 overload
(config)#ip route 0.0.0.0 0.0.0.0 Dialer1
(config)#ip access-list extended ssh
(config-ext-nacl)#permit ip any any
(config-ext-nacl)#dialer-list 1 protocol ip permit
(config)#access-list 100 deny ip 192.168.100.0 0.0.0.255 10.0.0.0 0.255.255.255
(config)#access-list 100 permit ip any any
これでインターネットの設定は完了しました。
次にVPNの設定を行っていきましょう!
4.2. VPN設定
IPSec Phase1設定
まずはキーリングプロファイルを設定してCiscoとOCIのアドレスを関連付けます。
今回は2つのトンネルを作成しますので2つのプロファイルを作成します。
(config)#crypto keyring profile1 (conf-keyring)#local-address [GIP1] (conf-keyring)#pre-shared-key address [GIP2] key [GIP2共通鍵] (config)#crypto logging session (config)#crypto keyring profile2 (conf-keyring)#local-address [GIP1] (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 [GIP1] (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.1.1 255.255.255.0 (config-if)#ip tcp adjust-mss 1387 (config-if)#tunnel source [GIP1] (config-if)#tunnel mode ipsec ipv4 (config-if)#tunnel destination [GIP3] (config-if)#tunnel protection ipsec profile profile2 (config-if)#exit
ACLの設定
Cisco側のホストアドレスとOCI側のWindowsサーバーに対してVPNで使用するプロトコルを許可します。
(config)#ip access-list extended INTERNET-INGRESS
(config-ext-nacl)#permit udp host [GIP2] host [GIP1] eq isakmp
(config-ext-nacl)#permit udp host [GIP2] host [GIP1] eq non500-isakmp
(config-ext-nacl)#permit esp host [GIP2] host [GIP1]
(config-ext-nacl)#permit ip host [GIP2] host [GIP1]
(config-ext-nacl)#permit udp host [GIP3] host [GIP1] eq isakmp
(config-ext-nacl)#permit udp host [GIP3] host [GIP1] eq non500-isakmp
(config-ext-nacl)#permit esp host [GIP3] host [GIP1]
(config-ext-nacl)#permit ip host [GIP3] host [GIP1]
(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
スタティックルートの設定
OCIにて設定されているネットワークに対してトンネルインターフェースが通信できるようにスタティックルートを設定します。
(config)#ip route 10.0.0.0 255.0.0.0 Tunnel1 (config)#ip route 10.0.0.0 255.0.0.0 Tunnel2
確認コマンド
IPsec Phase1の確認コマンドになります。
ステータスがアクティブなのでPhase1の設定が出来ていることを確認できます。
#show crypto isakmp sa ~~~~~~~~~~~~~~~ 出力例 ~~~~~~~~~~~~~~~ IPv4 Crypto ISAKMP SA dst src state conn-id status [GIP2] [GIP1] QM_IDLE 2001 ACTIVE [GIP1] [GIP3] 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 6 6 [GIP1] 2 IPsec AES256+SHA 590 0 0 [GIP1] 2001 IKE SHA384+AES256 0 0 0 [GIP2] 2002 IKE SHA384+AES256 0 0 0 [GIP1] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
両端の情報が表示されていて暗号化と複号のカウンターが上がっているのでVPN接続できています!
Cisco側で設定できました!!
5. VPN接続確認
OCIとオンプレミスルータでVPN設定が完了しましたので、接続確認を行います。
確認法方法として、OCIのWindowsサーバに共有フォルダを設定後、プライベートIPで
オフィスの端末からアクセスできることを確認します。※共有フォルダ設定は割愛します。
作業端末からWindowsサーバの共有フォルダへプライベートIPでアクセスします。
アクセスすることができました。
次にローカルで作成したファイルを共有フォルダへアップロードします。
ファイルをアップロードできていることを確認するためにRDPでWindowsサーバにログインして確認します。
Windowsサーバの共有フォルダにファイルがあることが確認できました!
いかがでしたでしょうか?
ちょっと試してみようかな?と思った方は、最大3,500時間のトライアルもありますので、
下記URLからアクセスして、是非お試しください!