ネットワーク
VPCの作成
IPv4CIDRブロック 192.168.0.0/16
IPv6CIDRブロック Amazon提供
サブネットの作成
IPv4CIDRブロック 192.168.1.0/24
IPv6CIDRブロック カスタム 01
EC2インスタンスの作成
作ったVPCネットワーク、使うサブネットを指定
自動割当パブリック、IPv6自動の有効化
タグにNameを指定
セキュリティグループ SSHの許可 マイIP(現在の自分のグローバルIP)
キーペア作成
SSH接続
VPCのサブネットからインターネットに出れるようにゲートウェイを作成
VPC - インターネットゲートウェイ作成 - VPCにアタッチ
サブネットにインターネット用のルートを作成
サブネット - ルート - ルートの編集 - 0.0.0.0/0(どこにもマッチしない)インターネットゲートウェイを選択
キーペアを使って接続
ssh -i "udemy-vpc-aws.pem" ec2-user@175.41.214.184
デフォルトVPC
インスタンス作成時に明示的に選ばなかった場合に作成される
インターネットゲートウェイも自動で作られる
セキュリティ
セキュリティグループ
インスタンスへのインバウンド(入ってくる)アウトバウンド(出ていく)を制御
Webなら80,443のインバウンドを許可
基本はアウトバウンドはすべて許可、インバウンドのほうを設定する
ステートフル=出ていった通信の戻りは許可される(インバウンド許可しなくてもアウトバウンドが許可されていれば)
Webが見れるようにしてみる
which amazon-linux-extras
sudo amazon-linux-extras list
sudo amazon-linux-extras install -y nginx1
sudo systemctl start nginx
sudo systemctl status nginx
EC2のパブリックIPにアクセスしてみる
VPC - セキュリティグループ - インバウンドのルールを編集 - HTTPでソース0.0.0.0/0を許可
ソースにセキュリティグループを指定した場合、そのグループに属するインスタンスからのアクセスを許可
ネットワークACL
インスタンスではなく、サブネットを出入りする通信を制御
こちらはステートレス=行きと戻りの通信も個別に指定する必要(インバウンドが許可でも、アウトバウンドが拒否であれば通信できない)
ルール番号の早いものから順に適用される、該当ない場合は拒否される
インバウンドのルールの編集 - 99 SSH DENY
パブリックIP
ElasticIP
EC2のパブリックIPは再起動で変わる。ElasticIPは予約しておけば同じIPを保持できる。別インスタンスへ付け替えも可能。
予約してるだけで使ってないと課金される。使えば一個まで無料。
ElasticIP - 割当て - 関連付け - インスタンスを選択 プライベートIPが一個しかない場合選ばなくてもいい
プライベートサブネット
プライベートサブネット
パブリックサブネット:Webサーバなどが動作し一般公開
プライベートサブネット:アプリなどが動作し一般非公開。同一VPC内からアクセス。インターネットゲートウェイに接続しない。メンテでネット接続する場合は別のゲートウェイを使う。
プライベートサブネットの作成
ipv4 192.168.2.0/24 ipv6 カスタム 02
既存のルートテーブルを使わず、新しく作成。関連付けの編集でプライベートサブネットを選択
インスタンスの作成
インスタンスを作成し、プライベートサブネットを選択
セキュリティグループで、ソースにパブリックのセキュリティグループを選択し、そこからのアクセスを許可する
パブリックサブネット経由でSSH接続
パブリックサーバを踏み台にSSH接続
175.41.214.184 -> 192.168.2.173
ssh -i "udemy-vpc-aws.pem" -oProxyCommand='ssh -i "udemy-vpc-aws.pem" -W %h:%p ec2-user@175.41.214.184' ec2-user@192.168.2.173
プライベートなのでそのままではインターネットに出られない
ping google.com
NATゲートウェイの設置(IPv4)
インターネットに出られるサブネットに紐付ける
プライベートからNATゲートウェイにルートする
NATゲートウェイの作成 - パブリックサブネットを選択、EIP割当て
プライベートサブネットのルートテーブル変更 - NATゲートウェイを選択、0.0.0.0/0
EgressOnlyインターネットゲートウェイ(IPv6)
ping 8.8.8.8
ping6 2001:4860:4860::8888
プライベートサーバにIPv6の割り当て
インスタンス - アクション - ネットワーキング - IPアドレス管理 - 新しいIPの割り当て(IPv6)- インスタンス再起動
EgressOnlyIGW - VPC選択
プライベートサーバのルート編集 - ::/0 egw選択
エンドポイント
他のAWSサービスと接続する際、インターネットに出ずにプライベートで接続する
S3へファイルをアップロードしてパブリック公開にする
プライベートサーバからダウンロードしてみる
wget http://~
エンドポイントの作成
プライベートのインターネットへのルート削除 - nat, egwを削除(確認のため)
エンドポイントの作成 - S3を選択、VPCを選択、プライベートルートを選択 - テーブルに新しいルートが追加される
エンドポイントサービス
他のAWSアカウントのサービスをエンドポイントとして利用できる。
PrivateLinkの料金や相手サービスへの申請が必要。
まとめ
EC2インスタンスはVPC、サブネットの中に作る
インスタンスにはセキュリティグループが紐付いていて通信を制御
ルートを通してセキュリティを許可する
VPCの中にサブネットを作る
ネットに出るにはインターネットゲートウェイをつくってVPCに関連付ける(サブネットでも許可)ルートにも追加
IPV6を使うにはEgress-Onlyインターネットゲートウェイをつくる
サブネットにはルートテーブルが紐付いている
サブネットにはネットワークACLが紐付いていて通信を制御
ネットにでるルートがないサブネットをプライベートサブネットという
インターネットゲートウェイがなくても踏み台を使えばSSH接続できる
プライベートサブネットから外に出るにはインターネットへのルートを持つサブネットにNATゲートウェイをつくって、ルートを通す
エンドポイントを使えばプライベートからAWSサービスに接続できる
VPCを作るときCIDRを決める必要がある
サブネットを作るときCIDRを決める必要がある
IPV6もある
CIDRの決め方がわかりません
参考
古いけど動作は最新環境で行いました。
Amazon Web Service マスターコース VPC編