この記事の対象者
AWSでの踏み台サーバーとは何かを知り、それがどんなメリットデメリットがあるかを知りたい方
接続方法にはどんな種類があって、その接続方法をざっくりと知りたい方
ここでは、OSは、MACを扱っていきます。
ローカル環境やインターネット環境から、直接プライベートサブネット内にあるEC2サーバーにアクセスするのではなく、パブリックサブネット内にあるEC2サーバー経由でプライベートサブネット内EC2サーバーにアクセスすることです。
一旦、パブリックサブネット内のEC2サーバーにアクセスするのがポイントですが、このサーバーのことを踏み台サーバーと言います。中継サーバーのことですね。
メリット | デメリット |
---|---|
直接インターネットにさらされないので、セキュアなアクセスにできる | 接続手順が複雑 |
アクセスが踏み台サーバー経由に限定されるので、プライベートサブネットのEC2サーバーの負荷が軽減できる | ログインユーザーが増えた場合に秘密鍵を管理するのが手間になる |
#プライベートサブネット内EC2への接続方法
①踏み台サーバー経由のEC2へのSSH接続
今回のメインテーマですね。以下に解説させていただきます。
②AWS System Manager Session Manegerを使用する
ここでは、扱いませんが、トレンドな技術なのでいずれは扱っていきたいですね。
CLIを使用して踏み台サーバーなしでダイレクトにプライベートEC2インスタンスにアクセスできます。
①vpcを作成
②サブネットを作成
③vpcにインターネットゲートウェイをアタッチ
④ルートテーブルの設定
⑤EC2インスタンスを設置
⑥NATゲートウェイをパブリックサブネットにアタッチ
⑦セキュリティーグループの設定
⑧プライベートサブネットEC2インスタンスへのログイン
・vpcを作成してその中に、プライベート・パブリックサブネットを作成します。インターネットゲートウェイをアタッチしてパブリックサブネットから外部への通信を通します。各サブネットにEC2インスタンスを設置します。ナットゲートウェイをパブリックサブネットに設置して、プライベートEC2インスタンスから外部への通信が通るようにします。
##VPCの作成
名前タグ:適当な名前
IPv4 CIDERブロック:10.0.0.0/21
・ここでIPアドレスの使用範囲を設定しています。「/21」で区切ることにより、10.0.0.0 から10.0.7.255の間の2,048個IPアドレスがこのvpc内で使用できるようにしています。CIDR 表記では /28~/16 がvpcの範囲になります。
・上記を例にして作成ボタンを押しましょう。
##サブネットの作成
・サブネットは、vpcのIPアドレスレンジのことです。vpcの中でさらに使用できるIPアドレス範囲を指定して、その論理的な空間に対して役割を持たせます。外部と通信する場合は、パブリックサブネットになり、そうでない場合は、結果としてプライベートサブネットと呼ばれます。パブリックサブネットにするためには、vpcにインターネットゲートウェイをアタッチする必要があります。
サブネットは、最大で200個作成できます。
まずは、パブリックサブネットから作成していきましょう。
・vpc→サブネット→サブネットを作成まで進みます
・vpc ID:今回作成したvpcを選択します
・アベイラビリティーゾーン:東京リージョンの1a
アベイラビリティーゾーンとは、1つまたは複数のデータセンターの集合体のことで、vpcが論理的な区分であるのに対して、アベイラビリティーゾーンは、物理的な区分になります。
・IPv4 CIDERブロック:10.0.0.0/24
サブネットのCIDERブロック範囲もvpcと同様/28~/16 となります。
1つのサブネットを作成するごとに、5つのIPアドレスを消費します。内訳は、ネットワークアドレスとブロードキャストアドレスでそれぞれ1つずつ、AWSが予約しているアドレスが3つです。
・サブネットの種類は、パブリックサブネット、プライベートサブネットの他にナットサブネット、トランジットサブネットなどがありますが、主にこの2つだけ押さえておけば問題ないと思います。
##vpcにインターネットゲートウェイをアタッチ
・インターネットゲートウェイの作成をクリック
・名前をつけて作成しましょう
・アクションタブの中の「vpcにアタッチ」
・今回作成したvpcを選択してアタッチ
##ルートテーブルの設定
ルートテーブルとは、サブネットの通信の経路を定めたルールのことです。今回のケースでは、サブネットからインターネットゲートウェイへの通信するルートテーブルを作成します。
・サブネット→作成したパブリックサブネットを選択→ルートテーブルタブをクリック
・ルート編集でこの画面に入ったら、「ルートを追加」をクリック
送信先:0.0.0.0/0
ターゲット:作成したインターネットゲートウェイ
このルールの追加により、サブネットからインターネットゲートウェイへ通信できるようになります。
##EC2インスタンスの設置
パブリックサブネット
作成したパブリックサブネットとプライベートサブネットにそれぞれEC2インスタンスを配置していきます。
・EC2画面に入り、「インスタンスを起動」をクリック
・無料枠が使える方は、無料枠用のAmazon Linuxを選択していきます。
・ネットワーク:作成したvpc
・サブネット:作成したパブリックサブネット
・自動割り当てパブリックIP:有効
・タグの作成では、Nameキーに、分かりやすい名前を値に入力しておきます。
タイプ:SSH
ソース:カスタム
・次に進み、起動をクリック。EC2インスタンスにアクセスするためのキーペアを新規で作成してダウンロードするか、既に作成してある場合は、既存のキーペアを使用するかをこの画面で選択していきます。今回の例では、作成済みのため、既存のキーペアを選択。インスタンスの作成をクリックしましょう。
・インスタンスの状態が実行中になったことを確認
次に作成したEC2インスタンスへのアクセスは、パブリックIPアドレスを経由することになりますが、インスタンスが停止してしまうと、パブリックIPアドレスが変わってしまい、固定してアクセスしたい人にとって使い勝手がいいとは言えません。
そこで、外部アクセス用のアドレスを固定するために、ElasticIPをアタッチします。
ElasticIPは、EC2インスタンスにアタッチされていて、かつそのインスタンスが実行中であれば、無料となりますが、追加した場合やアタッチされていない場合は、単位時間で使用料金が請求されるので注意しましょう。
・左メニューのElastic IPから「Elastic IPアドレスを割り当てる」をクリック
ネットワークボーダーグループは、EC2インスタンスを作成したときのアベイラビリティーゾーンを選択
・作成できたら、アクション→Elastic IPアドレスの関連付け と進んでいきます
作成したEC2インスタンスを選択して、関連付けます。
プライベートサブネットへのEC2インスタンス設置
パブリックサブネットへのEC2設置との差異を説明していきます。
・パブリックサブネットへのEC2インスタンス設置と同様に、プライベートもEC2インスタンスを作成していきます。
ネットワーク:作成したvpc
サブネット:プライベートサブネット
自動割り当てパブリックIP:無効化
##パブリックサブネットへNATゲートウェイのアタッチ
NATゲートウェイとは、ネットワークアドレス変換サービスです。パブリックサブネットに設置し、多対1のアドレス変換を行います。プライベートサブネットからはインターネットにアクセスしたいけど、インターネットからプライベートサブネットにアクセスされたくない場合に使用します。
vpcから左メニューのNATゲートウェイ→NATゲートウェイの作成と進む
サブネット:作成したパブリックサブネット
接続タイプ:パブリック
ElasticIPの割り当てをクリックして、NATゲートウェイを作成します。
##セキュリティーグループの設定
EC2インスタンスにどの通信を許可するのか設定していきます。今回は、SSH接続で全てのIPアドレスからの通信を受け入れるという設定にしますが、本来ここでは、IPアドレスの範囲を指定したりして、セキュリティを高めます。作成したセキュリティーグループをEC2インスタンスにアタッチしていきます。
パブリックサブネット
・vpc→セキュリティーグループ→セキュリティーグループを作成
・作成したvpcを選択
・インバウンドルール
タイプ:SSH 今回は、0.0.0.0/0とします。
・説明オプション:区別できる名前をつけます。
上記で作成したセキュリティーグループをパブリックサブネットにアタッチしていきます。
・作成したEC2インスタンスを選択します。アクション→セキュリティ→セキュリティーグループと進みます。
・作成したセキュリティーグループを選択して、EC2にアタッチされていたセキュリティーグループを削除します。
プライベートサブネット
プライベートサブネット用のルートテーブルを作成していきましょう
vpcは、今回作成したvpcを選択します。
作成したら、編集していきます。ルート→ルートを編集へ進みます。
ルートを追加
送信先:0.0.0.0.0/0
ターゲット:今回作成したNATゲートウェイ
##プライベートサブネットEC2インスタンスへのログイン
最後に、EC2インスタンスへログインします。
流れとしては、パブリックサブネットEC2インスタンスにキーペアをアップロードして、パブリックEC2インスタンスにログインした状態でアップロードされたキーペアを使用して、プライベートサブネットEC2へログインとなります。
MAC OSの方は、ターミナルを起動します。
AWS SSHサーバー・クライアントの仕様でキーペアの権限を読み取り専用にしてあげないと、ログインできないので、権限を変更します。
chmod 400 (キーペア名)
次に、SCPコマンドでパブリックサブネットにキーペアを転送します。
scp -i (キーペア名) (アップロードファイルの指定=キーペア名) ec2-user@(パブリックIPアドレスorElastic IPアドレス):(アップロード先フォルダの指定)
アップロードができると、ターミナル右側に下のような表示がされます
キーペアをパブリックサブネット内EC2インスタンスへアップロード後、ローカル環境からパブリックEC2インスタンスへログインします。
ssh -i (キーペア名) ec2-user@(パブリックIPアドレスorElastic IPアドレス)
パブリックEC2インスタンスにログイン後、cdでアップロードフォルダまで移動します。
移動後、そのアップロードしたキーペアを仕様してプライベートサブネットEC2へログインします。
ログイン方法は、上記sshコマンドを使用して、@以降をプライベートサブネット用のIPアドレスを使用するだけです。
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com