5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS Public-Private構築の基礎訓練

Last updated at Posted at 2020-03-11

#急遽構築したAWSシステムのせいで、俺の体はボロボロだ!
AWS提案時に、社内やお客様への説明用にまとめたページが欲しかったので執筆。

#これ作ってもいいかな?
1.JPG
おためしで作ったので、実用性があるかは置いておいて。
EC2-WEBにコンテンツ本体があり、Private Subnetに配置。route tableはNAT Gatewayを指定。
EC2-bationはSecurity groupでソース元IPを指定して、社内からしかSSHが出来ないように設定。
 route tableはInternet gatewayを指定するので、Public Subnet1に配置。
NAT GatewayはPublic Subnet2に配置。
・**Application Load Balancer(以下ALB)**は、Availability zone(以下AZ)aのPublic Subnet1と
 AZ-dのPublic Subnet2に跨り、EC2-WEBが所属しているターゲットグループを持つ。

#クラスBか、面白い。
何が面白いのか分からない
適当にVPCとインターネットゲートウェイ(IGW)を作る。
2.JPG
4.JPG
###ここまでの図
3.JPG

#3!
適当にサブネットを3つ作る。
5.JPG
ルートテーブルも適当に3つ作る。
7.JPG
その後、ルートの編集でPublic Subnet1とPublic Subnet2のルートにターゲットをIGWで指定してデフォルトゲートウェイを追加する。
8.JPG
ルートテーブルのルートにIGWがターゲットで指定されていないサブネット=Private Subnet
IGWがルートについてるのにPrivate Subnetとか、Private Subnetって書いてながら直接IGWを抜けるような図は間違っているので咎めていく。
###ここまでの図
9.JPG
#その踏み台を利用されないようにしろ
適当に踏み台(EC2-bation)とコンテンツ(EC2-WEB)のインスタンスを作成する。

踏み台インスタンスの方は、限られたIPからしか入られないようにセキュリティグループを設定する。
プロトコルもSSHのみに。
12.JPG
EC2-WEBの方は、EC2-bationからしかSSHが出来ないようにセキュリティグループを設定する。
13.JPG
無事入れることを確認。
14.JPG
###ここまでの図
11.JPG
#無通信 俺のホストに 無通信
堅牢な構成のAWSが出来て喜んだのも束の間、このままだとEC2-WEBはPINGもyum updateも出来ない悲しいインスタンスとなる。
15.JPG
次項では、インターネットから誰かに疎通はされたくないけど、インターネットへ一方的に疎通はしたいという恋する乙女のような設定をしていく。
#見たか!?NATゲートウェイだ!!
適当にNATゲートウェイを作る。
これはVPCサービスの一つで、AWSフルマネージドのNATサービス。
保守とか冗長性も全部AWSが担保しているので便利。
16.JPG
Private Subnetのルートのデフォルトゲートウェイに、NATゲートウェイをターゲットする。
17.JPG
これでEC2-WEBからNATゲートウェイを介して一方的にインターネットへ疎通ができる。
PINGも飛ばし放題。(良い子は-c5を入れようね)
image.png
###ここまでの図
image.png
#このNATなら、セッションは張れないな!
そう、このNATゲートウェイだけだとインターネットには出れるけれども、
インターネットからEC2-WEBへアクセスすることができない。
(NATに割り振られているEIPにアクセスしても"ERR_CONNECTION_TIMED_OUT"と返される)

普通はEC2-WEBにあたるインスタンスにグローバルIPを付けてあげれば済む話なんだけど、
Private Subnetに配置したいという要望があった場合、Elastic Load Balancingを使う。
※今回はHTTPしかしないので、ALBを選択。

まず、ターゲットグループを適当に作る。
18.JPG
適当にEC2-WEBをターゲットにする。
19.JPG

適当にALBを作る。
Private Subnetを指定すると「IGW付いてないよ?大丈夫?」と聞いてくるが「うるせえ!!!いこう!!!(ドン」で進む。
21.JPG
セキュリティグループはとりあえずどこからでもHTTPが受け取れるようにする。
20.JPG
ターゲットグループは前述で作成したものを指定。

最後に、EC2-WEBのセキュリティグループにHTTPをALBのセキュリティグループからのみ許可するとしてあげれば完成。
23.JPG

とりあえずALBのDNS直叩きすると、EC2-WEBで作成したコンテンツが表示されるはず。
image.png

###完成図
1.JPG

#やはりそういうことか!
これでEC2-WEBからインターネットへ抜ける場合は、[EC2-WEB]→[NAT]→[IGW]という経路、
外部からインターネットでEC2-WEBへアクセスする場合は、[IGW]→[ALB]→[EC2-WEB]、
という経路が確立された。

Private Subnetにインスタンスを配置することを要望された場合、どの経路のインターネット接続が必要かお客様にヒアリングすることが大事であることを再認識できた。

ちなみに、技術的にさらに詳しく書かれた記事は以下があります。

□【図解/AWS】インターネットGWとNAT-GWの違い〜各メリット、パブリックサブネットとは〜
https://milestone-of-se.nesuke.com/sv-advanced/aws/internet-nat-gateway/

上記記事を見たら、このqiita見る必要無かっただろうとか、時間の無駄やんけと思われる方が居るかもしれない。

君の時間を無駄にしたのは私の責任だ。だが私は謝らない。
その憤りを糧にして、必ずAWSを布教してくれると信じているからな。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?