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)セキュリティグループを適用しましたか