新サービス「サービスエンドポイントゲートウェイ(SEG)」の紹介 〜オブジェクトストレージへのプライベート接続を試す〜

サービスエンドポイントゲートウェイ(SEG)について

さくらのクラウドで新しくリリースされたサービスエンドポイントゲートウェイ(SEG: Service Endpoint Gateway)は、さくらのクラウドが提供しているマネージドサービスへ安全にプライベートネットワーク経由で接続できるようにする「スイッチ」の拡張機能です。ニュースリリース記事はこちらです。

【さくらのクラウド】スイッチ拡張機能「サービスエンドポイントゲートウェイ」を提供開始

リリース当初ではオブジェクトストレージに対応していますが、今後順次対応マネージドサービスが拡張していく予定です。一つのSEGで複数のマネージドサービスに対応する予定で、費用対効果の高いサービスを目指して開発を継続中です。

スイッチとSEG

SEGはスイッチの拡張機能として提供されています。

さくらのクラウドで提供されているスイッチには、L2で動作するスイッチとルータ付きL3で動作するスイッチ+ルータの2種類がありますが、SEGが対応しているのはスイッチになりますのでご注意ください。

さっそくやってみる

ではさっそく設定を行っていきます。このブログではSEGを介して、プライベートIPアドレスのみを持っている仮想サーバからオブジェクトストレージのパブリック領域に存在しているオブジェクトをGETします。

1. オブジェクトストレージの初期設定

まずはさくらのクラウドのコントロールパネルのトップからオブジェクトストレージを選択します。

石狩第1サイトを選択し、 利用開始ダイアログに対してOKをクリックします。

適当な名前でバケットを作成しpublic-readでオブジェクトを1つアップロードしておきます。

2. スイッチとSEGの起動

続いてスイッチを作成します。スイッチは本来ゾーンを跨いだ通信はブリッジ接続を行わない限り行えませんが、SEGではゾーンを跨いだ通信が行えます。このため任意のゾーンで作業が可能です。

詳細画面のサービスエンドポイントゲートウェイタブから有効化をクリックします。

IPアドレスを入力します。この例では192.168.0.5を指定しています。これが次のステップで起動する予定の、このスイッチに接続する仮想サーバがオブジェクトストレージにアクセスする際のIPアドレスになります。IPアドレスを入力したら有効化をクリックします。

次に接続先マネージドサービスの変更をクリックします。

サービスリリース直後はオブジェクトストレージのみに対応していますのでチェックボックスをオンにして変更をクリックします。

3. 仮想サーバの起動とネットワーク設定

スイッチに接続するサーバを作成し起動します。このサーバはスイッチと同じゾーンである必要があります。サーバの作成方法の説明は省略しますが、作成する際にサーバを接続するネットワークとして「スイッチに接続」を選択し、先ほど作成したスイッチを指定します。

サーバのIPアドレスは192.168.0.4とします。

この仮想サーバはプライベートIPアドレスのみを持っているため、外部からSSHで接続して操作することができません。このためサーバを起動したらコントロールパネルのコンソール機能で操作します。以下のコマンドでオブジェクトストレージのホスト名をSEGのIPアドレスに紐づけます。

sudo vi /etc/hosts
192.168.0.5 s3.isk01.sakurastorage.jp

設定したらs3.isk01.sakurastorage.jpに対してpingを打ち、応答があることを確認します。これで仮想サーバとSEGの疎通が確認できます。

ubuntu@ubuntu:~$ ping s3.isk01.sakurastorage.jp
PING s3.isk01.sakurastorage.jp (192.168.0.5) 56(84) bytes of data.
64 bytes from s3.isk01.sakurastorage.jp (192.168.0.5): icmp_seq=1 ttl=64 time=1.02 ms
64 bytes from s3.isk01.sakurastorage.jp (192.168.0.5): icmp_seq=2 ttl=64 time=0.233 ms
64 bytes from s3.isk01.sakurastorage.jp (192.168.0.5): icmp_seq=3 ttl=64 time=0.225 ms

--- s3.isk01.sakurastorage.jp ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2026ms

4. テスト

ではテストを行います。オブジェクトストレージ上に設置したファイルをダウンロードしてみます。

ubuntu@ubuntu:~$ curl -O https://s3.isk01.sakurastorage.jp/kameoncloudblog/manual.pdf
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1219k  100 1219k    0     0  15.8M      0 --:--:-- --:--:-- --:--:-- 15.8M
ubuntu@ubuntu:~$ ls
manual.pdf

この通り無事にダウンロードが完了しました。この仮想サーバはパブリックIPアドレスを持っていないため外部との通信が行えませんが、オブジェクトストレージに対してSEG経由でアクセスすることができました。

5. DNSリゾルバの設定

SEGのドキュメントには以下の記載があります。

サービスエンドポイントゲートウェイは、プライベートネットワーク内のサーバに対してNTPサーバー(時刻同期)およびDNSプロキシ(名前解決)機能も提供します。これにより、外部ネットワークに接続せずに、時刻同期や名前解決を安全に行うことができます。

先ほど紹介した手順では/etc/hostsにホスト名とIPアドレスを記載することで名前解決を行いましたが、以下の方法でSEGをDNSリゾルバに指定することでもオブジェクトストレージの名前解決が可能になります。

$ echo "network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.0.4/24
      nameservers:
        addresses:
          - 192.168.0.5" | sudo tee /etc/netplan/01-netcfg.yaml

$ sudo netplan apply

まとめ

このブログでは新しくリリースされたSEGの特徴や設定方法を解説しました。これから対応マネージドサービスが増えていく予定ですのでまた追ってご紹介させていただきます。SEGについてさらに詳しく知りたい方はさくらのクラウドのマニュアルをご覧ください。