内容
@takeda_h さんの閉域の AWS 環境からさくらのクラウドのオブジェクトストレージにアクセスするを参考に、AWS〜さくらのクラウドのオブジェクトストレージ間の接続を試してみました。今回の構成は、一旦インターネットを経由してから閉域へ接続する構成となるため、現実的な利用には適しませんが、中間の接続をVPNにしたりAWS接続サービスを利用したりするのは少し手間がかかるため、構成のイメージを掴むことを目的に、中間の接続をインターネットとしています。
- 自宅にルータがないため、AWS〜さくらのクラウドのサーバ間の通信はインターネット通信としました。
- さくらのクラウド検定ラボではオブジェクトストレージが使用できないため、エンドポイント URL へのアクセスまでを確認しました。
構成
通信経路は上記記事と同様に、仮想サーバに対するポートフォワードを設定します。EC2 のローカルホストにアクセスした際、仮想サーバ経由でプライベートリンク(オブジェクトストレージ)にアクセスします。
手順
AWS 側の手順は割愛します。
スイッチの作成
通常のスイッチを 1 つ作成します。
サーバの作成
最小構成でサーバを作成します。
NIC の設定では「インターネットに接続」を選択します。
サーバに NIC を追加
「サーバ」→「NIC」から「追加」を選択して NIC を追加します。未接続の NIC が作成されます。
追加された未接続の NIC を選択し、「接続の編集」をクリック後、先ほど作成したスイッチを選択して接続します。
なお、NIC の「IPv4 アドレスを編集」から IP アドレスの設定が可能ですが、こちらはコンソール上の表示のみで、ディスクへの反映は行われません。後ほどサーバ側で IP アドレスの設定を行います。
サービスエンドポイントの作成
スイッチの詳細から「サービスエンドポイントゲートウェイ」を選択します。
IPv4 アドレスを設定し、サービスエンドポイントゲートウェイを有効化します。
オブジェクトストレージの下記項目にチェックを入れ、有効化します。
さくらのクラウドサーバの IP アドレス設定
さくらのクラウドサーバ上で下記のネットワーク設定ファイルを作成します。
network:
version: 2
renderer: networkd
ethernets:
eth1:
dhcp4: false
dhcp6: false
addresses: [192.168.10.10/24]
nameservers:
addresses: [192.168.10.20]
設定を反映します。
chmod 600 /etc/netplan/99_config.yaml
netplan apply
ループバック・グローバル側・ローカル側の IP アドレスが付与されていることを確認します。
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 59.106.x.x/24 brd 59.106.x.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 192.168.10.10/24 brd 192.168.10.255 scope global eth1
ポートフォワードの設定
さくらのクラウドサーバ上で秘密鍵・公開鍵を作成し、公開鍵を authorized_keys に保存します。
ssh ubuntu@59.106.x.x
ssh-keygen -t ed25519
echo "公開鍵の内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
AWS の EC2 サーバ上の hosts ファイルに下記レコードを追加します。
127.0.0.1 s3.isk01.sakurastorage.jp
AWS の EC2 サーバ上に秘密鍵を key.pem として保存後、下記コマンドを実行します。
ローカルホストの 443 番ポートにアクセスした際、59.106.x.x 経由で s3.isk01.sakurastorage.jp に接続します。
sudo ssh -fN -L 443:s3.isk01.sakurastorage.jp:443 ubuntu@59.106.x.x -i key.pem
接続確認
さくらのクラウドサーバ上で tcpdump コマンドを実行します。
tcpdump -i any host s3.isk01.sakurastorage.jp
AWS の EC2 サーバ上で下記コマンドを実行します。
aws s3 ls --endpoint-url https://s3.isk01.sakurastorage.jp
An error occurred (InvalidToken) when calling the ListBuckets operation: The provided token is malformed or otherwise invalid.
オブジェクトストレージのエンドポイントへの接続は試みられていますが、さくらのクラウドサーバ上の tcpdump の結果を見ると、インターネット側の NIC を経由した通信になっていました。通信経路は EC2 → さくらのクラウドサーバ → インターネット → オブジェクトストレージとなっています。
# tcpdump -i any host s3.isk01.sakurastorage.jp(一部抜粋・整形)
XX:XX:30.913 eth0 Out IP Test-sv.42624 > 153.120.xx.xx.443: [SYN]
XX:XX:30.931 eth0 In IP 153.120.xx.xx.443 > Test-sv.42624: [SYN, ACK]
XX:XX:30.931 eth0 Out IP Test-sv.42624 > 153.120.xx.xx.443: [ACK]
XX:XX:30.934 eth0 Out IP Test-sv.42624 > 153.120.xx.xx.443: [PSH, ACK]
XX:XX:30.952 eth0 In IP 153.120.xx.xx.443 > Test-sv.42624: [ACK]
XX:XX:30.954 eth0 In IP 153.120.xx.xx.443 > Test-sv.42624: [PSH, ACK]
XX:XX:30.958 eth0 Out IP Test-sv.42624 > 153.120.xx.xx.443: [PSH, ACK]
XX:XX:30.976 eth0 In IP 153.120.xx.xx.443 > Test-sv.42624: [PSH, ACK]
XX:XX:31.031 eth0 Out IP Test-sv.42624 > 153.120.xx.xx.443: [FIN, ACK]
XX:XX:31.049 eth0 In IP 153.120.xx.xx.443 > Test-sv.42624: [FIN, ACK]
XX:XX:31.049 eth0 Out IP Test-sv.42624 > 153.120.xx.xx.443: [ACK]
さくらのクラウドサーバ上の hosts ファイルに下記を追加します。S3 のエンドポイント URL にアクセスした際、エンドポイントサービスへ接続されるようになります。
192.168.10.20 s3.isk01.sakurastorage.jp
再度、AWS の EC2 サーバから S3 のエンドポイントに接続します。
aws s3 ls --endpoint-url https://s3.isk01.sakurastorage.jp
An error occurred (InvalidToken) when calling the ListBuckets operation: The provided token is malformed or otherwise invalid.
今度はスイッチに接続したローカル側の NIC からの通信となり、エンドポイントサービス経由の接続になりました。
# tcpdump -i any -n host s3.isk01.sakurastorage.jp(一部抜粋・整形)
XX:XX:01.446 eth1 Out IP 192.168.10.10.50956 > 192.168.10.20.443: [SYN]
XX:XX:01.447 eth1 In IP 192.168.10.20.443 > 192.168.10.10.50956: [SYN, ACK]
XX:XX:01.447 eth1 Out IP 192.168.10.10.50956 > 192.168.10.20.443: [ACK]
XX:XX:01.456 eth1 Out IP 192.168.10.10.50956 > 192.168.10.20.443: [PSH, ACK]
XX:XX:01.456 eth1 In IP 192.168.10.20.443 > 192.168.10.10.50956: [ACK]
XX:XX:01.494 eth1 In IP 192.168.10.20.443 > 192.168.10.10.50956: [PSH, ACK]
XX:XX:01.500 eth1 Out IP 192.168.10.10.50956 > 192.168.10.20.443: [PSH, ACK]
XX:XX:01.518 eth1 In IP 192.168.10.20.443 > 192.168.10.10.50956: [PSH, ACK]
XX:XX:01.524 eth1 Out IP 192.168.10.10.50956 > 192.168.10.20.443: [PSH, ACK]
XX:XX:01.543 eth1 In IP 192.168.10.20.443 > 192.168.10.10.50956: [PSH, ACK]
なお、認証エラーではなく、単純な IP アドレスの誤りなどで接続できない場合は下記のようなエラーになります。
aws s3 ls --endpoint-url https://s3.isk01.sakurastorage.jp
Could not connect to the endpoint URL: "https://s3.isk01.sakurastorage.jp/"









