AWS PrivateLinkを使ったNLBへの接続方法

目次

はじめに

AWSを利用する際、異なるVPC間での通信を安全に行う方法として、AWS PrivateLinkが有効です。特に、Network Load Balancer (NLB) の背後にあるEC2インスタンスに別のVPCからアクセスする場合、PrivateLinkを使用することで、インターネットやVPC Peeringを介さずにセキュアな接続を確立できます。

本記事では、AWS PrivateLinkを活用して、別VPCにあるNLBに接続する方法を解説します。


1. ALB vs NLB: PrivateLinkでどちらを使うべきか?

AWSでロードバランサを使う場合、主にApplication Load Balancer (ALB)Network Load Balancer (NLB) の2種類がありますが、PrivateLinkを使用する場合は NLBを選択するのが基本 です。

NLBを選択すべき理由

  1. PrivateLinkの対応
    • PrivateLinkはNLBを使用することでVPCエンドポイントを作成できます。ALBを直接PrivateLinkに適用することはできません。
  2. 低レイテンシー
    • NLBはTCP/UDPレベルのルーティングを行うため、ALBよりも高速です。
  3. クライアントのIPアドレス透過
    • NLBを使用すると、元のクライアントIPアドレスがそのまま保持されます。ALBでは X-Forwarded-For ヘッダーを使用しないと元のIPが分からなくなります。

ALBを使いたい場合

ALBを利用する場合は、NLBを経由してALBに転送する構成を取ることになります。

  • PrivateLink → NLB → ALB → EC2
  • ただし、PrivateLink経由でHTTP(S)リクエストを処理したい場合は、ALBの前にNLBを設置する必要があります。

2. AWS PrivateLinkを使ってNLBに接続する手順

① NLBを持つVPCでVPCエンドポイントサービスを作成

NLBが存在するVPCで、PrivateLinkを利用するための VPCエンドポイントサービス を作成します。

  1. AWSコンソールで「VPC」を開く
  2. 左メニューから「エンドポイントサービス」を選択
  3. 「エンドポイントサービスの作成」をクリック
  4. NLBを選択してエンドポイントサービスを作成
  5. サービス名 (com.amazonaws.vpce-svc-xxxxxxxxxxxxxxxxx) を確認

② 接続するVPCでインターフェイスエンドポイントを作成

別のVPCからNLBにアクセスするために、インターフェイスエンドポイント を作成します。

  1. 「VPC」→「エンドポイント」を開く
  2. 「エンドポイントの作成」をクリック
  3. サービス名に 作成したエンドポイントサービス (com.amazonaws.vpce-svc-xxxxxxxxxxxxxxxxx) を入力
  4. サブネットとセキュリティグループを適切に設定
  5. エンドポイントが作成されたら、DNS名 (vpce-xxxxxxxxxxxx-yyyyyyyy.vpce.amazonaws.com) を確認

③ DNSを使用してNLBにアクセス

作成したVPCエンドポイントのDNS名を使用して、NLB経由でEC2インスタンスにアクセスできます。

接続コマンド(例)

curl -v http://vpce-xxxxxxxxxxxx-yyyyyyyy.vpce.amazonaws.com

また、Route 53のプライベートホストゾーンを利用して、よりわかりやすいカスタムドメイン名を設定することも可能です。


3. トラブルシューティング

com.amazonaws.vpce-svc- のサービス名が表示されない

  • 原因: VPCエンドポイントサービスが正しく作成されていない
  • 解決策:
    • エンドポイントサービスが「承認なしで利用可能」になっているか確認
    • NLBのターゲットグループが正しく設定されているかチェック

elasticloadbalancing.ap-northeast-1.amazonaws.com でアクセスできない

  • 原因: これはAWS提供のELBサービス用DNS名であり、ユーザーが作成したNLB用ではない
  • 解決策:
    • aws ec2 describe-vpc-endpoint-services ではなく、エンドポイントサービスのページでサービス名を直接確認

❌ 接続できない(タイムアウト)

  • 原因: セキュリティグループやルーティング設定の問題
  • 解決策:
    • NLBのセキュリティグループにエンドポイントのVPC CIDRを許可
    • ターゲットグループのヘルスチェックを確認

まとめ

AWS PrivateLinkを利用して、異なるVPCからNLBを経由してEC2インスタンスにアクセスする方法 を解説しました。

要点

✅ PrivateLink経由での接続には NLBが必要
VPCエンドポイントサービス を作成し、他のVPCからの接続を許可
インターフェイスエンドポイントを作成し、専用のDNS名を利用
セキュリティグループやルーティングの適切な設定が必要

AWS PrivateLinkを活用すれば、異なるVPC間での通信をより安全に、かつシンプルに実現できます。適切に設定を行い、安全で高速な通信環境を構築しましょう!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です