0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プライベートサブネットで`dnf install`が失敗する理由と、S3 VPC Gateway Endpointでの解決

0
Posted at

背景

パブリックサブネット(APサーバ)とプライベートサブネット(DBサーバ)に分離した2層構成をAWSコンソールで手動構築するハンズオンをやりました。プライベートサブネットに置いたDBサーバでパッケージインストールが失敗するという、地味だけど本質的な問題に対処する内容です。

1. プライベートサブネットはインターネットへの経路を持たない

パブリックサブネット: ルートテーブルに 0.0.0.0/0 → IGW のルートあり
プライベートサブネット: インターネット向けルートを意図的に追加しない

DBサーバをインターネットから完全に隔離するため、プライベートサブネットのルートテーブルにはインターネットゲートウェイへのルートを追加しません。この結果、DBサーバは外部との通信が一切できない状態になります。

2. その代償としてdnf installが失敗する

Amazon Linux 2023のパッケージリポジトリは実はS3上にホストされています。プライベートサブネットのEC2はインターネットに出られないため、UserDataでのdnf install -y mariadb105-serverが失敗し、DBサーバにMariaDBがインストールされないという事態が起こります。

3. S3 VPC Gateway Endpointで解決する

サービス: com.amazonaws.ap-northeast-1.s3(タイプ: Gateway)
ルートテーブル: プライベートルートテーブルにチェック

S3向けだけインターネットを経由せずアクセスできるGateway Endpointを作成し、プライベートルートテーブルに紐付けます。作成後にルートテーブルの「ルート」タブを確認すると、S3向けのルートが自動追加されていることが分かります。この設定だけで、プライベートサブネットのままパッケージインストールが可能になります。Gateway Endpointは無料という点も実務で採用しやすいポイントです。

4. APサーバを踏み台にしてプライベートサブネットのDBサーバへSSH接続する

# ローカルPCからAPサーバへキーペアをコピー
scp -i key.pem key.pem ec2-user@(APパブリックIP):~/.ssh/

# APサーバ上でパーミッション設定
chmod 400 ~/.ssh/key.pem

# APサーバからDBサーバへSSH接続
ssh -i ~/.ssh/key.pem ec2-user@(DBプライベートIP)

プライベートIPしか持たないDBサーバには直接SSH接続できません。パブリックサブネットにあるAPサーバを経由地点(踏み台/Bastion)として使い、まずAPサーバにキーペアをコピーしてから、APサーバ内から改めてDBサーバへSSH接続する、という2段階の手順になります。

5. DBサーバSGはAPサーバSGへの参照で守る

DBサーバSG インバウンド:
  SSH(22)   ソース: my-ap-sg(SG参照)
  MySQL(3306) ソース: my-ap-sg(SG参照)

DBサーバのSGは、SSH・MySQLともにソースをIPアドレスではなくmy-ap-sg(APサーバのSG)で指定します。これにより「APサーバに割り当てられたSGを持つインスタンスからの通信のみ」を許可でき、DBサーバへの経路をAPサーバ経由に限定できます。

まとめ

プライベートサブネットの「インターネットに出られない」という制約が、パッケージインストールの失敗という具体的な形で現れる点と、S3 VPC Gateway Endpointによる無料での解決策がこのハンズオンの核心でした。踏み台SSH接続とSG参照の組み合わせは、実際のAWS本番環境でも標準的なDBサーバ保護パターンです。

→ AWSコンソールでVPC設計からAP+DB 2層構成を構築する手順(ブログ)

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?