孤立したサーバ
概要
まずはインターネットにつながっておらず、ネットワークスイッチにつながっているだけという構成を再現してみる。
つまるところ、自宅にサーバを買ってきて、LANケーブルとネットワークスイッチを1:1で配線し電源を入れただけ。といった状態を体験したい。
設定の独自解釈のER図
VPCはサブネットを複数持つ。
EC2はサブネットを指定する。
目標
どこからもつながらないサーバなので、どこからも操作できないはず。
以下手順
VPC
VPCは Virtual Private Cloudの略で、EC2はこれのうちのどこかに所属することになっている。
なので、VPCをまずは作るが、できるだけ何もないVPCを作る
できるだけ何もないVPCを作成
作成画面を出す
- VPCダッシュボードへ行く
- ダッシュボードからサービスを検索「VPC」
- 左のメニューから「お使いのVPC」
- 右上の「VPCを作成」ボタンを押す
パラメータ入力
作成するリソース
あえて「VPCのみ」
名前タグ
わかりにくいとツライのでとかにしておく
learning-{{年月日}}-{{名前}}
実例) learning-250417-kato
IPv4 CIDR ブロック
「IPv4 CIDRの手動入力」を選ぶ
IPv4 CIDR
10.0.0.0/16
とする
IPv6 CIDRブロック
ちょっといったんv6は考えないんで IPv6 CIDR ブロックなし
テナンシー
「デフォルト」
タグ
操作なし
作成
プレビューコードはオススメ
aws ec2 create-vpc --instance-tenancy "default" --cidr-block "10.0.0.0/16" --tag-specifications '{"resourceType":"vpc","tags":[{"key":"Name","value":"learning-20250417"}]}'
確認したら、「VPCを作成」ボタンを押す。
デフォルトだと 5VPC/regionなので、割とすぐ上限がくるので注意。
サブネットの作成
作成したVPCの中に、スイッチングハブを設置した感じで作成する。
サーバー(EC2)を作成する際、どのスイッチングハブに接続するかを指定するのが必須なので、ここで作っておかねばならない。
作成画面を出す
- VPCダッシュボードへ行く
- ダッシュボードからサービスを検索「VPC」
- 左のメニューから「サブネット」
- 右上の「サブネットを作成」ボタンを押す
パラメータ
VPC ID
先ほど作ったものを指定する。
例) learning-250417-kato
サブネットの設定
サブネット名
先ほどのに所属してるのがわかるようにしておく
例) learning-250417-subnet1
アベイラビリティーゾーン
ここでAZを指定できる。
「指定なし」だと、自動になるらしい。
いったん「指定なし」としておく
IPv4 VPC CIDR ブロック & IPv4 サブネット CIDR ブロック
VPC作成時に指定した 10.0.0.0/16
が表示されているが、これより狭いブロックを指定する必要がある。
10.0.0.0/16
(同じ値) とする
サブネットを作成
サブネットを作成ボタンを最後に押す
EC2
できるだけ何もないEC2を作成
作成画面を出す
- EC2ダッシュボードへ行く
- ダッシュボードからサービスを検索「EC2」
- 左のメニューから「インスタンス」
- 黄色の「インスタンスを起動」ボタンを押す
パラメータ入力
名前とタグ
learning-ec2-{{日付}}
とでもしておく
例) learning-ec2-25-417
アプリケーションおよびOSイメージ
デフォルトの「Amazon Linux 2023 AMI」でOK
アーキテクチャなどなどもそのまま。
インスタンスタイプ
デフォルトの t2.micro
でOK。
キーペア(ログイン)
「キーペアなしで続行(推奨されません)」を選択してもいいが、「新しいキーペアの作成」で作成&ダウンロードしておいてもよい。
(どうせログインできないが、キーを設定してあってもログインできないというのを体験できる)
ネットワーク設定
右の「編集」ボタンをクリックして設定する。以下、クリックすることででてくるメニューにおいて操作する。
VPC
ここでさっき作成したVPCを選択する。
例) learning-20250417
サブネット
さきほど作成したものが入っていることを確認する
learning-250417-subnet1
となっているはず
パブリックIPの自動割り当て
インターネットにつながってない孤立したものを作ってみたいので、ここでは「無効化」を選択
ファイアウォール (セキュリティグループ)
これはL4で指定できる。どこからもつながらない予定だが、一応「どこからでもsshはできる」という設定にしておく。(= デフォルト)
セキュリティグループ名
learning-launch-wizard-{?}
とする
説明
デフォルトでOK
インバウンドセキュリティグループのルール
デフォルトでOK
高度なネットワーク設定
とりあえずここでは開かない。もしかしたらここで厳密に指定できるのかも。
ストレージを設定
デフォルトでよい。
高度な詳細
開かない
概要
インスタンス数は1でよい。他、上で入力したパラメータが表示されていることを確認する。
作成
「プレビューコード」を押してコマンドをみておくとよい
aws ec2 create-security-group --group-name "launch-wizard-5" --description "launch-wizard-5 created 2025-04-22T08:37:55.027Z" --vpc-id "vpc-0xxxxxxxx"
aws ec2 authorize-security-group-ingress --group-id "sg-preview-1" --ip-permissions '{"IpProtocol":"tcp","FromPort":22,"ToPort":22,"IpRanges":[{"CidrIp":"0.0.0.0/0"}]}'
aws ec2 run-instances --image-id "ami-0e449927258d45bc4" --instance-type "t2.micro" --block-device-mappings '{"DeviceName":"/dev/xvda","Ebs":{"Encrypted":false,"DeleteOnTermination":true,"Iops":3000,"SnapshotId":"snap-0c458689b862e29ba","VolumeSize":8,"VolumeType":"gp3","Throughput":125}}' --network-interfaces '{"SubnetId":"subnet-0e97da846f5d737ed","AssociatePublicIpAddress":false,"DeviceIndex":0,"Groups":["sg-preview-1"]}' --credit-specification '{"CpuCredits":"standard"}' --tag-specifications '{"ResourceType":"instance","Tags":[{"Key":"Name","Value":"learning-ec2-25-417"}]}' --metadata-options '{"HttpEndpoint":"enabled","HttpPutResponseHopLimit":2,"HttpTokens":"required"}' --private-dns-name-options '{"HostnameType":"ip-name","EnableResourceNameDnsARecord":false,"EnableResourceNameDnsAAAARecord":false}' --count "1"
「インスタンスを起動」ボタンを押して作成
確認
- EC2ダッシュボードへ行く
- ダッシュボードからサービスを検索「EC2」
- 左のメニューから「インスタンス」
-
learning-ec2-{{日付}}
を選択する
プライベート IPv4アドレスあれど、パブリックIPv4 DNSやElastic IPアドレスが空っぽなのを確認できる。
これはつまりどこにもつながってないということ、、、なはず。
「接続」ボタンをクリックして、接続を試みる。
『EC2 Instance Connect』 タブ
以下のような警告がでて、接続できない。
パブリック IPv4 または IPv6 アドレスが割り当てられていません
パブリック IPv4 または IPv6 アドレスがない場合は、EC2 Instance Connect を使用できません。あるいは、次を使用して接続を試みることができます。 EC2 Instance Connect エンドポイント 。
と
インスタンスはパブリックサブネットにありません
関連付けられたサブネット subnet-0xxxxxd (learning-250417-subnet1) はパブリックサブネットではありません。
EC2 Instance Connect を使用するには、インスタンスがパブリックサブネット内にある必要があります。 サブネットをパブリックサブネットにするには、サブネットルートテーブル内のルートをインターネットゲートウェイに追加します。
『セッションマネージャー』タブ
これはそもそも設定してないのでどうにもならない。
『SSH クライアント』タブ
キーペアが設定されていなければ、SSH経由では接続できません
と表記されている。
インスタンスIDとプライベートIP アドレス( 10.0.185.242
など)で接続方法の手順が記載されているが、VPC内のこのアドレスに接続する方法はない。
『EC2 シリアルコンソール』タブ
これがサポートされてれば、無理矢理みることはできたかもしれないが、今回のEC2タイプは対応していないので用いることはできない。