目次
サーバーレスとDevOpsに注力中。AWSを使った効率的なインフラ構築が得意です。
自宅のネットワークから AWS VPC (Virtual Private Cloud) 内の EC2 インスタンスに SSH 接続するための設定例を記載します。リージョンは Tokyo (ap-northeast-1) を利用します。
VPC の作成
Your VPCs 内の Create VPC から作成します。独立したプライベートアドレス空間が作成されます。
- Name tag: myvpc
- CIDR block: 192.168.0.0/16
- Tenancy: Default
インターネットゲートウェイの作成
VPC はインターネットとは切り離された存在です。VPC とインターネットの中継ポイントとしてインターネットゲートウェイを作成する必要があります。Internet Gateways の Create Internet Gateway から作成します。
- Name tag: mygateway
作成したら Attach to VPC で myvpc にアタッチします。
サブネットの作成
Subnets 内の Create Subnet から作成します。VPC のプライベートアドレス空間内に存在する更に小さなアドレス空間です。二つの AZ (Availability Zone) にそれぞれ一つ作成します。
mysubnet-0001 (AZ: ap-northeast-1b)
- Name tag: mysubnet-0001
- VPC: myvpc
- AZ: ap-northeast-1b
- CIDR block: 192.168.1.0/24
mysubnet-0002 (AZ: ap-northeast-1c)
- Name tag: mysubnet-0002
- VPC: myvpc
- AZ: ap-northeast-1c
- CIDR block: 192.168.2.0/24
作成されたサブネットの Available IPs は 256 のうち以下の 5 が利用できないため 256 - 5 = 251 となっています。
- 192.168.[1-2].0
- 192.168.[1-2].1
- 192.168.[1-2].2
- 192.168.[1-2].3
- 192.168.[1-2].255
サブネットのルーティング設定
ここまでの手順で以下のようなネットワークの構成要素が揃いました。
インターネット --- VPC { インターネットゲートウェイ (igw) --- 仮想ルータ (Route Table) --- サブネット (mysubnet-000[1-2]) }
サブネットには Route Table が設定されています。Route Table はそれぞれのサブネットに接続された仮想ルータのようなものです。
igw --- 仮想ルータ 1 (Route Table) --- mysubnet-0001
- 仮想ルータ 2 (Route Table) --- mysubnet-0002
仮想ルータには既定で以下のルーティングが設定されています。
- Destination: 192.168.0.0/16 (VPC のプライベートアドレス空間)
- Target: local
Target local とは VPC 内に存在するはずだから適切なサブネットにルーティングすればよいという AWS VPC 独特の表記です。これによってサブネット間の通信が可能になっています。こちらの記事で想像されているように、仮想ルータ同士はお互いに接続されているのです。
インターネットゲートウェイ (igw) へのルーティングを追加
インターネットゲートウェイ (igw) と仮想ルータは物理的には回線で接続された状態ですが、仮想ルータにルーティング設定がなされていないためサブネット内からのトラフィックは igw に到達できません。この状態のサブネットを private subnet とよびます。そこで、以下のようにルーティング設定を追加します。igw へのルーティングが設定されたサブネットを public subnet とよびます。Route Table タブの (Edit ではなく) Route Table リンクを押した後の Edit から編集します。
- Destination: 0.0.0.0/0
- Target: igw-(mygatewayのid)
EC2 インスタンスの起動
mysubnet-0001, mysubnet-0002 それぞれに所属する EC2 インスタンスを一台ずつ起動します。ENI (Elastic Network Interface) という仕組みがあるためプライベート IP は起動時に指定できます。以下のように設定しました。
- myinstance-0001 (private ip: 192.168.1.4, public ip: なし)
- myinstance-0002 (private ip: 192.168.2.4, public ip: なし)
補足
- 外部からの TCP 22 番アクセスが許可されるセキュリティグループを必要であれば新規作成して設定
- 鍵は必要なら新規作成して設定
仮想 IP の割り当て設定
ここまでで以下のような状況になりました。仮想ルータのルーティング設定も完了しています。
インターネット --- VPC { インターネットゲートウェイ (igw) --- 仮想ルータ (Route Table) --- サブネット --- EC2 }
しかしながら EC2 インスタンスはプライベート IP しか保有しておらずグローバル IP がないためインターネットと通信できません。正確には EC2 からインターネット向けのトラフィックはルーティングできますが、レスポンスのトラフィックを EC2 までルーティングする手段がありません。そこで EC2 に Elastic IP という AWS が提供するグローバルな仮想 IP を割り当てます。「Elastic IPs メニュー」→「Allocate New Address」→「Associate Address」から設定します。
- Instance: myinstance-000[1-2]
- Private IP address: 192.168.[1-2].4
何が行われるようになるか
- こちらの記事にあるように Static NAT がゲートウェイで行われる
- 仮想 IP はゲートウェイで管理される
- ゲートウェイにはインスタンスのプライベート IP と仮想 IP の対応表 Static NAT テーブルが存在
- インスタンスからは自分に割り当てられている仮想 IP の存在を確認できない
補足
- インターネットゲートウェイは IP マスカレード (NAT) してくれない
SSH クライアントから EC2 への接続
$ chmod 400 mykeypair.pem
$ ssh ec2-user@52.68.44.224 -i mykeypair.pem
注意
- TCP 22 のみ許可しているので ping や traceroute/tracepath (ICMP) は通らない
- igw へのルーティング設定がなされていないサブネット内の EC2 については外部からのトラフィックは通るがその応答トラフィックが外にルーティングされない
EIP は EC2 インスタンスからは認識できない (上述の通り)
$ ip addr show
inet 192.168.1.4/24 brd 192.168.1.255 scope global eth0
EC2 インスタンスのルーティングテーブル
$ ip route show
default via 192.168.1.1 dev eth0 ← デフォルトゲートウェイ (仮想ルータ)
169.254.169.254 dev eth0 ← リンクローカル
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.4 ← 所属サブネット
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- Ciscoルータの基本操作シスコ社の製品のうち、ルータは Cisco*** という製品名でスイッチは Catalyst*** という製品名です。いずれも *** は機種番号で、数字が小さいほど小規模ネットワーク向けとなっています。例えば資格試験 CCNA Routing and Switching では小規模および中規模ネットワークが対象です。そのため、中小規模のネットワークのルータおよびス
- BIND 9 ゾーンファイル Dynamic Update の設定方法DHCP 環境下などで IP が動的に付与される場合は DNS レコードを動的に更新する必要があります。これを実現する Dynamic Update 機能が BIND 9 には実装されています。使用方法をまとめます。Dynamic Update に対応した DNS を特に Dynamic DNS または DDNS とよぶことがあります。 ゾーンファイルの作成 ローカルホストに example.co...
- VyOS の基本的なルーティング設定本ページでは、複数の LAN をつなぐルータとしての設定方法をまとめます。具体的には、スタティックルーティングおよびダイナミックルーティング (RIP/OSPF/BGP)の設定方法を把握します。 設定方法を検証するための構成 ルーティング設定の検証を行うために VirtualBox で 5 台の VM を用意します。ホスト OS から vyos-0001 へ SSH 接続する部分を除き、「内部ネッ...
- BIND 9.10.2 の公式マニュアルに学ぶ DNS の基本DNS の実装としては Internet Systems Consortium (ISC) の Berkeley Internet Name Domain (BIND) が有名です。本ページは公式サイトの Documentation からダウンロードできる v9.10.2 の PDF マニュアルおよび『DNSの仕組み完全解説』から基本事項を抽出してまとめ
- スタティックルートの設定インターフェイスに IP を設定しただけでは他のデバイスと通信できません。各デバイスにルーティングテーブルを設定する必要があります。ルーティングテーブルの設定方法には動的に自動設定するものと、静的に手動設定するものの二種類があります。ここでは静的に手動設定するスタティックルートの方法を紹介します。 具体的にはまず PC0, PC1, Router0, Router1 それぞれ