Oracle Cloud: Cloudに配置したProxy経由でオンプレミスからInternet接続してみてみた

Cloud接続されたInternetアクセスできないオンプレミスの閉域環境で、Webコンソール接続したいことがあります。
ということで、Oracle Cloud へProxyサーバーを配置して、オンプレミスとCloudを閉域接続(Private Network接続)した環境をつくり、Mac Bookから OCI Webコンソール接続してみてみます。
そして、OCIコンソール接続に必要なドメイン *.oracle.com と *.oraclecloud.com 以外は接続できないように Whitelist を Proxyサーバーへ設定します。

#■ 環境
![NW構成3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/9ae880c4-fd4e-8dc8-a871-f15fdf2a0f24.png)
ここでは、 Proxyサーバーインストールと Private DNSサーバー設定を行ます。
その他の IPSec VPN, Compute Instanceなど事前に上記図のように作成し、オンプレミスとOCI COmputeを疎通できるようにしておきます。
・参考: [IPSec VPN: Oracle Cloud: NEC IXルーターを冗長構成でIKEv2 IPSec VPN接続してみてみた](https://qiita.com/shirok/items/611ffb7cdd96ac95d32b)


#■ Proxyサーバー設定
Proxyサーバーとしてsquidをインストールします

##● Squid設定

```shell
[opc@tokyo-inst01 ~]$ sudo yum install -y squid
	読み込んだプラグイン:langpacks, ulninfo
	ol7_UEKR5                                                                                                          | 2.8 kB  00:00:00
	ol7_addons                                                                                                         | 2.8 kB  00:00:00
	ol7_developer                                                                                                      | 2.8 kB  00:00:00
	ol7_developer_EPEL                                                                                                 | 3.4 kB  00:00:00
	ol7_ksplice                                                                                                        | 2.8 kB  00:00:00
	ol7_latest                                                                                                         | 3.4 kB  00:00:00
	ol7_optional_latest                                                                                                | 2.8 kB  00:00:00
	ol7_software_collections                                                                                           | 2.8 kB  00:00:00
	(1/10): ol7_UEKR5/x86_64/updateinfo                                                                                |  52 kB  00:00:00
	(2/10): ol7_developer/x86_64/primary_db                                                                            | 688 kB  00:00:00
	(3/10): ol7_UEKR5/x86_64/primary_db                                                                                | 9.8 MB  00:00:00
	(4/10): ol7_latest/x86_64/updateinfo                                                                               | 3.1 MB  00:00:00
	(5/10): ol7_ksplice/primary_db                                                                                     | 1.4 MB  00:00:00
	(6/10): ol7_optional_latest/x86_64/updateinfo                                                                      | 1.2 MB  00:00:00
	(7/10): ol7_optional_latest/x86_64/primary_db                                                                      | 5.3 MB  00:00:00
	(8/10): ol7_developer_EPEL/x86_64/primary_db                                                                       |  13 MB  00:00:00
	(9/10): ol7_latest/x86_64/primary_db                                                                               |  30 MB  00:00:00
	(10/10): ol7_software_collections/x86_64/primary_db                                                                | 5.5 MB  00:00:00
	依存性の解決をしています
	--> トランザクションの確認を実行しています。
	---> パッケージ squid.x86_64 7:3.5.20-17.el7_9.5 を インストール
	--> 依存性の処理をしています: squid-migration-script のパッケージ: 7:squid-3.5.20-17.el7_9.5.x86_64
	--> 依存性の処理をしています: perl(Digest::MD5) のパッケージ: 7:squid-3.5.20-17.el7_9.5.x86_64
	--> 依存性の処理をしています: perl(Data::Dumper) のパッケージ: 7:squid-3.5.20-17.el7_9.5.x86_64
	--> 依存性の処理をしています: perl(DBI) のパッケージ: 7:squid-3.5.20-17.el7_9.5.x86_64
	--> 依存性の処理をしています: libltdl.so.7()(64bit) のパッケージ: 7:squid-3.5.20-17.el7_9.5.x86_64
	--> 依存性の処理をしています: libecap.so.3()(64bit) のパッケージ: 7:squid-3.5.20-17.el7_9.5.x86_64
	--> トランザクションの確認を実行しています。
	---> パッケージ libecap.x86_64 0:1.0.0-1.el7 を インストール
	---> パッケージ libtool-ltdl.x86_64 0:2.4.2-22.el7_3 を インストール
	---> パッケージ perl-DBI.x86_64 0:1.627-4.el7 を インストール
	--> 依存性の処理をしています: perl(RPC::PlServer) >= 0.2001 のパッケージ: perl-DBI-1.627-4.el7.x86_64
	--> 依存性の処理をしています: perl(RPC::PlClient) >= 0.2000 のパッケージ: perl-DBI-1.627-4.el7.x86_64
	---> パッケージ perl-Data-Dumper.x86_64 0:2.145-3.el7 を インストール
	---> パッケージ perl-Digest-MD5.x86_64 0:2.52-3.el7 を インストール
	--> 依存性の処理をしています: perl(Digest::base) >= 1.00 のパッケージ: perl-Digest-MD5-2.52-3.el7.x86_64
	---> パッケージ squid-migration-script.x86_64 7:3.5.20-17.el7_9.5 を インストール
	--> トランザクションの確認を実行しています。
	---> パッケージ perl-Digest.noarch 0:1.17-245.el7 を インストール
	---> パッケージ perl-PlRPC.noarch 0:0.2020-14.el7 を インストール
	--> 依存性の処理をしています: perl(Net::Daemon) >= 0.13 のパッケージ: perl-PlRPC-0.2020-14.el7.noarch
	--> 依存性の処理をしています: perl(Net::Daemon::Test) のパッケージ: perl-PlRPC-0.2020-14.el7.noarch
	--> 依存性の処理をしています: perl(Net::Daemon::Log) のパッケージ: perl-PlRPC-0.2020-14.el7.noarch
	--> 依存性の処理をしています: perl(Compress::Zlib) のパッケージ: perl-PlRPC-0.2020-14.el7.noarch
	--> トランザクションの確認を実行しています。
	---> パッケージ perl-IO-Compress.noarch 0:2.061-2.el7 を インストール
	--> 依存性の処理をしています: perl(Compress::Raw::Zlib) >= 2.061 のパッケージ: perl-IO-Compress-2.061-2.el7.noarch
	--> 依存性の処理をしています: perl(Compress::Raw::Bzip2) >= 2.061 のパッケージ: perl-IO-Compress-2.061-2.el7.noarch
	---> パッケージ perl-Net-Daemon.noarch 0:0.48-5.el7 を インストール
	--> トランザクションの確認を実行しています。
	---> パッケージ perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 を インストール
	---> パッケージ perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 を インストール
	--> 依存性解決を終了しました。

	依存性を解決しました

	==========================================================================================================================================
	Package                                  アーキテクチャー        バージョン                            リポジトリー                 容量
	==========================================================================================================================================
	インストール中:
	squid                                    x86_64                  7:3.5.20-17.el7_9.5                   ol7_latest                  3.1 M
	依存性関連でのインストールをします:
	libecap                                  x86_64                  1.0.0-1.el7                           ol7_latest                   21 k
	libtool-ltdl                             x86_64                  2.4.2-22.el7_3                        ol7_latest                   48 k
	perl-Compress-Raw-Bzip2                  x86_64                  2.061-3.el7                           ol7_latest                   32 k
	perl-Compress-Raw-Zlib                   x86_64                  1:2.061-4.el7                         ol7_latest                   57 k
	perl-DBI                                 x86_64                  1.627-4.el7                           ol7_latest                  801 k
	perl-Data-Dumper                         x86_64                  2.145-3.el7                           ol7_latest                   47 k
	perl-Digest                              noarch                  1.17-245.el7                          ol7_latest                   22 k
	perl-Digest-MD5                          x86_64                  2.52-3.el7                            ol7_latest                   29 k
	perl-IO-Compress                         noarch                  2.061-2.el7                           ol7_latest                  259 k
	perl-Net-Daemon                          noarch                  0.48-5.el7                            ol7_latest                   50 k
	perl-PlRPC                               noarch                  0.2020-14.el7                         ol7_latest                   35 k
	squid-migration-script                   x86_64                  7:3.5.20-17.el7_9.5                   ol7_latest                   50 k

	トランザクションの要約
	==========================================================================================================================================
	インストール  1 パッケージ (+12 個の依存関係のパッケージ)

	総ダウンロード容量: 4.6 M
	インストール容量: 14 M
	Downloading packages:
	(1/13): libecap-1.0.0-1.el7.x86_64.rpm                                                                             |  21 kB  00:00:00
	(2/13): perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm                                                             |  32 kB  00:00:00
	(3/13): libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm                                                                     |  48 kB  00:00:00
	(4/13): perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm                                                              |  57 kB  00:00:00
	(5/13): perl-Data-Dumper-2.145-3.el7.x86_64.rpm                                                                    |  47 kB  00:00:00
	(6/13): perl-DBI-1.627-4.el7.x86_64.rpm                                                                            | 801 kB  00:00:00
	(7/13): perl-Digest-1.17-245.el7.noarch.rpm                                                                        |  22 kB  00:00:00
	(8/13): perl-Digest-MD5-2.52-3.el7.x86_64.rpm                                                                      |  29 kB  00:00:00
	(9/13): perl-IO-Compress-2.061-2.el7.noarch.rpm                                                                    | 259 kB  00:00:00
	(10/13): perl-Net-Daemon-0.48-5.el7.noarch.rpm                                                                     |  50 kB  00:00:00
	(11/13): perl-PlRPC-0.2020-14.el7.noarch.rpm                                                                       |  35 kB  00:00:00
	(12/13): squid-migration-script-3.5.20-17.el7_9.5.x86_64.rpm                                                       |  50 kB  00:00:00
	(13/13): squid-3.5.20-17.el7_9.5.x86_64.rpm                                                                        | 3.1 MB  00:00:00
	------------------------------------------------------------------------------------------------------------------------------------------
	合計                                                                                                       36 MB/s | 4.6 MB  00:00:00
	Running transaction check
	Running transaction test
	Transaction test succeeded
	Running transaction
	インストール中          : perl-Data-Dumper-2.145-3.el7.x86_64                                                                      1/13
	インストール中          : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                                                               2/13
	インストール中          : perl-Digest-1.17-245.el7.noarch                                                                          3/13
	インストール中          : perl-Digest-MD5-2.52-3.el7.x86_64                                                                        4/13
	インストール中          : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                                                              5/13
	インストール中          : perl-IO-Compress-2.061-2.el7.noarch                                                                      6/13
	インストール中          : libtool-ltdl-2.4.2-22.el7_3.x86_64                                                                       7/13
	インストール中          : libecap-1.0.0-1.el7.x86_64                                                                               8/13
	インストール中          : perl-Net-Daemon-0.48-5.el7.noarch                                                                        9/13
	インストール中          : perl-PlRPC-0.2020-14.el7.noarch                                                                         10/13
	インストール中          : perl-DBI-1.627-4.el7.x86_64                                                                             11/13
	インストール中          : 7:squid-migration-script-3.5.20-17.el7_9.5.x86_64                                                       12/13
	インストール中          : 7:squid-3.5.20-17.el7_9.5.x86_64                                                                        13/13
	検証中                  : 7:squid-migration-script-3.5.20-17.el7_9.5.x86_64                                                        1/13
	検証中                  : perl-Net-Daemon-0.48-5.el7.noarch                                                                        2/13
	検証中                  : perl-Data-Dumper-2.145-3.el7.x86_64                                                                      3/13
	# should be allowed
	検証中                  : perl-Digest-MD5-2.52-3.el7.x86_64                                                                        4/13
	objectstorage.us-ashburn-1.oraclecloud.com
	検証中                  : libecap-1.0.0-1.el7.x86_64                                                                               5/13
	検証中                  : libtool-ltdl-2.4.2-22.el7_3.x86_64                                                                       6/13
	検証中                  : perl-IO-Compress-2.061-2.el7.noarch                                                                      7/13
	# Example rule allowing access from your local networks.
	検証中                  : 7:squid-3.5.20-17.el7_9.5.x86_64                                                                         8/13
	#
	# Recommended minimum configuration:
	#

	# Example rule allowing access from your local networks.
	# Adapt to list your (internal) IP networks from where browsing
	# should be allowed
	acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
	acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

	acl SSL_ports port 443
	acl Safe_ports port 80          # http
	acl Safe_ports port 21          # ftp
	acl Safe_ports port 443         # https
	acl Safe_ports port 70          # gopher
	acl Safe_ports port 210         # wais
	acl Safe_ports port 1025-65535  # unregistered ports
	acl Safe_ports port 280         # http-mgmt
	acl Safe_ports port 488         # gss-http
	acl Safe_ports port 591         # filemaker
	acl Safe_ports port 777         # multiling http
	acl SSL_ports port 1522     # Autonomous Database
	acl CONNECT method CONNECT

	/312

	検証中                  : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                                                              9/13
	検証中                  : perl-Digest-1.17-245.el7.noarch                                                                         10/13
	検証中                  : perl-DBI-1.627-4.el7.x86_64                                                                             11/13
	検証中                  : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                                                              12/13
	検証中                  : perl-PlRPC-0.2020-14.el7.noarch                                                                         13/13

	インストール:
	squid.x86_64 7:3.5.20-17.el7_9.5

	依存性関連をインストールしました:
	libecap.x86_64 0:1.0.0-1.el7                  libtool-ltdl.x86_64 0:2.4.2-22.el7_3   perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
	perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7   perl-DBI.x86_64 0:1.627-4.el7          perl-Data-Dumper.x86_64 0:2.145-3.el7
	perl-Digest.noarch 0:1.17-245.el7             perl-Digest-MD5.x86_64 0:2.52-3.el7    perl-IO-Compress.noarch 0:2.061-2.el7
	perl-Net-Daemon.noarch 0:0.48-5.el7           perl-PlRPC.noarch 0:0.2020-14.el7      squid-migration-script.x86_64 7:3.5.20-17.el7_9.5

	完了しました!
```

##● squid.conf 設定
1) 既存ファイル退避

```shell
[root@tokyo-inst01 opc]# cp /etc/squid/squid.conf /etc/squid/squid.conf.org
```


2) squid.conf 設定

```shell
[root@tokyo-inst01 ~]# vi /etc/squid/squid.conf
[root@proxy-inst01 ~]# cat /etc/squid/squid.conf
	#
	# Recommended minimum configuration:
	#

	# Example rule allowing access from your local networks.
	# Adapt to list your (internal) IP networks from where browsing
	# should be allowed
	acl localnet src 192.168.0.0/16	# RFC1918 possible internal network

	acl SSL_ports port 443

	# Squid normally listens to port 3128
	http_port 3128

	# Wite List
	acl whitelist dstdomain "/etc/squid/whitelist"
	http_access allow whitelist
```


3) whitelistファイル設定
OCI コンソール接続のためのドメイン以下４つを登録

```shell
[root@proxy-inst01 ~]# vi /etc/squid/whitelist
[root@proxy-inst01 ~]# cat /etc/squid/whitelist
	.oracle.com
	.oraclecloud.com
	dc.oracleinfinity.io
	consent.trustarc.com
```

4) squid再読み込み

```shell
[root@proxy-inst01 ~]# squid -k reconfigure
```

5) squid 再起動

```shell
[root@proxy-inst01 ~]# service squid restart
	Redirecting to /bin/systemctl restart squid.service
```

6) squid稼働確認

```shell
[root@tokyo-inst01 opc]# systemctl status squid.service
	● squid.service - Squid caching proxy
	Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled; vendor preset: disabled)
	Active: active (running) since 金 2021-02-05 06:32:25 GMT; 8s ago
	Process: 23681 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF (code=exited, status=0/SUCCESS)
	Process: 23675 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS)
	Main PID: 23683 (squid)
		Tasks: 3
	Memory: 15.2M
	CGroup: /system.slice/squid.service
			├─23683 /usr/sbin/squid -f /etc/squid/squid.conf
			├─23685 (squid-1) -f /etc/squid/squid.conf
			└─23686 (logfile-daemon) /var/log/squid/access.log

	2月 05 06:32:25 tokyo-inst01 systemd[1]: Starting Squid caching proxy...
	2月 05 06:32:25 tokyo-inst01 squid[23683]: Squid Parent: will start 1 kids
	2月 05 06:32:25 tokyo-inst01 squid[23683]: Squid Parent: (squid-1) process 23685 started
	2月 05 06:32:25 tokyo-inst01 systemd[1]: Started Squid caching proxy.
```


##● Firewalld設定
Squid使用Port 3128 を通すように設定

1) 3128/tcp 開放

```shell
[root@proxy-inst01 ~]# firewall-cmd --permanent --add-port=3128/tcp
    success
```


2) firewalld 再起動

```shell
[root@proxy-inst01 ~]# systemctl restart firewalld
```


3) firewalld 正常起動確認

```shell
[root@proxy-inst01 ~]# systemctl status firewalld
	● firewalld.service - firewalld - dynamic firewall daemon
	Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
	Active: active (running) since 金 2021-02-05 15:08:27 GMT; 8s ago
		Docs: man:firewalld(1)
	Main PID: 5493 (firewalld)
	Memory: 23.1M
	CGroup: /system.slice/firewalld.service
			└─5493 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

	2月 05 15:08:27 proxy-inst01 systemd[1]: Starting firewalld - dynamic firewall daemon...
	2月 05 15:08:27 proxy-inst01 systemd[1]: Started firewalld - dynamic firewall daemon.
```

4) 設定Port確認

```shell
[root@private-inst02 squid]# firewall-cmd --list-ports
	3128/tcp
```

#■ Private DNS設定

##● Private DNS エンドポイントIP作成
1) 対象VCNアクセス
Proxyサーバー配置したVCNへアクセスし、画面にある「DNSリゾルバのVCN」をクリック
![03.DNS01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/0352f9c5-2d4f-d9c8-98b9-082192cffe80.png)


2) エンドポイント画面
[エンドポイントの作成]をクリック
![03.DNS02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b6e27a61-a06c-9f33-2af6-dad15a1c1767.png)



3) エンドポイントの作成画面

以下項目を入力し、[エンドポイントの作成]をクリック

	・名前: エンドポイント名を設定
	・サブネットの選択:Private DNSエンドポイントを配置するSubnetを選択
	・エンドポイント・タイプ: ここでは[リスニング]を選択
	・リスニングIPアドレス: Private DNSエンドポイントIPを設定

![03.DNS03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c3fb4859-5742-16bd-7c6b-9b85190e37f8.png)

4) エンドポイント作成確認
エンドポイントが作成されたことを確認
![03.DNS04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/279be534-8266-a06f-58bd-65743f7a77a5.png)




#■ オンプレミス Mac Book設定

##● Network設定
Mac Bookへ OCIの DNSと Proxyサーバーを設定

1) システム環境設定 画面
ネットワークをクリック
![06_MacBookーNW設定00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e344bd9c-9e92-dfc0-86f7-1ac9ec65eb87.png)


2) DNS 画面
ProxyサーバーのIPアドレスを設定
![06_MacBookーNW設定01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c7777423-4697-8617-ee47-3dd26c018391.png)


3) プロキシ画面
HTTPSをチェックし、
保護されたWebプロキシサーバー: ProxyサーバーのIPアドレス, Port番号3128を設定
![06_MacBookーNW設定02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/1f881f9f-b997-9e28-1e7b-112f157267c7.png)


##● Proxy Server接続確認

```shell
[mac-book: ~]# ping 10.0.0.11 -c 3
	PING 10.0.0.11 (10.0.0.11): 56 data bytes
	64 bytes from 10.0.0.11: icmp_seq=0 ttl=62 time=8.027 ms
	64 bytes from 10.0.0.11: icmp_seq=1 ttl=62 time=60.485 ms
	64 bytes from 10.0.0.11: icmp_seq=2 ttl=62 time=8.567 ms

	--- 10.0.0.11 ping statistics ---
	3 packets transmitted, 3 packets received, 0.0% packet loss
	round-trip min/avg/max/stddev = 8.027/25.693/60.485/24.603 ms
```


##● OCI Private DNS接続確認
1) nslookup確認
Serverが Proxy Serverアドレスでgoogle.comなどへ名前解決できることを確認

```shell
[mac-book: ~]# nslookup google.com
	Server:		10.0.1.254
	Address:	10.0.1.254#53

	Non-authoritative answer:
	Name:	google.com
	Address: 216.58.197.174
```




#■ OCIコンソール Proxy接続確認

##● oracle.com 以外接続不可能確認
Safariブラウザで、google.comなどへ接続でず、"プロキシサーバーに接続できません"と表示されることを確認
![08_Browserアクセス05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/dad6dc90-159b-9ece-0c2d-2c6e9e2ff1b1.png)


##● OCIコンソール接続確認
1) https://cloud.oracle.com接続
https://cloud.oracle.com へ接続しエラーなく接続できることを確認
![08_Browserアクセス01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/555cb840-89f6-d7b9-4828-ed839aa26b7f.png)

2) OCIコンソール ログイン完了
![08_Browserアクセス02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/2bf93f41-d257-c311-bcca-280a5b261b3e.png)




#■ 参考
　・[Announcing Oracle Cloud Infrastructure Private DNS](https://blogs.oracle.com/cloud-infrastructure/announcing-oracle-cloud-infrastructure-private-dns)
　・[Private DNS](https://docs.oracle.com/en-us/iaas/Content/DNS/Tasks/privatedns.htm)