こんにちは、UOZUです!
以前、オブジェクトストレージをマウントする記事を書きました。
ただし、上記のマウント設定では、グローバルネットワークを経由してサーバ・オブジェクトストレージ間のアクセスが発生します。
今回、グローバルネットワークを経由しないサービスポイントゲートウェイを利用し、より安全に利用できる構成でマウントをしてみようと思います。
https://www.sakura.ad.jp/corporate/information/announcements/2025/10/30/1968221516
https://manual.sakura.ad.jp/cloud/network/switch/seg.html
検証環境概要
サービスポイントゲートウェイの利用には「サーバがスイッチに接続していること」が前提となります。
今回は以下の構成で検証します。
・共有セグメント
・VPNルータ
・スイッチ
・仮想サーバー
・サービスポイントゲートウェイ
・オブジェクトストレージ

通常のマウント時
先の記事の通り、一般的な手順でs3fsを利用してマウントしてみます。
バケットの作成と初期設定を行います。今回も石狩第一サイトにバケットを作成しました。

# dnf install s3fs-fuse# mkdir ~/.aws
# vi .aws/credentials
------------------------------------------------
[default]
aws_access_key_id = アクセスキーID
aws_secret_access_key = シークレットアクセスキー
------------------------------------------------# vi .aws/config
------------------------------------------------
[default]
region = jp-north-1
output = text
------------------------------------------------このままマウントし、s3fsの利用状況を見てみます。
# mkdir /mnt/sakura/
# s3fs uozu /mnt/sakura/ -o allow_other,url=https://s3.isk01.sakurastorage.jp
# touch /mnt/sakura/test# ss -ntpH | grep s3fs
ESTAB 0 0 192.168.0.20:38986 203.0.113.205:443 users:(("s3fs",pid=2104,fd=10))
ESTAB 0 0 192.168.0.20:38988 203.0.113.205:443 users:(("s3fs",pid=2104,fd=12))
ESTAB 0 0 192.168.0.20:39000 203.0.113.205:443 users:(("s3fs",pid=2104,fd=17))
ESTAB 0 0 192.168.0.20:38996 203.0.113.205:443 users:(("s3fs",pid=2104,fd=15))当たり前ですが、グローバルネットワーク経由でオブジェクトストレージにアクセスしていますね。
※グローバルIPアドレスは例示用のものに修正しています。
サービスポイントゲートウェイの有効化
ではサービスポイントゲートウェイを有効していきます。
スイッチ上からサービスポイントゲートウェイ機能を有効化
まずサーバーが接続されているスイッチの「サービスポイントゲートウェイ」の「有効化」をクリックし、サービスポイントゲートウェイ機能を有効にします。

「有効化」のクリック後、サービスポイントゲートウェイのIPアドレスの設定画面が出てくるので、指定したいローカルネットワークのIPアドレスとサブネットマスクを指定します。
今回の検証では、192.168.0.10/24としています。

設定に問題が無ければ「有効化」をクリックし、機能を有効にしましょう。

しばらく待つと、スイッチ上のサービスポイントゲートウェイの画面から、情報が確認出来るようになります。
接続するマネジメントサービスの設定
現時点ではサービスポイントゲートウェイは有効ですが、利用出来る接続先が無い状態ですので、サービスポイントゲートウェイの「編集」から設定していきます。

マウント先は石狩第一サイトのオブジェクトストレージですので、オブジェクトストレージの「s3.isk01.sakurastorage.jp」を選択し、「変更」で反映します。

変更後、サービスポイントゲートウェイの画面上「接続先マネージドサービス」に反映しているはずです。

サーバーのDNS設定を変更
更に、サーバー側でも設定を進めます。
サーバーのDNSを、先に設定したサービスポイントゲートウェイのIPアドレス「192.168.0.10」に変更します。
これで、オブジェクトストレージのFQDNがローカルIPアドレスとして応答する様になります。
# cat /etc/resolv.conf
# Generated by NetworkManager
search uozu
nameserver 133.242.0.3
nameserver 133.242.0.4# dig s3.isk01.sakurastorage.jp
; <<>> DiG 9.18.33 <<>> s3.isk01.sakurastorage.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35036
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;s3.isk01.sakurastorage.jp. IN A
;; ANSWER SECTION:
s3.isk01.sakurastorage.jp. 2540 IN A 203.0.113.205
;; Query time: 1 msec
;; SERVER: 133.242.0.3#53(133.242.0.3) (UDP)
;; WHEN: Sun Jul 26 17:39:23 JST 2026
;; MSG SIZE rcvd: 70# nmtui
# systemctl restart NetworkManager# cat /etc/resolv.conf
# Generated by NetworkManager
search uozu
nameserver 192.168.0.10# dig s3.isk01.sakurastorage.jp
; <<>> DiG 9.18.33 <<>> s3.isk01.sakurastorage.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44242
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;s3.isk01.sakurastorage.jp. IN A
;; ANSWER SECTION:
s3.isk01.sakurastorage.jp. 60 IN A 192.168.0.10
;; Query time: 0 msec
;; SERVER: 192.168.0.10#53(192.168.0.10) (UDP)
;; WHEN: Sun Jul 26 17:43:20 JST 2026
;; MSG SIZE rcvd: 70サービスポイントゲートウェイを利用してマウント
では早速再マウントしてアクセス状況を見てみます。
# umount /mnt/sakura/
# s3fs uozu /mnt/sakura/ -o allow_other,url=https://s3.isk01.sakurastorage.jp# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda2 20G 3.2G 16G 17% /
devtmpfs 832M 0 832M 0% /dev
tmpfs 853M 0 853M 0% /dev/shm
tmpfs 342M 4.8M 337M 2% /run
tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service
tmpfs 1.0M 0 1.0M 0% /run/credentials/getty@tty1.service
tmpfs 171M 4.0K 171M 1% /run/user/0
s3fs 64P 0 64P 0% /mnt/sakura# touch /mnt/sakura/test# ss -ntpH | grep s3fs
ESTAB 0 0 192.168.0.20:58366 203.0.113.205:443 users:(("s3fs",pid=2555,fd=8))
ESTAB 0 0 192.168.0.20:58344 203.0.113.205:443 users:(("s3fs",pid=2555,fd=6))おや?まだグローバルネットワークが利用されている様です。
どうやら、s3fs ではデフォルトではサブドメインがエンドポイントとして設定されますが、サービスポイントゲートウェイを経由しても、サブドメインはグローバルIPで応答がある様でした。
# dig uozu.s3.isk01.sakurastorage.jp
; <<>> DiG 9.18.33 <<>> uozu-isk01.s3.isk01.sakurastorage.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52157
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;uozu-isk01.s3.isk01.sakurastorage.jp. IN A
;; ANSWER SECTION:
uozu-isk01.s3.isk01.sakurastorage.jp. 3600 IN A 203.0.113.205
;; Query time: 26 msec
;; SERVER: 192.168.0.10#53(192.168.0.10) (UDP)
;; WHEN: Sun Jul 26 17:50:03 JST 2026
;; MSG SIZE rcvd: 81s3fs は use_path_request_style を指定すると、バケット名をサブドメイン形式ではなく、パス形式でリクエストするようになるので、再マウントで指定して実施します。
# umount /mnt/sakura/
# s3fs uozu /mnt/sakura/ -o allow_other,url=https://s3.isk01.sakurastorage.jp -o use_path_request_style
# touch /mnt/sakura/test# ss -ntpH | grep s3fs
ESTAB 0 0 192.168.0.20:59084 192.168.0.10:443 users:(("s3fs",pid=2592,fd=15))
ESTAB 0 0 192.168.0.20:59048 192.168.0.10:443 users:(("s3fs",pid=2592,fd=8))
ESTAB 0 0 192.168.0.20:59064 192.168.0.10:443 users:(("s3fs",pid=2592,fd=10))
CLOSE-WAIT 1 0 192.168.0.20:60292 192.168.0.10:443 users:(("s3fs",pid=2592,fd=6))
ESTAB 0 0 192.168.0.20:59068 192.168.0.10:443 users:(("s3fs",pid=2592,fd=12))
ESTAB 0 0 192.168.0.20:59092 192.168.0.10:443 users:(("s3fs",pid=2592,fd=17))これでs3.isk01.sakurastorage.jp の名前解決結果を利用でき、サービスポイントゲートウェイ経由で通信できるようになります。
さいごに
今回は、さくらのクラウドのオブジェクトストレージを、サービスポイントゲートウェイ経由で s3fs マウントする手順を試してみました。
サービスポイントゲートウェイを利用することで、サーバーとオブジェクトストレージ間の通信をグローバルネットワーク経由ではなく、ローカル側の経路に寄せることができます。
ただし、s3fs のデフォルト設定では、バケット名をサブドメイン形式で扱うため、DNSをサービスポイントゲートウェイへ向けただけでは、意図した経路にならない場合があります。今回のように use_path_request_style を指定し、実際の通信先を ss コマンドなどで確認しておくと安心です。
オブジェクトストレージをサーバーへマウントして利用する場合は、単にマウント出来たかだけでなく、どの経路で通信しているかもあわせて確認しておきましょう。
最後までお読みいただき、ありがとうございます!