前回書いた、EC2上に開発環境をたてる話の続き。
今回の結論
と書いたのだが、これは間違いで、「送信先」は0.0.0.0のままでよかった
経緯
さて、続きやるか、と思って最初のコマンドを叩いたときのことである。
$ sudo apt update Failed to fetch http://security.ubuntu.com/ubuntu/dists/focal-security/InRelease Cannot initiate the connection to security.ubuntu.com:80 .. ...
とエラーが帰ってきてしまった。
最初、/etc/apt/sources.list がいけないのかと思った。EC2のために特殊な設定が書いてあっていけないのかと。
しかしながら、ちゃんと調べると、ネットに繋がってないのでは?という説が浮上した。
pingしてみる
$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. ^C --- 8.8.8.8 ping statistics --- 33 packets transmitted, 0 received, 100% packet loss, time 32773ms
あー。繋がってないですね
自分のインスタンスがpublic subnet or private subnet どちらか、以下の記述を参考にする。
If a subnet is associated with a route table that has a route to an internet gateway, it's known as a public subnet. If a subnet is associated with a route table that does not have a route to an internet gateway, it's known as a private subnet
インスタンス→サブネット→ルートテーブルで見ると、igw は書いてある。ならばpublic subnetになってるはず
セキュリティグループの設定が行けないのかと思い、全てのインバウンドトラフィックを許可してみるが、解決しない。
ヘルプページを再びよく読むと、
Add a route to your subnet's route table that directs internet-bound traffic to the internet gateway.
とあったので、ルートテーブルで自分のIPからしか許可してなかったトラフィックを、全て許可するようにした。→ping成功
ということで、文字で書くよりも苦戦したが、解決。 過程でヘルプページを読み込んだりしたので、学びもあった。
学び
インターネットゲートウェイは、2つの目的を遂行する:
VPC内のインスタンスに対しての外からの通信を割り振ってあげるのもIGWの役割となる。
今回は、VPCに紐付いているルートテーブルで自分のIP以外の通信に対してルートを設定していなかったので、帰ってきた通信がIGWにたどり着けなかったということになる。
今の理解は以下のよう