専用線を利用したOSS接続方法

#はじめに
OSS（Object Storage Service）を利用するときは、普通にグローバルからインターネット接続すると思いますが、ケースによりイントラネット接続したい場合もあると思います。
今回は、リージョン間で専用線を利用した接続ケースをご紹介したいと思います。

#構成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/e1bad9a2-286c-97de-9bbf-42609df22b3d.png)
北京リージョンから東京リージョンのOSSバケットを、VPNGWを中継してOSSbrowserで参照できるようにするのがゴールです。
※クライアントとVPNGW間はSSLVPNを利用想定

#環境構築

・**前提**
※AlibabaCloudのアカウント（日本サイト）が作成済であること
※各リージョンにVPC・Vswichが作成済であること
※上海R↔東京R間のExpressConnect（VPCコネクション）が開通済であること



###VPN接続設定
コンソールより、VPC→VPN→VPNgatewayで、「VPNgatewayの作成」を押下します。
各設定を入力し、「今すぐ購入」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/bfa68ef3-f080-bd4e-d702-39a8091ff490.png)


`インスタンス名称：任意の値`
`リージョン：上海`
`VPC：作成したVPC`
`ビーク帯域幅：10Mbps（利用したい帯域幅を選択）`
`IPsec-VPN：無効化（今回使用しない）`
`SSL-VPN：有効化`
`SSL接続：５（接続可能最大数）`
他はデフォルトのまま


###SSLサーバ作成
VPNgateway作成後、VPN→SSLserversで、「SSLサーバの作成」を押下します。
各設定を入力後、OKを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/a281e23f-3460-b940-a5bc-96aaefc9b65b.png)
`名前：任意の値`
`VPN Gateway：作成したVPNgateway`
`ローカルネットワーク：上海リージョン・東京リージョンそれぞれのVswitchのCIDRを指定（本構成では192.168.14.0/24、192.168.15.0/24）`
`クライアントサブネット：任意のローカルセグメント（クライアントがVPN接続する時に利用されます）`


###SSLクライアント作成
SSLサーバ作成後、
VPN→SSLClientsで、「クライアント証明書の作成」を押下します。
各設定を入力しOKを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/035fc3ba-5a36-a313-cf03-6426bbd9bee6.png)
`名前：任意の値`
`SSLサーバー：作成したSSLサーバを選択`

作成後、対象のアクションより証明書をローカルにダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/79c6ba84-ec37-a58c-2842-1d42a3190b00.png)


###ECS作成（client）、SSLVPN接続設定
北京リージョンのVPC（192.168.0.0/16）内にクライアントと見立ててECS（WindowsServer）を作成します。
※今回は「Windows Server 2012 R2 DataCenter Edition」のイメージを利用します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/bdee47f5-cc17-58cd-61a3-ebc40d450345.png)


**※2019/7/5より、パブリックイメージより日本語版のWindows Serverは選択できなくなっている為、外国言語の環境から日本語を利用したい場合は、下記にて対応可能です**
https://www.sbcloud.co.jp/entry/2019/07/19/changewindowslanguage/


作成したインスタンスにログインし、OpenVPNをダウンロード・インストール実施します。
参考
https://www.openvpn.jp/document/install-windows/
※接続できない場合は、日本側でダウンロード→転送するなどしてインストールする


SSLクライアント作成でダウンロードしたクライアント証明書を、OpenVPN\configフォルダ内へコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/3600b4f5-3693-a06b-adf5-e684cef5c280.png)


OpenVPNを起動し、ログに「Initialization Sequence Completed」 が出力されれば接続OKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/506b2ea0-acf2-f5e7-8754-db79848f66f7.png)

※ipconfigでクライアントサブネットでローカルIPアドレスが割り振られている事を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/bf1f9c70-7415-0181-95f9-efd063d5b63a.png)

※SSLServerのステータスにも接続数が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/419fd455-e9a7-747f-c02b-488d87a653e4.png)

名前解決の為、hostsファイルにOSSの持つVPCネットワーク（イントラネット）用のアクセスドメイン名と、中継するstoneサーバのローカルIPアドレスの紐付けを記載します。

```
192.168.14.163 oss-ap-northeast-1-internal.aliyuncs.com
192.168.14.163 *******-bucket.oss-ap-northeast-1-internal.aliyuncs.com
```
※ドメイン名はOSSの概要情報で確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/516a655e-5232-e102-9d4a-c58acc080c72.png)


###ECS作成（stone）
東京リージョンにてECS(CentOS)を作成し、stone（アプリケーションレベルの TCP & UDP リピーターソフトウェア）最新版をビルドします。

```
# cd /usr/local/src
# wget http://www.gcd.org/sengoku/stone/stone-2.3e.tar.gz
# tar zxvf stone-2.3e.tar.gz
# cd stone-2.3d-2.3.2.7

# vi Makefile
linux:
$(MAKE) FLAGS="-O -Wall -DCPP='\"/usr/bin/cpp -traditional\"' -DPTHREAD -DUNIX_DAEMON -DPRCTL -DSO_ORIGINAL_DST=80 -DUSE_EPOLL -D_GNU_SOURCE $(FLAGS)" LIBS="-lpthread $(LIBS)" stone
　↑「-D_GNU_SOURCE」を追加

# make linux
　※エラーが出なければOK

# mv stone /usr/bin/
# ln -s /usr/bin/stone /usr/local/bin/stone
# cd ..
# rm -fr stone-2.3d-2.3.2.7
```


セキュリティグループにクライアントのIP（またはセグメント）のhttp接続許可ポリシー追加して、stoneをデバックモードで起動すれば準備完了です。

```
# stone -d -d oss-ap-northeast-1-internal.aliyuncs.com:80 80
```

#接続テスト！
北京ECSに、OSSbrowser（Window x64版）をインストールして起動します。

ダウンロードページ
https://jp.alibabacloud.com/help/doc-detail/61872.htm?spm=a21mg.p38356.a1.3.1bde2cd7qpcAdE

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/623ab506-298d-8740-4f50-26be5f0ecf9a.png)

AKログイン情報を入力し、ログインを押下します。
`Endpoint：カスタマイズを選択
　　　　　 OSSのイントラネット用アクセスドメイン名を入力`
`AccessKeyID/AccessKey Secret：接続に使用するクレデンシャル情報を入力`
`プリセットOSSパス：バケット名（指定あれば）`


ログインできればゴール。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165379/d2391ab8-fbd0-ba1c-24b1-0d9184495462.png)

※stoneサーバでも接続ログが出力されました。

```
# stone -d -d oss-ap-northeast-1-internal.aliyuncs.com:80 80
Jul ** 10:27:33.039794 139921758193472 start (2.3e) [19444]
Jul ** 10:27:33.039913 139921758193472 Debug level: 2
Jul ** 10:27:33.043197 139921758193472 stone 3: 100.100.40.129:http <- 0.0.0.0:http



Jul ** 10:28:05.789819 139921758193472 stone 3: accepted TCP 5 from 10.50.50.14:52286 mode=0
```
これでバケットを利用した日中間でファイルのUL/DLが可能となりました。


#おわりに
リージョン間で専用線を利用したセキュアなイントラネット接続ができました。
高いネットワークパフォーマンスで、ファイル共有はもちろん、他にもコニュニケーションツールの活用などビジネス上の課題解決に役に立ちそうです。
CENでのマルチVPC接続にも応用できそうですが別の機会に試してみたいと思います。