VPCを学ぶ - グローバルIPを持たせたサーバ

# グローバルIPv4を持つサーバ

つながってないサーバだが、グローバルIPv4を持たせることができる。これはどうなるのだろうか？

作って試してみる。

サーバにモデムを接続してそのままインターネットにでるような構成となるのだろうか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50220/823dd515-e3a6-464e-9c88-dba0fd030f47.png)

## 結論から言うと

この予想は間違い。単にグローバルIPがAWSから貸出用に払い出されて、対象のEC2サーバのNICに設定されるだけで、特にインターネットからの接続やインターネットの接続設定が行われるものではない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50220/3d86e173-16ee-4c12-9452-5891101bc744.png)



# VPCの作成

前回のものをそのまま使い、作成しない


# サブネットの作成

前回のものをそのまま使い、作成しない

# EC2

## できるだけ何もないEC2を作成

### 作成画面を出す

1. EC2ダッシュボードへ行く
    1. ダッシュボードからサービスを検索「EC2」
1. 左のメニューから「インスタンス」
1. 黄色の「インスタンスを起動」ボタンを押す




### パラメータ入力

**名前とタグ**

`learning-ec2-{{日付}}` とでもしておく
例) `learning-ec2-25-424`

**アプリケーションおよびOSイメージ**

デフォルトの「Amazon Linux 2023 AMI」でOK

アーキテクチャなどなどもそのまま。

**インスタンスタイプ**

デフォルトの `t2.micro` でOK。

**キーペア(ログイン)**

「新しいキーペアの作成」で作成する、

名前は `learning-vpc-keypair-{{日付}}` とでもしておく。
例) `learning-vpc-keypair-25-424`

今時はED25519だと思うが、自分のSSHクライアントが対応しているものを選んでおくこと。

とりま、今時のMacなら ED25519 & pem でOK。作成するとダウンロードになる。

ダウンロードしたら `chmod og-r` などでアクセス権を良い感じに設定する。

```
[pharaohkj] $ chmod og-r ~/Downloads/learning-vpc-keypair-25-424.pem

[pharaohkj] $ ls -l ~/Downloads/learning-vpc-keypair-25-424.pem
-rw-------@ 1 pharaohkj  staff  387  4 24 18:29 /Users/pharaohkj/Downloads/learning-vpc-keypair-25-424.pem
```


**ネットワーク設定**

右の「編集」ボタンをクリックして設定する。以下、クリックすることででてくるメニューにおいて操作する。

**VPC**

ここでさっき作成したVPCを選択する。
例) `learning-20250417`

**サブネット**

さきほど作成したものが入っていることを確認する

`learning-250417-subnet1` となっているはず

**パブリックIPの自動割り当て**

**『有効化』** を設定する


**ファイアウォール (セキュリティグループ)**

「どこからでもsshはできる」という設定にしておく。(= デフォルト)

**セキュリティグループ名**

`learning-launch-wizard-{?}` として前回作成したものを指定する。


**ストレージを設定**

デフォルトでよい。

**高度な詳細**

開かない

**概要**

インスタンス数は1でよい。他、上で入力したパラメータが表示されていることを確認する。

### 作成

コードを確認して、「インスタンスを起動」ボタンを押す。

```
aws ec2 run-instances --image-id "ami-0e449927258d45bc4" --instance-type "t2.micro" --key-name "learning-vpc-keypair-25-424" --network-interfaces '{"SubnetId":"subnet-0e97da846f5d737ed","AssociatePublicIpAddress":true,"DeviceIndex":0,"Groups":["sg-04fd8e230ab770053"]}' --credit-specification '{"CpuCredits":"standard"}' --tag-specifications '{"ResourceType":"instance","Tags":[{"Key":"Name","Value":"learning-ec2-25-424"}]}' --metadata-options '{"HttpEndpoint":"enabled","HttpPutResponseHopLimit":2,"HttpTokens":"required"}' --private-dns-name-options '{"HostnameType":"ip-name","EnableResourceNameDnsARecord":false,"EnableResourceNameDnsAAAARecord":false}' --count "1" 
```

# 確認

1. EC2ダッシュボードへ行く
    1. ダッシュボードからサービスを検索「EC2」
1. 左のメニューから「インスタンス」
1. `learning-ec2-{{日付}}` を選択する

ネットワーキングタブを選択すると、「パブリックIPv4アドレス」が割り当てられていることが確認できる。

最初に予想した図のようにもしもこれをつかってインターネット側からアクセスできるようにネットワークが設定されているのなら SSH がつながるはずである。

鍵は先ほどダウンロードしたファイル

詳細は `-v` で確認しながら、割り当てられたグローバルIPを指定して `ec2-user@54.242.xxx.yyy` で接続を試みる

```
[pharaohkj] $ ssh -v -i ~/Downloads/learning-vpc-keypair-25-424.pem ec2-user@54.242.xxx.yyy
OpenSSH_9.9p1, LibreSSL 3.3.6
debug1: Reading configuration data /Users/pharaohkj/.ssh/config
debug1: Reading configuration data /Users/pharaohkj/.orbstack/ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files
debug1: /etc/ssh/ssh_config line 54: Applying options for *
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to 54.242.xxx.yyy [54.242.136.106] port 22.
debug1: connect to address 54.242.xxx.yyy port 22: Operation timed out
ssh: connect to host 54.242.xxx.yyy port 22: Operation timed out

```

つながらない。どうやら接続要のIPv4アドレスは割り当てられているも、インターネット側からは接続できないようになっているようだ。

詳細をec2インスタンスに入って確認したいが、現状はそもそもインターネットから孤立した島なのでできない。