概要
- SAAの勉強をしていたが、知識ばかりで手を動かしてないなと思ったため実際にVPCとEC2を作成して、EC2からインターネットへの接続を行ってみる
やることとゴール
- VPCを作成
- 作成したVPC内にパブリックサブネットとプライベートサブネットを作成
- インターネットGWとNATゲートウェイをアタッチしルートテーブルを作成
- パブリックサブネット内とプライベートサブネット内それぞれに1台ずつEC2を作成
- それぞれのEC2からインターネットへ接続(pingが通る)できることを目標とする
構成図
- 下記の構成となるよう進めていく
VPC作成
- 新たにVPCを1つ作成する
- 同時にパブリックサブネットとプライベートサブネット、インターネットGW、NATゲートウェイも作成しVPCへアタッチする
- それぞれのサブネットのルートテーブルを作成する
手順
- IAMでマネジメントコンソールへログイン
- VPCを選択
- VPCを作成を選択
- VPCの設定は下記の通り
項目 | 値 |
---|---|
作成するリソース | VPCなど |
名前タグの自動生成 | 自動生成 |
IPv4 CIDRブロック | 10.0.0.0/16 |
IPv4 CIDRブロック | なし |
テナンシー | デフォルト |
アベイラビリティゾーンの数 | 1 |
パブリックサブネットの数 | 1 |
プライベートサブネットの数 | 1 |
NATゲートウェイ | 1 AZ内 |
VPCエンドポイント | S3ゲートウェイ (これはなしでもよかったかも) |
DNSオプション | どちらもチェック |
- 以下、参考としてキャプチャ
- こんな感じでプレビュー表示もされる
- VPCを作成ボタンを押すと作成が始まり、下記の画面になれば完了
- VPCダッシュボードはこんな感じ
- パブリックサブネット
- プライベートサブネット
- インターネットGW
EC2作成
パブリックサブネットに設置するインスタンス
- インスタンスを起動を選択
- 下記の設定でインスタンスを作成
項目 | 値 |
---|---|
名前 | yamashun-server1-pub |
AMI | Ubuntu Server 22.04 LTS(x86) |
インスタンスタイプ | t2.micro |
キーペア | RSA、pem |
VPC | 上記で作成したVPC |
サブネット | 上記で作成したパブリックサブネット |
パブリックIPの自動割り当て | 有効化 |
セキュリティグループ | 新規作成 (タイプ:ssh、ソースタイプ:自分のIP) |
ストレージ | 8GiB、gp3 |
- 以下、参考としてキャプチャ
- 作成ボタンを押すとインスタンスが作成される
- 起動していることを確認
パブリックインスタンスへSSH
- pemファイルを置いているフォルダに移動し権限を変更
(これをやらないとSSHするときに権限が緩すぎるとエラーが出る)
ローカル
$ chmod 400 "yamashun-server1.pem"
- 権限変更が完了したらいざSSH
- ちなみに今回はAMIにUbuntuを選択しているためユーザー名を
Ubuntu
にしているが、AMIがAmazon-Linuxの場合はec2-user
になる
ローカル
$ ssh -i "yamashun-server1.pem" ubuntu@54.199.8.98
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1015-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Tue Nov 12 15:12:55 UTC 2024
~中略~
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@ip-10-0-3-1:~$
- 無事にインスタンスへ接続できた
- インターネットへの疎通確認のためwww.google.comにpingを飛ばしてみる
EC2(pub)
$ ping www.google.com
PING www.google.com (142.250.199.100) 56(84) bytes of data.
64 bytes from nrt13s52-in-f4.1e100.net (142.250.199.100): icmp_seq=1 ttl=58 time=2.31 ms
64 bytes from nrt13s52-in-f4.1e100.net (142.250.199.100): icmp_seq=2 ttl=58 time=2.24 ms
64 bytes from nrt13s52-in-f4.1e100.net (142.250.199.100): icmp_seq=3 ttl=58 time=2.47 ms
64 bytes from nrt13s52-in-f4.1e100.net (142.250.199.100): icmp_seq=4 ttl=58 time=2.80 ms
--- www.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 2.235/2.452/2.798/0.216 ms
- 無事にインターネットへの疎通確認ができたためいったんログアウト
EC2(pub)
$ exit
プライベートサブネットに設置するインスタンス
- 基本的にパブリックサブネットに設置したインスタンスと同じ
- 変更点は下記
項目 | 値 |
---|---|
名前 | yamashun-server1-pri |
サブネット | 上記で作成したプライベートサブネット |
パブリックIPの自動割り当て | 無効化 |
セキュリティグループ(ソース) ※ | Anywhere-IPv4 |
※後ほど変更するので作成時はいったん既存のセキュリティグループにしてしまってもOK
- 作成ボタンを押すとインスタンスが作成される
- 合計2台のインスタンスが動いていることを確認
プライベートインスタンスにSSH
- プライベートインスタンスにはパブリックIPがないため、パブリックインスタンスを踏み台にしてSSHする
- まずは、キーファイルである
yamashun-server1.pem
をパブリックインスタンスの./tmp
ディレクトリにコピーする- 先にインスタンス側で
tmp
ディレクトリを作成しておくといいかも -
scp
するときにPermission denied
が何度か出て躓いたので、インスタンス側のtmp
ディレクトリの権限を一時的に上げておくかユーザーを変更するかなどしておくといいかも。。。
- 先にインスタンス側で
ローカル
$ scp -i "yamashun-server1.pem" yamashun-server1.pem ubuntu@54.95.10.191:./tmp
yamashun-server1.pem 100% 1674 252.4KB/s 00:00
- パブリックインスタンスに再度接続すると、無事に
./tmp
ディレクトリにキーファイルがコピーされていることを確認できた
EC2(pub)
$ ls ./tmp/
yamashun-server1.pem
- 次にプライベートインスタンスがパブリックインスタンスからのSSHを許可するためにセキュリティグループを変更する
- ソースをAnywhere-IPv4(0.0.0.0)に変更
- 準備が整ったためいざSSH
- まずはパブリックインスタンスへ接続
ローカル
$ ssh -i "yamashun-server1.pem" ubuntu@54.95.10.191
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1015-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
~中略~
Last login: Wed Nov 13 14:23:46 2024 from 60.147.206.215
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@ip-10-0-3-1:~$
- 次にパブリックインスタンスの
./tmp
ディレクトリへ移動し、そこからプライベートインスタンスへSSHすると無事に接続することができた
EC2(pub)
$ cd tmp/
$ ssh -i "yamashun-server1.pem" ubuntu@10.0.143.9
The authenticity of host '10.0.143.9 (10.0.143.9)' can't be established.
ED25519 key fingerprint is SHA256:Pv700B6Tj3iYVVQXrmvcnrRFqiSJlZj59RPJRAmUtck.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.143.9' (ED25519) to the list of known hosts.
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1015-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Wed Nov 13 14:40:50 UTC 2024
System load: 0.0 Processes: 101
Usage of /: 23.1% of 7.57GB Users logged in: 0
Memory usage: 20% IPv4 address for eth0: 10.0.143.9
Swap usage: 0%
~中略~
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@ip-10-0-143-9:~$
- 無事にプライベートインスタンスへ入れたので、インターネットへの疎通確認も行う
- NATゲートウェイがアタッチされているためプライベートインスタンスからもインターネットへの接続は可能なはず
- pingを飛ばしてみる
EC2(pri)
$ ping www.google.com
PING www.google.com (172.217.26.228) 56(84) bytes of data.
64 bytes from nrt12s51-in-f4.1e100.net (172.217.26.228): icmp_seq=1 ttl=116 time=1.74 ms
64 bytes from bom05s09-in-f4.1e100.net (172.217.26.228): icmp_seq=2 ttl=116 time=1.42 ms
64 bytes from bom05s09-in-f4.1e100.net (172.217.26.228): icmp_seq=3 ttl=116 time=2.16 ms
64 bytes from nrt12s51-in-f4.1e100.net (172.217.26.228): icmp_seq=4 ttl=116 time=1.61 ms
--- www.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 1.419/1.730/2.161/0.272 ms
- 無事に接続できたことを確認
- これで、VPCを作成してEC2からインターネットへ接続可能な環境の構築が完了した
まとめ
- SAAを勉強している割に全然ハンズオンしたことがなく頭でっかちになっていたが、VPCの作成を行うことで解像度は間違いなく上がったと感じる
(EC2は以前何度か作ったことはあった) - この調子で色々なサービスを触っていきたい
- 次はLambdaかコンテナあたりかなぁ
参考にしたサイト