VPCを学ぶ - EC2 Instance Connect エンドポイント

# EC2 Instance Connect エンドポイント

VPCを学ぶとはちょっと違うが「グローバルIPアドレスが付与されていないEC2に直接sshできない」となると、前回の実験のように、どれか1台はグローバルIPは付与して、そこから内部ネットワークを経由してsshするということになる。

1台もグローバルIPを割り当ててないネットワークももちろんあるだろう。そういう場合、EC2 Instance Connect エンドポイントを作成して接続するらしい。

これを作成してみて、接続し、前回の「グローバルIPアドレスが割り振られたEC2インスタンス」とどう違うのか確認してみる。

ちょっと時間はかかるが「EC2 Instance Connect エンドポイント」リソースを作成し、接続することができた。これの料金については無料らしい。

これを使って接続したマシンは相変わらずインターネットに出られるわけではない。
`ip neigh` したらたぶんこの「EC2 Instance Connect エンドポイント」であろうIP・MACアドレスも確認できた。

「グローバルIPアドレスが割り振られたEC2インスタンス」とどう違うのか確認してみたが、内側からは何も


# 手順

1. マネコントップの検索に「EC2」と入力して検索結果よりEC2ダッシュボードに入る
1. インスタンスをクリック
1. グローバルIPアドレスを割り当ててないほうのインスタンスを選択する
1. 「接続」ボタンを押す

## エンドポイントの作成

「EC2 Instance Connect」タブを選んで、「EC2 Instance Connect エンドポイントを使用して接続する」を選択する

「プライベートIPアドレス」がこのEC2インスタンスのアドレスが自動的に入力される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50220/b6b8752b-8ad7-44de-8cce-cb1802d2c9be.png)

「エンドポイントを選択」を押すと、作成のリンクがあるのでそれを選択して画面作成画面に遷移させる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50220/f61cc13e-084d-4cf2-8186-5d82ad202028.png)

このリソースは VPC メニューの「PrivateLink と Lattice」の「エンドポイント」に存在する。

### パラメータ

#### 名前タグ

`learning-ep-{日付}` で作成する
例) `learning-ep-20250525` 

#### タイプ

デフォルトで「AWSのサービス」となっているが、「EC2 インスタンス接続エンドポイント」を選択する。

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

本EC2が所属しているVPCを選択する

例) `learning-20250506`

#### セキュリティグループ

先日作ったセキュリティグループを選択する。
たぶんsshができればよさそう。

例) `learning-sg-20250505`


#### サブネット

本EC2が所属しているサブネットを選択する

例) `learning-subnet-20250506`

#### 作成

「エンドポイントの作成」ボタンを押す。

# エンドポイント画面

押すとエンドポイント画面に移動する。今作ったエンドポイントのステータスは「保留中」となっているので、構築完了を待つ。

EC2の接続画面には15分ほどかかるとある。

# 接続

先ほどのタブに戻るか、以下の操作を行う。

1. マネコントップの検索に「EC2」と入力して検索結果よりEC2ダッシュボードに入る
1. インスタンスをクリック
1. グローバルIPアドレスを割り当ててないほうのインスタンスを選択する
1. 「接続」ボタンを押す
1. 「EC2 Instance Connect」タブを選ぶ
1. 「EC2 Instance Connect エンドポイントを使用して接続する」を選択する

## パラメータ

### プライベートIPアドレス

「プライベートIPアドレス」がこのEC2インスタンスのアドレスが自動的に入力される。

### ユーザー名

`ec2-user`

### 最大トンネル時間

デフォルトの `3600` でOK

### 接続

「接続」を押す。新しいブラウザタブが開く

### `ip a`

NICが増えているわけではなさそう。

```
[ec2-user@ip-10-0-150-119 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enX0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc fq_codel state UP group default qlen 1000
    link/ether 06:31:1a:72:3a:e1 brd ff:ff:ff:ff:ff:ff
    altname eni-088b47196589351e5
    altname device-number-0.0
    inet 10.0.150.119/16 metric 512 brd 10.0.255.255 scope global dynamic enX0
       valid_lft 3292sec preferred_lft 3292sec
    inet6 fe80::431:1aff:fe72:3ae1/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
```

### `curl -4 -v checkip.amazonaws.com`

インターネットにつながるようになったわけではない。名前は引けるがつながらず（前と同じ）。

```
[ec2-user@ip-10-0-150-119 ~]$ curl -4 -v checkip.amazonaws.com
* Host checkip.amazonaws.com:80 was resolved.
* IPv6: (none)
* IPv4: 54.83.47.186, 54.165.101.8, 98.85.34.251, 34.192.218.136, 44.215.101.138, 52.201.98.187
*   Trying 54.83.47.186:80...
```

### `ip r`

まぁ特にルーティングは変わらず

```
[ec2-user@ip-10-0-150-119 ~]$ ip r
default via 10.0.0.1 dev enX0 proto dhcp src 10.0.150.119 metric 512 
10.0.0.0/16 dev enX0 proto kernel scope link src 10.0.150.119 metric 512 
10.0.0.1 dev enX0 proto dhcp scope link src 10.0.150.119 metric 512 
10.0.0.2 dev enX0 proto dhcp scope link src 10.0.150.119 metric 512 
```

### `ip neigh`

`10.0.77.91` こいつが踏み台か？本実験で作ったEC2は、このマシンが `10.0.150.119/16` で、グローバルIPアドレスがアタッチされたマシンは `10.0.105.191/16` なので、このIPアドレスは未知である。

```
[ec2-user@ip-10-0-150-119 ~]$ ip neigh
10.0.77.91 dev enX0 lladdr 06:68:96:ab:f1:15 REACHABLE 
10.0.0.1 dev enX0 lladdr 06:18:15:6d:2d:bd REACHABLE 
```