Oracle Cloud: 契約が異なるテナンシ、異なるリージョン間を Cross-Tenancy Remote Peeringしてみてみた

クロステナンシ・ピアリング(Cross-Tenancy Peering) は、異なるリージョン間も接続できます。
ということで、ABC社契約テナンシの Ashuburnリージョンと XYZ社契約テナンシの Phoenixリージョンどうしを Cross-Tenancy Remote Peering して On-PremisesからABC社へ VPN接続を行い、ABC社を中継してOn-Premisesから XYZ社へ疎通できるように設定します。

# ■ 構成
Cross-Tenancy Peering は、お互いの Tenancy 管理者が同意した場合にのみ可能になり、必要な Policyを付与して Peeringを有効化します。
それぞれのテナンシの管理者の内、ABC-Tenancy側を Requestor、もう一方の XYZ-Tenancy側を Acceptor として指定して必要な IAMポリシーを実装して Peeringします。
![構成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/03174fbf-a0b7-1bc0-a07a-96a336346e87.jpeg)



# ■ 事前準備
各テナンシの Computeインスタンス、VCN、Route Table, Security List等や
On-Premisesと ABC-Tenancyテナンシへ、IPSec VPN接続はあらかじめ疎通できるよう設定しておきます。
・参考: [NEC IXルーターを冗長構成でIKEv2 IPSec VPN接続してみてみた](https://qiita.com/shirok/items/611ffb7cdd96ac95d32b)

今回は、IDCSユーザーで作業するため次の情報を使用して各テナンシへ IAM Policy と Group作成を行い Cross-Tenancy Peering VCNsします
IAMユーザーで作業する場合は、IDCSグループ作成は不要です。


|Tenancy Name|ABC-Tenancy|XYZ-Tenancy|
|---|---|---|
|Region|Ashburn|Phoenix|
|Tenancy OCID|ocid1.tenancy.oc1..aaaaaaaa4rljlv6dfuvi2qc6|ocid1.tenancy.oc1..aaaaaaaai4sy6qyo2aa6|
|IDCS Group Name|OCI_Requestor-RPC-Admin|OCI_Acceptor-RPC-Admin|
|IAM Group Name|Requestor-RPC-Admin|Acceptor-RPC-Admin|
|IAM Group OCID|ocid1.group.oc1..aaaaaaaaxqjcqrglcqtfumqny4nto7|-|
|Policy Name|Requestor-RPC-Policy|Acceptor-RPC-Policy|
|Policy Statements|・Define tenancy \<Acceptor Tenancy Name> as \<Acceptor-Tenancy-OCID><br>・Allow group \<Requestor-Group-Name> to manage remote-peering-from in compartment \<Requestor-Compartment-Name><br>・Endorse group \<Requestor-Group-Name> to manage remote-peering-to in tenancy \<Acceptor-Tenancy-Name>|・Define tenancy \<Requestor-Tenancy-Name> as \<Requestor-Tenancy-OCID><br>・Define group \<Requestor-Group-Name> as \<Requestor-Group-OCID><br>・Admit group \<Requestor-Group-Name> of tenancy Requestor to manage remote-peering-to in compartment \<Acceptor-Compartment-Name>|





# ■ ABC-Tenancy (Requestor)作業
## ● IAMグループ: Requestor-RPC-Admin作成

1) OCI コンソール画面
[Identity & Security] > Identity項目 の [Groups] をクリック
![01_Group作成00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/88ee8040-835f-e667-8dc4-b1ecaf7919ae.jpeg)



2) Create Group画面
[Create Group] をクリックし、以下項目を入力して [Create Group] をクリック

	・Name: 任意の名前を設定
	・Description: 任意の説明を記載

![01_IAMグループ- Requestor-RPC作成02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/2afa13ce-688c-f6cd-0292-b567accb4eec.jpeg)


3) 作成完了
![01_IAMグループ- Requestor-RPC作成04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/9fb5de07-2013-13b5-faab-c3630721a756.jpeg)


## ● IDCSグループ: OCI_Requestor-RPC-Admin作成

1) Federation画面
Identity > Federation画面にある、OracleIdentityCloudService をクリック
![02_Federation画面01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d7824393-8c04-0bee-54c5-4d113511f1bb.jpeg)



2) OracleIdentityCloudService画面
[Resources] > [Groups] 画面にある、[Create IDCS Group]をクリック
![02_IDCSグループ作成01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/6cf5b60d-c47d-d756-7d36-971fdace6886.jpeg)


3) Create IDCS Group画面
以下項目をクリックし、[Create]をクリック


	・Name: 任意の名前を設定
	・Description: 任意の説明を記載
	・Users: 付与するIAMユーザーを選択

![02_IDCSグループ作成02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/ba9c4b3f-6316-95d9-3d5a-69c3f4bca332.jpeg)



4) 作成完了
![02_IDCSグループ作成03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/38c3885a-0592-6415-efe2-b4e009d12d61.jpeg)


## ● IAMグループとIDCSグループマッピング

1) Group Mappings画面
[Resources] > [Group Mappings] 画面にある、[Add Mappings]をクリック
![03_IDCSグループマッピング01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/a64f2347-4f65-b793-4e10-9c306ef28ddb.jpeg)

2) Add Mappings画面
以下項目をクリックし、[Create]をクリック

	・Identity Provider Group: 作成した IDCSグループを選択
	・OCI Group: 作成した IAMグループを選択

![03_IDCSグループマッピング02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b04a9cee-ec94-c361-a37f-1957cda7368c.jpeg)


3) Mapping完了
![03_IDCSグループマッピング03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/97741a31-b0b2-57cd-fcac-52edcb0aa4b4.jpeg)



## ● IDCSユーザーへIDCSグループ追加

1) OracleIdentityCloudService: Users画面
[Resources] > [Users] 画面にある、権限を付与するユーザーを選択
![02_IDCSグループ作成00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b7d95854-d70e-8093-1f41-9ec1808040ba.jpeg)



1) ユーザー名: Groups画面
[Add to IDCS Group]をクリック
![05_IDCSユーザーへIDCSグループ追加01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c21bf8c3-0167-62fa-5965-6b4069ab2eb3.jpeg)



2) Add User to IDCS Group画面
以下項目をクリックし、[Add]をクリック

	・Groups: 作成したIDCSグループを選択

![05_IDCSユーザーへIDCSグループ追加02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/101efab7-e630-e0f7-288f-84a73d744eb0.jpeg)




3) Add完了
![05_IDCSユーザーへIDCSグループ追加03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/3402b529-a7ca-93f8-1f8a-2e24fd1f8ac0.jpeg)



## ● ポリシー:Requestor-RPC-Policy作成

1) OCI コンソール画面
Identity & Security > Policies をクリック
![04_Policy作成00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/7a97f096-4b64-5748-aef5-39c7994e32a6.jpeg)



2) Policies画面
[Create Plolicy]をクリック
![04_Policy作成01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/41227411-0797-b057-24d5-56ba55fe3420.jpeg)


3) Create Policy画面
以下項目をクリックし、[Create]をクリック

	・Name: 任意の名前を設定
	・Compartment: rootコンパートメントを選択
	・Policy Builder: [Show manual editor]をONにして、以下入力
		Define tenancy XYZ-Tenancy as ocid1.tenancy.oc1..aaaaaaaai4sy6qyo2aa6
		Allow group Requestor-RPC-Admin to manage remote-peering-from in compartment POC
		Endorse group Requestor-RPC-Admin to manage remote-peering-to in tenancy XYZ-Tenancy

![04_Policy作成02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/bb0fa24a-6567-7767-3dc4-5bf43127dd50.jpeg)




4) Create完了
![04_Policy作成04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/32f66919-e300-05ad-2a2e-15605ef3ecf9.jpeg)



# ■ XYZ-Tenancy (Acceptor)作業
## ● IAMグループ: Acceptor-RPC-Admin作成

1) OCI コンソール画面
[Identity & Security] > Identity の [Groups] をクリック
![01_Group作成00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e6f92725-ba14-a619-d76f-774fc84e28aa.jpeg)


2) Group画面
[Create Group] をクリックし、以下項目をクリックして [Create Group] をクリック

	・Name: 任意の名前を設定
	・Description: 任意の説明を記載

![01_IAMグループ作成02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/8a826e11-6766-69f4-610a-7367b580c7ac.jpeg)


3) 作成完了
![01_IAMグループ作成03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/a6b87719-2186-790e-a919-9b56878820c0.jpeg)


## ● IDCSグループ: OCI_Acceptor-RPC-Admin作成


1) Federation画面
Identity > Federation画面にある、OracleIdentityCloudService をクリック
![02_Federation画面01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/1247ddff-96d6-4ded-f38c-86cec9765bd8.jpeg)


2) OracleIdentityCloudService画面
[Resources] > [Groups] 画面にある、[Create IDCS Group]をクリック
![02_IDCSグループ作成01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c3f49ceb-f10a-5f81-f31b-16bacc7582fd.jpeg)


3) Create IDCS Group画面
以下項目をクリックし、[Create]をクリック

	・Name: 任意のIDCS Group名を入力
	・Description: 任意の説明を記載
	・Users: 付与するユーザーを選択

![02_IDCSグループ作成02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/570ce3b1-f583-607f-0214-cc0e33e2012d.jpeg)


4) 作成完了
![02_IDCSグループ作成03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/1bfa7002-7a31-7f4a-7aa6-ee3d5a7541cb.jpeg)

## ● IAMグループとIDCSグループマッピング

1) Group Mappings画面
[Resources] > [Group Mappings] 画面にある、[Add Mappings]をクリック
![03_IDCSグループマッピング01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/bb7ae696-4e27-400a-48db-39aee3bad4a4.jpeg)


2) Add Mappings画面
以下項目をクリックし、[Create]をクリック

・Identity Provider Group: 作成した IDCSグループを選択
・OCI Group: 作成した IAMグループを選択

![03_IDCSグループマッピング02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c8c59151-49e1-9b36-7ddf-9fc927873495.jpeg)


3) Mapping完了
![03_IDCSグループマッピング03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/1660f2ca-e496-78cb-afea-23601adce470.jpeg)

## ● IDCSユーザーへIDCSグループ追加

1) OracleIdentityCloudService: Users画面
[Resources] > [Users] 画面にある、権限を付与するユーザーを選択
![05_ユーザーへIDCSグループ追加00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/9547cf16-f36b-f3ef-afb4-209684f816ae.jpeg)


1) ユーザー名: Groups画面
![05_IDCSユーザーへIDCSグループ追加02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/5d118492-1746-2bde-f22d-38c06fddf294.jpeg)



2) CAdd User to IDCS Group画面
以下項目をクリックし、[Add]をクリック

・Groups: 作成した IDCS Groupを選択

![05_IDCSユーザーへIDCSグループ追加03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/92b5e096-ca90-a572-6988-d3b23d068b5c.jpeg)




3) Add完了
![05_IDCSユーザーへIDCSグループ追加04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c5ae8f13-cc9e-05e2-7742-3271a2d623a3.jpeg)


## ● ポリシー:Acceptor-RPC-Policy作成

1) OCI コンソール画面
Identity & Security > Policies をクリック
![06_ポリシー追加00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/17b1f7f7-16f7-31fa-eb96-14d0ee52151a.jpeg)


2) Policies画面
[Create Policy]をクリック
![04_Policy作成01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/217b7c02-c09e-cc21-02ff-9c639822e7cd.jpeg)


3) Create Policy画面
以下項目をクリックし、[Create]をクリック

	・Name: 任意の名前を設定
	・Compartment: rootコンパートメント を選択
	・Policy Builder: [Show manual editor]をONにして、以下入力
		Define tenancy ABC-Tenancy as ocid1.tenancy.oc1..aaaaaaaa4rljlv6dfuvi2qc6
		Define group Requestor-RPC-Admin as ocid1.group.oc1..aaaaaaaaxqjcqrglcqtfumqny4nto7
		Admit group Requestor-RPC-Admin of tenancy ABC-Tenancy to manage remote-peering-to in compartment POC


![04_Policy作成02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c105035d-4d35-bbd5-1e9a-72f73d66ea87.jpeg)


4) Create完了
![04_Policy作成03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/3948e5ef-207e-0a80-6bb5-b04f4ddcae30.jpeg)






# ■ Remote Peerin Connection (RPC)作成
各Tenancyにある DRG上のリモート・ピアリング接続(RPC)を作成


## ● ABC-Tenancy側作業
1) DRG画面
左ペインの Resources > [Remote Peerin Connection Attachments]をクリックし、
[Create Remote Peering Connection]をクリック
![06_RPC作成01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c405ca5d-147e-c2d2-48c9-02073ea2cdc6.jpeg)


2) リモート・ピアリング接続の作成画面
以下項目を入力し、[Create Remote Peerin Connection]をクリック

	・Name: 任意の名前を設定
	・Create in compertment: RPCを作成するコンパートメントを設定

![06_RPC作成02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/9b9e1429-0be7-db06-b0e0-5cf42ae4c59b.jpeg)


3) RPC作成完了
![06_RPC作成03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/f70a9e07-7001-0da6-41be-34d421e5ed4b.jpeg)


## ● XYZ-Tenancy側作業
1) DRG画面
左ペインの Resources > [Remote Peerin Connection Attachments]をクリックし、
[Create Remote Peerin Connection]をクリック
![06_RPC作成01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/23ed7f88-807a-dd22-3dba-1b0820f9b961.jpeg)


2) リモート・ピアリング接続の作成画面
以下項目を入力し、[Create Remote Peering Connection]をクリック

	・Name: 任意の名前を設定
	・Create in compartment: RPCを作成するコンパートメントを設定

![06_RPC作成03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/ca6e9664-3cd1-68c8-cbbe-cbd76bdd56d9.jpeg)




3) RPC作成完了
![06_RPC作成04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/a0f6e540-e5ab-a76b-d377-2c7d26f46e79.jpeg)



# ■ Cross-Tenancy Remote Peering

## ● ABC-Tenancy側作業

1) Osaka Region の RPC OCID取得
ABC-Tenancyで作成したRPCのOCIDを取得
![07_RPC-Peering06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d437f681-f92d-3d4a-1cac-f0fa034e2c62.jpeg)



## ● XYZ-Tenancy作業
1) DRG画面
左ペインにある Resources > Remote Peering Connections Attachments をクリックし、
作成した Remote Peering Connectionsをクリック
![07_RPC-Peering.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/15e6eddd-d1de-ddfd-3ba4-020ae21eb098.jpeg)


2) RPC画面
[Establish Connection]をクリック
![07_RPC-Peering02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/45cd8752-e242-c97f-b387-dd23f26f2b17.jpeg)

3)　Establish Connection画面
以下項目を入力し、[Establish Connection]をクリック

	・Region: 接続する対抗リージョンを選択
	・Remote Peering Connection OCID: 接続するABC-Tenancy側RPCのOCIDを設定

![07_RPC-Peering03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/4314fcf3-6af6-6fb1-741d-7f01f5b52128.jpeg)


2) Peering 完了
Peering Status が「Peered」になればPeering完了
![07_RPC-Peering04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/a0eefa8d-6530-215b-e01e-a1eddb75e5d8.jpeg)


# ■ DRG Route Table設定
DRGにアタッチされた RPC、IPSec-VPN Attachment間でトラフィックをルーティングするルート情報を設定

・手順参考: [DRGで東京リージョンを経由して、オンプレミスと 大阪リージョンを接続してみてみた](https://qiita.com/shirok/items/90cff318816fbf2a802d#-osaka-drg-%E3%83%AB%E3%83%BC%E3%83%88%E8%A1%A8%E8%A8%AD%E5%AE%9A)



# ■ On-Premises CPE BGP接続確認

## ・ BGP接続確認

```shell
Router(config)# show ip bgp summary
	BGP router ID 192.168.254.13, local AS number 65001
	2 BGP AS-PATH entries

	Neighbor         V    AS    MsgRcvd MsgSent Up/DownTime   State
	192.168.254.14  4    31898 967     961     2:39:26       ESTABLISHED
	192.168.254.18  4    31898 966     960     2:39:17       ESTABLISHED

	Total number of neighbors 2
```

## ・ Neighbors(OCI) Received-Routes確認

```shell
Router(config)# sho ip bgp neighbors 192.168.254.14 received-routes
	BGP table version is 403, local router ID is 192.168.254.13
	Local AS number 65001
	Status codes: s - suppressed, * - valid, h - history
				> - best, i - internal
	Origin codes: i - IGP, e - EGP, ? - incomplete

	Network            Next Hop            Metric     LocPrf  Path
	*> 10.10.0.0/24       192.168.254.14                         31898 i
	*> 10.20.0.0/24       192.168.254.14                         31898 i

	Total number of prefixes 2
```

## ・ Neighbors(OCI) Advertised-Routes確認

```shell
Router(config)# sho ip bgp neighbors 192.168.254.14 advertised-routes
	BGP table version is 403, local router ID is 192.168.254.13
	Local AS number 65001
	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/25 192.168.254.41           1             i

	Total number of prefixes 1
```


## ・ BGP 確認

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

	Network            Next Hop            Metric     LocPrf  Path
	*  10.10.0.0/24       192.168.254.18                         31898 i
	*>                    192.168.254.14                         31898 i
	*  10.20.0.0/24       192.168.254.18                         31898 i
	*>                    192.168.254.14                         31898 i
	192.168.0.0/24   0.0.0.0                  1             i
	*> 192.168.0.0/25 0.0.0.0                  1             i

	Total number of prefixes 6
```



# ■ On-Premise と XYZ-Tenancy接続確認
## ● On-Premise --> XYZ-Tenancy接続確認
### ・ taraceroute確認

```shell
on-premises:~ user$ traceroute -I 10.20.0.2
	traceroute to 10.20.0.2 (10.20.0.2), 64 hops max, 72 byte packets
		1  * * *
		2  * * *
		3  * * *
		4  * * *
		5  10.20.0.2 (10.20.0.2)  303.541 ms  238.850 ms  203.140 ms
```

### ・ ping疎通確認

```shell
on-premises:~ user$ ping 10.20.0.2 -c 3
	PING 10.20.0.2 (10.20.0.2): 56 data bytes
	64 bytes from 10.20.0.2: icmp_seq=0 ttl=60 time=222.416 ms
	64 bytes from 10.20.0.2: icmp_seq=1 ttl=60 time=234.596 ms
	64 bytes from 10.20.0.2: icmp_seq=2 ttl=60 time=206.904 ms

	--- 10.20.0.2 ping statistics ---
	3 packets transmitted, 3 packets received, 0.0% packet loss
	round-trip min/avg/max/stddev = 206.904/221.305/234.596/11.332 ms
```

### ・ ssh接続確認

```shell
on-premises:~ user$ ssh -i id_rsa opc@10.20.0.2 hostname
	xyz-inst
```


# ■ 参考
・[Peering VCNs in different regions through a DRG](https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/drg-iam.htm#scenario_m)
・[IAM policies related to DRG peering](https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/drg-iam.htm#scenario_m