9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oracle Cloud:オンプレミスからVPN経由でObject Storageにアクセスさせてみてみた

Last updated at Posted at 2019-01-21

■ 目的

Object Storage はPrivate IP は無いので、インターネットでアクセスすることになりますが、HTTPSでアクセスするので暗号化されセキュアです。
今回は、あえてPrivate IPからアクセスできるようSquidのProxy Server経由でObject Strageにアクセスさせてみてみます。

■ ネットワーク構成

NW構成2.png

■ ネットワーク構成の作成

・上記構成をTerraformなど使用してちょろんと作成します
 本手順は、Proxy Serverのインストールから説明します

■ Proxy Server構築

● Proxy Server用Linux インスタンス作成

Private Subnet上にCompute Instanceを作成します

● NAT Gatway作成

NAT Gatewayを設定します
yumインストールするには、Internetアクセスが必要です。
今回Private SubnetにServerを構築するため、Public IPはありません
そのため、NAT Gatway経由でsquidをインストールします

● squidインストール

# yum install squid
[root@squid-proxy opc]# yum install -y squid
    ・・・
			インストール:
			  squid.x86_64 7:3.5.20-12.el7

			依存性関連をインストールしました:
			  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-12.el7

			完了しました!

インストール完了後、Internetアクセス不要であればNAT Gatewayを [Block Traffic] もしくは削除します

● squid設定

1) Proxyサーバーにアクセス可能なCIDR登録とwhitelist動作設定
viで以下情報を追加

[root@squid-proxy ~]# cp /etc/squid/squid.conf /etc/squid/squid.conf.org
[root@squid-proxy ~]# vi /etc/squid/squid.conf
	# should be allowed
	acl localnet src 10.0.0.0/16
	acl localnet src 172.24.0.0/16

	# Squid normally listens to port 3128
	http_port 3128

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

2) ホワイトリスト設定
必要なRegionのObject StorageURLを登録

[root@squid-proxy ~]# vi /etc/squid/whitelist
objectstorage.us-ashburn-1.oraclecloud.com

3) Squid起動

[root@squid-proxy ~]# service squid restart
[root@squid-proxy ~]# 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 日 2019-01-20 23:04:19 GMT; 16h ago
	  Process: 12721 ExecStop=/usr/sbin/squid -k shutdown -f $SQUID_CONF (code=exited, status=0/SUCCESS)
	  Process: 12729 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF (code=exited, status=0/SUCCESS)
	  Process: 12724 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS)
	 Main PID: 12732 (squid)
	   CGroup: /system.slice/squid.service
	           ├─12732 /usr/sbin/squid -f /etc/squid/squid.conf
	           ├─12734 (squid-1) -f /etc/squid/squid.conf
	           └─12735 (logfile-daemon) /var/log/squid/access.log

	 1月 20 23:04:19 squid-proxy systemd[1]: Starting Squid caching proxy...
	 1月 20 23:04:19 squid-proxy systemd[1]: Started Squid caching proxy.
	 1月 20 23:04:19 squid-proxy squid[12732]: Squid Parent: will start 1 kids
	 1月 20 23:04:19 squid-proxy squid[12732]: Squid Parent: (squid-1) process 12734 started

4) firewalld設定
Squid使用Port 3128 を通すように設定

[root@squid-proxy ~]# firewall-cmd --permanent --add-port=3128/tcp
    success
[root@squid-proxy ~]# systemctl restart firewalld

■ Private Load Balancer構築

Proxy Serverの負荷分散および冗長化のため、Load Balancerを配置します

● Private Load Balancer作成

Load Balancer画面で[Create Load Balancer]ボタンをクリックし、以下情報を入力して作成

・Listener Information
    - Protocol:TCP
    - PORT:3128

・Backend Set Information
    - IP Address: Squid Proxy ServerのPrivate IP Addressを登録
    - Port:3128

・Health Check 
    - Protocol:TCP
    - PORT:3128

LB01.png

● Backend Sets Health確認

Backend Setが登録されProxy Serverと疎通できていることを確認
LB02.png

■ 動作確認

オンプレミスのインスタンスから直接objectストレージにアクセスできることを確認します
ここでは、OCI Command Line Interface (CLI)を使用してアクセスします

● proxy設定前確認:エラー出ること確認

Private Subnetから直接接続できないことを確認

[root@test-Inst01 ~]$ oci os bucket list --query 'data[*]."name"|[0]'
	Usage: oci os bucket list [OPTIONS]

	Error: Unable to retrieve namespace internally. Please provide the namespace using the option "--['namespace-name']".

● proxy 環境変数設定

Proxy経由するための設定
今回は、Load Barancerを使用していますので、Load BarancerのListener IP(10.0.0.8)を設定します

[root@test-Inst01 ~]$ export https_proxy="10.0.0.8:3128"
[root@test-Inst01 ~]$ env | grep proxy
	https_proxy=10.0.0.8:3128

● bucketアクセス確認

Proxy経由することでアクセスできることを確認

[root@test-Inst01 ~]$ oci os bucket list --query 'data[*]."name"|[0]'
	"Proxy-Bucket"

● proxyサーバー(Squid)経由でアクセスされていることを確認

Squid LOG確認しLoad BalancerのIPからobjectstorageへアクセスされていることを確認

[root@squid-proxy squid]# tail -f /var/log/squid/access.log


	1548078960.163    282 10.0.0.7 TCP_TUNNEL/200 4107 CONNECT objectstorage.us-ashburn-1.oraclecloud.com:443 - HIER_DIRECT/134.70.100.100 -
	1548078960.553    273 10.0.0.7 TCP_TUNNEL/200 4540 CONNECT objectstorage.us-ashburn-1.oraclecloud.com:443 - HIER_DIRECT/134.70.100.100 -

● テストファイル転送

[root@test-Inst01 ~]$ oci os object put  -bn Proxy-Bucket --file /tmp/test-file01.txt --name test-file01.txt --no-multipart
	{
	  "etag": "A1A66A5F1E975E053024",
	  "last-modified": "Mon, 21 Jan 2019 15:32:47 GMT",
	  "opc-content-md5": "2M2Y8AsgTpgAmY=="
	}

● テストファイル確認

[root@test-Inst01 ~]$ oci os object list -bn Proxy-Bucket --output table
    +---------------------+-----------------+------+----------------------------------+
	| md5                 | name            | size | time-created                     |
	+---------------------+-----------------+------+----------------------------------+
	| 2M2Y8AsgTpgAmY7Ph== | test-file01.txt | 0    | 2019-01-21T15:32:47.298000+00:00 |
	+---------------------+-----------------+------+----------------------------------+
	prefixes: []

■ 付録

● Load BalancerのIP確認

OCI の Private Load Balancer は透過的に Primary/Standby と Floating Private IP で構成されており、IPは自動採番され、tcpdump でも確認することができます。
Standby IP は、Backend Serversとなる Squid へ Poringしているので tcpdumpを取ることで確認できます。

[root@squid-proxy opc]# tcpdump -n -i ens3 port 3128
	tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
	listening on ens3, link-type EN10MB (Ethernet), capture size 262144 bytes
	01:19:23.588100 IP 10.0.0.6.50286 > 10.0.10.11.squid: Flags [S], seq 915959842, win 26880, options [mss 8960,sackOK,TS val 2815064024 ecr 0,nop,wscale 7], length 0
	01:19:23.588149 IP 10.0.10.11.squid > 10.0.0.6.50286: Flags [S.], seq 495790511, ack 915959843, win 26844, options [mss 8960,sackOK,TS val 322500794 ecr 2815064024,nop,wscale 7], length 0
	01:19:23.588250 IP 10.0.0.6.50286 > 10.0.10.11.squid: Flags [.], ack 1, win 210, options [nop,nop,TS val 2815064024 ecr 322500794], length 0
	01:19:23.588719 IP 10.0.0.6.50286 > 10.0.10.11.squid: Flags [F.], seq 1, ack 1, win 210, options [nop,nop,TS val 2815064024 ecr 322500794], length 0
	01:19:23.588777 IP 10.0.10.11.squid > 10.0.0.6.50286: Flags [F.], seq 1, ack 2, win 210, options [nop,nop,TS val 322500795 ecr 2815064024], length 0
	01:19:23.588874 IP 10.0.0.6.50286 > 10.0.10.11.squid: Flags [.], ack 2, win 210, options [nop,nop,TS val 2815064024 ecr 322500795], length 0
	01:19:25.019310 IP 10.0.0.7.50304 > 10.0.10.11.squid: Flags [S], seq 2132021857, win 26880, options [mss 8960,sackOK,TS val 2733706381 ecr 0,nop,wscale 7], length 0
	01:19:25.019349 IP 10.0.10.11.squid > 10.0.0.7.50304: Flags [S.], seq 117296909, ack 2132021858, win 26844, options [mss 8960,sackOK,TS val 1898647448 ecr 2733706381,nop,wscale 7], length 0
	01:19:25.019444 IP 10.0.0.7.50304 > 10.0.10.11.squid: Flags [.], ack 1, win 210, options [nop,nop,TS val 2733706382 ecr 1898647448], length 0
	01:19:25.020022 IP 10.0.0.7.50304 > 10.0.10.11.squid: Flags [F.], seq 1, ack 1, win 210, options [nop,nop,TS val 2733706382 ecr 1898647448], length 0
	01:19:25.020099 IP 10.0.10.11.squid > 10.0.0.7.50304: Flags [F.], seq 1, ack 2, win 210, options [nop,nop,TS val 1898647449 ecr 2733706382], length 0
	01:19:25.020189 IP 10.0.0.7.50304 > 10.0.10.11.squid: Flags [.], ack 2, win 210, options [nop,nop,TS val 2733706382 ecr 1898647449], length 0

上記実行結果により、以下がLBのIPとなります

 ・Floating IP:10.0.0.8 (OCIコンソールから確認できるIP)
 ・Primary IP :10.0.0.7 (ClientからSquidにアクセスした/var/log/squid/access.logから確認できたIP)
 ・Standby IP :10.0.0.6 (Squidにポーリングしたtcpdumpから確認できたIP)
9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?