AWS VPC(AWS::EC2::VPC
)について記載します。
パブリックサブネット
とプライベートサブネット
にそれぞれインスタンスを作成して、パブリックなインスタンス経由でプライベートなインスタンスにSSH接続します。
パブリックサブネット
になりますNAPT
になります同じセキュリティグループに割り当てられているネットワークインターフェイス(および関連付けられているインスタンス)からのインバウンドトラフィックを許可します。 https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_SecurityGroups.html#DefaultSecurityGroup
NAT(Network Address Translation)はIPアドレスを変換する技術です。一般的には、プライベート IPアドレスをグローバルIPアドレスに変換する技術とされています。
NATには1つ大きな問題があります。
それはNATにはブロードバンドルータが保持しているグローバルIPアドレスの
数しか同時に接続が出来ないという事です。
LAN側に接続されている複数のPCを1つのグローバルIPアドレスに変換して、
インターネットにパケットを送信した場合、そのパケットの返信はすべて
ブロードバンドルータのグローバルIPアドレス宛に返ってきます。
この時にブロードバンドルータはNATテーブルを見ても、どのPCのアドレスに
置き換えればよいのかを判断することが出来ないわけです。
そんな問題を解決するために考え出されたのが、
NAPT(IPマスカレード)という機能です。
local
が設定されたルートを持つルートテーブルが自動で作成されますパブリックサブネット用のルートテーブル
を作成しますパブリックサブネッ用ルートテーブル
に関連付けますパブリックサブネット
と呼びますパブリックサブネット
にNATゲートウェイを作成しますプライベートサブネット用ルートテーブル
を作成しますプライベートサブネット用ルートテーブル
に関連付けますプライベートサブネット
にEC2インスタンス配置しますdefault
を指定しますdefault
を設定(プライベートサブネットのインスタンスに接続するため)※ NATゲートウェイはインターネットゲートウェイ作成後でなければ、作成に失敗する。
プライベートサブネットにSSHで接続するにはパブリックサブネットの踏み台サーバーを経由します。
前提としてpublic/private両方に同じ秘密鍵(/path/to/private/key`)でアクセスします可能でなければいけません。
ssh -oProxyCommand='ssh -W %h:%p public@example.com' private@192.168.xxx.xxx
~/.ssh/config
の例です。
# public
Host bastion
HostName example.com
IdentityFile /path/to/private/key
User public
# private
Host app
HostName 192.168.xxx.xxx
IdentityFile /path/to/private/key
User private
ProxyCommand ssh -W %h:%p bastion
NATゲートウェイを使用します。
NATゲートウェイはプライベートサブネット
からインターネットに接続するためにパブリックサブネット
に配置します。
プライベートサブネット
のインスタンスからはインターネットにアクセスできません(sudo yum update
なども実行できません)アクセス制御を担当するセキュリティグループ
とネットワークACL
の違いをまとめます。
セキュリティグループ
はインスタンスのアクセスを制御しますステートフル
ネットワークACL
はサブネットのアクセスを制御しますステートレス
同じセキュリティグループに属したインスタンスからの接続を許可します。
※ default
セキュリティグループはVPC単位。
IP v6用のNATゲートウェイ
です。
以下サービスは有料。
default
)セキュリティグループを適用しましたかdefault
)セキュリティグループを適用しましたか