Transit Routing + IPSec VPN / FastConnectで Object Storage, Autonomous Databaseへ接続してみてみた

Transit Routingの機能により、
On-Premises NetworkからOracle Services Network内にあるObject Storge,Autonomous DatabaseなどのPublic Serviceへアクセス可能になりました。
オンプレミスのホストはプライベートIPアドレスを使用し、トラフィックはインターネットを経由しません。
トラフィックは、FastConnectのPrivate Peering または IPSec VPN で Dynamic Routing Gateway.（DRG）から、Service Gatewayを経由してOracle Services Network (OSN)へアクセスします。

Service Gatewayを経由可能なPublic IPのサービスリストはこちらです
 [Supported Cloud Services in Oracle Services Network](https://www.oracle.com/eg/cloud/networking/service-gateway/service-gateway-supported-services/)

その他の注意点は、On-Premises側のDNSです。
Object Storage,Autonomous DatabaseなどのPublic Service はIPアドレスではなくURLでアクセスする必要があるため、FQDNの名前解決をGlobal DNSでされている必要があります。
また、OCIからBGPで伝搬されるCIDRは[Public IP Address Ranges](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/addressranges.htm#osn-ranges)のJSONに記載ある"OSN"と"OBJECT_STORAGE"項目部分のCIDRです。


# ■ 構成
<img width="909" alt="NW構成3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/940fc54f-5c9d-ac92-33b0-245e73396882.png">


# ■ 手順概要
上記構成は今までの手順で構築し動作確認しておきます。
本機能の手順はRoute Table設定になり、DRG と Service Gateway間の経路を作るためのRoute Tableを各Gateway個別に作成して設定します。
技術的には、接続Region内にある[Object Storge,Autonomous Database](https://cloud.oracle.com/networking/service-gateway/supported-services) などOSNの[Public IP Address Ranges](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/addressranges.htm#osn-ranges)内の利用可能なCIDRが、BGPによってオンプレミスのルーターへ伝搬されます。

OCI側の設定はシンプルなので、接続できない場合は、CPE側の設定も見直してください。
**● CPE側接続トラブル例**
・ルーター側フィルタリング設定：OSNアドレスを通すように設定をし直して解消
・ルーターOS不具合：伝送遅延/再起動反映/Globalアドレス伝搬不可能/等の不具合のため、パッチ適用によって解消
・On-PremisesとOCIのCIDRが重複：重複しないようにCIDR設定し直して解消

# ■ DRG設定
## ● DRG用Route Table作成
<img width="753" alt="RT-DRG11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/bbccd347-a5af-c780-c851-b3fb1be951c1.png">


## ● DRGへRoute Table関連付
<img width="998" alt="RT-DRG12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b53d3c25-7dde-3659-4b8e-452436c15a3f.png">
<img width="614" alt="RT-DRG13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/09b8b1c8-2155-35b9-a0fa-799238fd8f02.png">



# ■ Service Gatway設定

## ● Service Gatway用Route Table作成
<img width="723" alt="RT-SG11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/4bee29ae-fcb3-6c99-971d-cdb61f7fb5a1.png">

## ● Service GatwayへRoute Table関連付
<img width="996" alt="RT-SG12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/2457baec-4783-dace-4137-c4bb92567174.png">
 <img width="613" alt="RT-SG13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/a0c608b9-882d-ce7e-0093-826ca1eeeec1.png">



# ■ 動作確認

## ● BGP確認
DRGに接続したRegionの [Public IP Address Ranges](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/addressranges.htm#osn-ranges) がBGPルートとしてアドバタイズされます

### ・すべてのBGP接続のステータスを確認

```shell-session
Router01(config)# show ip bgp summary
    BGP router ID 192.168.0.211, local AS number 65000
    2 BGP AS-PATH entries

    Neighbor         V    AS    MsgRcvd MsgSent Up/DownTime   State
    192.168.200.202 4    31898 27415   25143   0:47:42       ESTABLISHED
    192.168.200.206 4    31898 27585   25142   0:47:40       ESTABLISHED

    Total number of neighbors 4
```


### ・BGP情報確認

```shell-session
Router01(config)# show ip bgp
    BGP table version is 434, local router ID is 192.168.0.211
    Local AS number 65000
    Status codes: s - suppressed, * - valid, h - history
                > - best, i - internal
    Origin codes: i - IGP, e - EGP, ? - incomplete

    Network            Next Hop            Metric     LocPrf  Path
    *  10.0.0.0/24        192.168.200.206                        31898 i
    *>                    192.168.200.202                        31898 i
    *  134.70.80.0/23     192.168.200.206                        31898 i
    *>                    192.168.200.202                        31898 i
    *  134.70.82.0/23     192.168.200.206                        31898 i
    *>                    192.168.200.202                        31898 i
    *  140.91.32.0/23     192.168.200.206                        31898 i
    *>                    192.168.200.202                        31898 i
    *  140.204.8.128/25   192.168.200.206                        31898 i
    *>                    192.168.200.202                        31898 i
    192.168.200.0/24   0.0.0.0                  0             i
    *  192.29.36.0/22     192.168.200.206                        31898 i
    *>                    192.168.200.202                        31898 i
    *> 192.168.0.0/24   0.0.0.0                  1             i

    Total number of prefixes 14
```


### ・On-Premises(Neighbor)のCIDRがOCIへアドバタイズしていることを確認

```shell-session
Router01(config)# show ip bgp neighbors 192.168.200.202 advertised-routes
    BGP table version is 434, local router ID is 192.168.0.211
    Local AS number 65000
    Status codes: s - suppressed, * - valid, h - history
                > - best, i - internal
    Origin codes: i - IGP, e - EGP, ? - incomplete

    Network            Next Hop            Metric     LocPrf  Path
    *> 192.168.0.0/24   192.168.200.201          1             i

    Total number of prefixes 1
```


### ・OCI Regionの [Public IP Address Ranges](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/addressranges.htm#osn-ranges) がOn-Premises(Neighbor)へアドバタイズしていることを確認

```shell-session
Router01(config)# show ip bgp neighbors 192.168.200.202 received-routes
    BGP table version is 434, local router ID is 192.168.0.211
    Local AS number 65000
    Status codes: s - suppressed, * - valid, h - history
                > - best, i - internal
    Origin codes: i - IGP, e - EGP, ? - incomplete

    Network            Next Hop            Metric     LocPrf  Path
    *> 10.0.0.0/24        192.168.200.202                        31898 i
    *> 134.70.80.0/23     192.168.200.202                        31898 i
    *> 134.70.82.0/23     192.168.200.202                        31898 i
    *> 140.91.32.0/23     192.168.200.202                        31898 i
    *> 140.204.8.128/25   192.168.200.202                        31898 i
    *> 192.29.36.0/22     192.168.200.202                        31898 i

    Total number of prefixes 6
```


### ・Route情報確認

```shell-session
Router01(config)# show ip route
    IP Routing Table - 11 entries, 6 hidden, 2031 frees
    Entries: 4 Connected, 1 Static, 0 RIP, 0 OSPF, 6 BGP
    Codes: C - Connected, S - Static, R - RIP, O - OSPF, IA - OSPF inter area
        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
        E1 - OSPF external type 1, E2 - OSPF external type 2, B - BGP
        * - Candidate default, s - Summary
    Timers: Age
    S*   0.0.0.0/0 [1/1] is directly connected, GigaEthernet0.1, 5d17h13m33s
        10.0.0.0/8 is subnetted, 1 subnets
    B      10.0.0.0/24 [20/0] via 192.168.200.202, Tunnel0.0, 0:44:22
        134.70.0.0/16 is subnetted, 2 subnets
    B      134.70.80.0/23 [20/0] via 192.168.200.202, Tunnel0.0, 0:14:06
    B      134.70.82.0/23 [20/0] via 192.168.200.202, Tunnel0.0, 0:14:06
        140.91.0.0/16 is subnetted, 1 subnets
    B      140.91.32.0/23 [20/0] via 192.168.200.202, Tunnel0.0, 0:14:06
        140.204.0.0/16 is subnetted, 1 subnets
    B      140.204.8.128/25 [20/0] via 192.168.200.202, Tunnel0.0, 0:14:06
        192.168.0.0/16 is subnetted, 2 subnets
    C      192.168.200.200/30 [0/1] is directly connected, Tunnel0.0, 3:37:14
    C      192.168.200.204/30 [0/1] is directly connected, Tunnel1.0, 3:37:06
    B    192.29.36.0/22 [20/0] via 192.168.200.202, Tunnel0.0, 0:14:06
    C    192.168.0.0/24 [0/1] is directly connected, GigaEthernet1.0, 0:57:14
        219.98.239.0/24 is subnetted, 1 subnets
    C      219.98.239.245/32 [0/1] is directly connected, GigaEthernet0.1, 5d17h13m35s
```

# ■ Object Storage接続確認
## ● traceroute確認
設定により経路が短縮されていることを確認

Object Storage 内の共有したい対象データに期間限定でURLリンクを発行する機能Pre-Authenticated Request(PAR)でURLを作成しそのアドレスを使用してtracerouteをします
　・参考[プライベートサブネットからObject Storageへアクセスしてみてみた](https://qiita.com/shirok/items/d8719c121b3814c2d330#-pre-authenticated-requestpar%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%BB%A2%E9%80%81)

### ・設定前のInternet経由の経路

```shell-session
[user@onp-inst01 ~]$  traceroute -I  objectstorage.ap-tokyo-1.oraclecloud.com
    traceroute to objectstorage.ap-tokyo-1.oraclecloud.com (134.70.80.1), 64 hops max, 72 byte packets
    1  * * *
    2  * * *
    3  * * *
    4  * * *
    5  * * *
    6  * * *
    7  * * *
    8  * * *
    9  * * *
    10  * * *
    11  * * *
    12  134.70.80.1 (134.70.80.1)  4.391 ms  4.052 ms  4.081 ms
```

### ・設定後のIPSec経路

```shell-session
[user@onp-inst01 ~]$ traceroute -I  objectstorage.ap-tokyo-1.oraclecloud.com
    traceroute to objectstorage.ap-tokyo-1.oraclecloud.com (134.70.80.1), 64 hops max, 72 byte packets
    1  * * *
    2  * * *
    3  * * *
    4  134.70.80.1 (134.70.80.1)  4.716 ms  4.528 ms  6.641 ms
```


## ● wget でPARファイル取得
※ Mac OS の場合　$ brew install wget でwgetコマンドをインストール

```shell-session
[user@onp-inst01 ~]$ wget https://objectstorage.ap-tokyo-1.oraclecloud.com/p/PAR/n/POC/b/bucket01/o/test_file01.pptx
    --2018-07-18 01:04:15--  
    objectstorage.ap-tokyo-1.oraclecloud.com (objectstorage.ap-tokyo-1.oraclecloud.com) をDNSに問いあわせています... 134.70.80.1
    objectstorage.ap-tokyo-1.oraclecloud.com (objectstorage.ap-tokyo-1.oraclecloud.com)|134.70.80.1|:443 に接続しています... 接続しました。
    HTTP による接続要求を送信しました、応答を待っています... 200 OK
    長さ: 9372530 (8.9M) [application/vnd.openxmlformats-officedocument.presentationml.presentation]
    `test_file01.pptx' に保存中

    test_file01 100%[===================>]   8.94M  5.59MB/s 時間 1.6s

    2018-07-18 01:04:17 (5.59 MB/s) - `test_file01.pptx' へ保存完了 [9372530/9372530]

[user@onp-inst01 ~]$ ls
    Pictures				test_file01.pptx
```

# ■ Autonomous Database接続確認
Internetから接続できないように、Service Gateway以外からのアクセスを遮断設定し、オンプレミスのPrivate IPからAutonomous Databaseへアクセスできることを確認します
・参考：[To manage the access control list of an Autonomous Database](https://docs.cloud.oracle.com/iaas/Content/Database/Tasks/adbmanaging.htm)

## ● アクセス制御リスト(ACL)設定
### ① ATP画面にある[Actions]から[アクセス制御リスト]をクリック
<img width="1006" alt="ATP_制御設定01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/943f970f-f91d-faf8-d46f-b6da8b8186c1.png">

### ② Service Gateway CIDRをホワイトリスト登録
サービスゲートウェイを介したアクセス制御リスト(ACL)を構成する場合、CIDR範囲240.0.0.0/4をACLに追加して、Service Gateway以外からのアクセスを遮断設定
　・参考：[Overview of Autonomous Database](https://docs.cloud.oracle.com/iaas/Content/Database/Concepts/adboverview.htm?Highlight=240.0.0.0)

<img width="693" alt="ATP_制御設定02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c93f1a22-e6a1-cde5-2163-89fa1c31507f.png">


## ● オンプレミスのからATPへ接続確認

```shell-session
[user@onp-inst01 ~]$ ~/oracle/sqlcl/bin/sql /nolog

    SQLcl: 木 7月 18 00:43:06 2019のリリース18.4 Production

    Copyright (c) 1982, 2019, Oracle.  All rights reserved.

SQL> set cloudconfig /Users/shiro/oracle/Wallet_atp01.zip
    操作は正常に完了しました。
    操作は正常に完了しました。
    Using temp directory:/var/folders/td/6d05hmn_000gn/T/oracle_cloud_config120257123

SQL> connect ADMIN@atp01_high
    パスワード (**********?) ********************
    接続しました.
```

# ■ 応用編
Transit Routing(伝送ルーティング)は、同じリージョン内の複数のVCNへのアクセスもできるので、OSN含めたHub-and-Spoke構成が可能です。
<img width="1038" alt="NW構成応用2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/db2fe851-ca2e-dd2a-9517-511f74556e05.png">
このHub-and-Spoke構成は同様 各Route Tableの設定で可能になります。
手順は以前の記事を参考ください
・参考: [Oracle Cloud：VCN Transit Routing で Hub and Spoke構成をしてみてみた](https://qiita.com/shirok/items/fe5cfb09af219703be0e)

# ■ 参考
　●マニュアル：
　　　・[Transit Routing: Private Access to Oracle Services](https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitroutingoracleservices.htm#options)
 　　　・[Supported Cloud Services in Oracle Services Network](https://cloud.oracle.com/networking/service-gateway/supported-services)
 　　　・[Public IP Address Ranges](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/addressranges.htm#osn-ranges)
 　　　・[To manage the access control list of an Autonomous Database](https://docs.cloud.oracle.com/iaas/Content/Database/Tasks/adbmanaging.htm)
 　　　・[Oracle Services Network(OSN)](https://cloud.oracle.com/networking/service-gateway/supported-services)
　　　・[伝送ルーティング : Oracle Servicesへのプライベート・アクセス](https://docs.oracle.com/cd/E97706_01/Content/Network/Tasks/transitroutingoracleservices.htm)
　　　・[伝送ルーティング : 同じリージョン内の複数のVCNへのアクセス](https://docs.oracle.com/cd/E97706_01/Content/Network/Tasks/transitrouting.htm)