VPC
IPアドレス
ICANNという非営利団体が管理
IPアドレスは重複が許されない
IPアドレスは32bit。10進法表記では、0.0.0.0~255.255.255.255の範囲。
IPアドレスはNIC(Network Interface Card)に割り当てられる。
グローバルIPアドレスの枯渇
IPv4は枯渇しかけている。
IPv6が使われているが、主要なのはまだIPv4で、IPv6は補助的。
移行が順次行われいている。
globalとprivate
global
Internetでのやり取りに使用される。
ICANNが管理する。
世界中で一意である必要があり、重複不可。
private
オフィスや家庭内など限定的なエリアだけで利用されるアドレス。
エリア内では重複不可だが、globalでは重複可。
設定できる範囲は以下のように決まっている。
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
サブネットマスクとサブネット
IPアドレスの利用可能な範囲を決めることが可能。
以下の
/16
の部分がサブネットマスクである。左側から16bitまでが固定値という意味である。
CIDR(Classless Inter-Domain Routing)とは
同じサブネットとして扱うIPアドレスの個数を調整できるIPアドレスの設定方法
以下であれば、10.0.{数字}.{数字}が同じサブネット内のIPアドレスとみなされる。
この場合、同じネットワーク内には、65536個存在しうる。
固定されている部分をネットワーク部、設定可能な部分をホスト部という。
/16
と/24
がよく使われる。単に使う場合は
/16
、その中でサブネットを分ける場合は/24
を使うケースが多い。もっと多く使いたい場合は、サブネットを
/20
にする場合もある。
サブネットにするメリット
サブネットに分割することによって、分割することにより宛先を発見しやすくなる。
サブネット毎にグループを分ける。
publicはインターネット接続あり、privateはセキュアなネットワークにする、など。
サブネットマスクは、サブネットにしか使わないわけではない。
privateネットワーク全体にもサブネットマスクがある。
そしてもちろんその中のサブネットにも、サブネットマスクを設定できる。
VPCとは
Virtual Private Cloud
仮想ネットワークを作るサービス
最初のAWSアカウントを作成と同時に、AWSクラウドのネットワークから、ユーザー専用の領域を切り出してくれるのもVPC。
これがデフォルトのVPCのことである。
以下が可能
任意のIPアドレス範囲を選択して仮想ネットワークを構築
サブネットの作成、ルートテーブルやネットワークゲートウェイの設定など仮想ネットワークを完全に制御可能。
必要に応じてクラウド内外のネットワーク同士の接続が可能。
その中でオンプレと接続する際、様々な接続オプションが利用可能
インターネット経由
VPN/専用線(Direct Connect)
デフォルトVPC
デフォルトVPC全リージョンに作成され、各AZに一つのサブネットを伴って生成される。
たとえばus-east-1はAZが6つあるため、6つのサブネットが生成されます。
東京リージョンは3つのAZのため、3つのサブネットとなります。
VPCのCIDRは/16であり、65,536個IPv4アドレスを提供する。
サブネットは/20であり、4,096個IPv4アドレスを提供する。
このサブネットの中のいくつかはAmazonが使用するために予約される。
Internet GWを作成し、デフォルトVPCに接続する。
Internet Gatewayは、通常VPCにつき一つ構成されます。
Internet Gatewayは、マネージド型サービスのため特に冗長構成などにしなくともダウンタイムなどはほとんどないものとなっています。
デフォルトのSecurity Groupを作成し、デフォルトVPCに関連付ける。
デフォルトのACLを作成し、デフォルトVPCに関連付ける。
デフォルトVPCを備えたAWSアカウントには、デフォルトのDHCPオプションセットを関連付ける。
PublicとPrivateのDNSホスト名が付与される。
VPCとサブネット
サブネットは一つのAZに紐づける必要がある。複数AZにまたがることはできない。
同じリージョン内のVPCであれば、サブネットを複数作成し、複数のAZにそれぞれ紐づけることで、AZをまたがったVPCを構成することができる。
VPCは必ず一つ以上のサブネットと同時に存在する。
VPCのCIDRを/16とした場合、使えるサブネットは、/18~/26となる。
subnet内でつかえるIPv4アドレスが多くなるほど、subnetの数は小さくなることがわかる。
アドレスは、AWS管理IPの5個を差し引いている。 |subnet mask|subnet数|IPv4アドレス数| |:---|:---|:--- |/18|4|16379| |/20|16|4091| |/22|64|1019| |/24|256|251| |/26|1024|59| |/28|4096|11|
ただしVPCあたりのサブネット上限数は、デフォルト200個である。
予約されているアドレス
.0
: ネットワークアドレス.1
: VPCルータ.2
: Amazonが提供するDNSサービス.3
: AWSで予約されているアドレス.4
: ブロードキャストアドレス
publicとprivate
サブネットには、publicとprivateの2種類がある。
実際には、ルートテーブルにInternetへのルートがあるかどうかでpublicかどうかが決まる。
送信先を
0.0.0.0/0
、ターゲットをlgw-xxxxxxxxとすればサブネット内のすべてがインターネット接続できる。アクセスできるIPを限定したい場合は、送信先を編集する。
privateをInternet接続させるためには、NATゲートウェイなどを使用する。
NATゲートウェイをpublic側に設置
privateはそのNATゲートウェイ経由でアクセスする。
NATゲートウェイは、privateアドレスをglobalアドレスに変換することにより、Internet側に通信を返すことができるようになる。
NATゲートウェイは1か月くらい使用すると1000円オーダーの料金は発生する。
NATゲートウェイとインスタンスの違い
NATゲートウェイ
Elastic IPとパブリックサブネットを指定するだけですぐ使えてメンテしなくていい(楽)
1時間単位の利用料とイン・アウト関係なく転送量によって課金される(高い)
NATインスタンス
NATとして動作させるただのEC2(楽じゃない)
インスタンスの利用料に加えてアウトバウンドの時のみデータ転送料金がかかる(安い)
VPC外への接続
2津種類がある。
publicのAWSネットワーク
エンドポイント(S3など)
ルートテーブル
パケットの行き先を設定できる。
VPC作成時にデフォルトで一つのルートテーブルが作成されている。
VPC内はCIDRアドレスでルーティングする。
VPC設計のポイント
将来の拡張性を見据えたアドレスや他ネットワークとの接続を考慮する。
CIDRは既存の利用中のVPCや社内のデータセンター、オフィスと重複しないアドレス帯を設定する。
将来の組織構成、必要なアドレス数などを計画する。
VPC単体ではなく、いくつのVPCを構成するか、VPC全体の関係性を考慮する。
組織とシステム境界からVPCをどのように分割するか検討する。
複数AZを利用して可用性の高いシステムを構築
サブネットは大きいサブネットを使用し、publicやprivateを分割する。
Security Groupを使いリソース間のトラフィックを適切に制御する。
実装や運用を補助するツールも有効利用し、VPC Flow Logsなどを使ってモニタリングする。
Egress Only Internet Gateway
IPv6用のサービスで、IPv4用のNAT Gatewayのようなもの。
Carrer Gateway
新しいサービスで5G関連。
AWS wavelengthという新しいZoneがある。5G用の専用のWavelength Zoneと呼ばれる。
wavelength内に作ったリソースとのやり取りをするために使用されます。
DHCPオプションセット
TCP/IPネットワークのホストに設定情報を渡す標準的な規格
DomainやDomain名などの情報を渡す役割
global IP Addressとprivate IP Addressのやり取り
DNSの名前解決をVPC内でするためにはこれが必要不可欠
Elastic IP
通常インスタンスを起動すると、public IPアドレスが動的に割り当てられる。
それを避けるために固定IPを使用する仕組み。
Managed Prefix List
IPアドレス範囲をリストとして設定することができる機能。
基本的にはAWSが作成したリストが設定されている状態となっている。
ユーザー側で特定のリストを作成することも可能。
Endpoint
VPC外のAWSサービスと接続するためのもの
Endpointのサービス
Endpointを使って、他のAWSアカウントから自身のVPCに接続させるためのサービス。
NATゲートウェイ
Internetからの直接的なアクセスを防ぎながらInternet側のトラフィックを戻すことができる。
privateからinternetに接続するために必要。
ピアリング接続
VPCとVPCをつなげる際に利用する
セキュリティ
ネットワークACL
VPCやsubnetに設定するファイヤーウォールのようなもの。
IPアドレスに基づいた制御、プロトコル単位でのトラフィック制御などが可能。
Security Group
Instance間のトラフィックを制御するもの。
EC2インスタンスやRDSやELBに設定し、トラフィック制御をsshやhttpに設定することができる。
Security Groupは、使いまわすことが可能だが、VPC内でしか使いまわせない。
作成したはずのSGが見つからない場合は、VPCの設定を見直す必要がある。
Network Analysis
Reachability Analyzer
到達可能性アナライザ。
VPC内の任意のリソース間の到達可能性を調べることができる。
Network Access Analyzer
新しい仕組み
ネットワークのセキュリティをチェックする仕組み。
スコープという形でセキュリティを定義し、そのスコープにあっているかを評価することができる。
DNS Firewall
Route53を使ったFirewallであり、Route53の機能。
VPCにある理由としては、Resolverを介してVPCから送信されるDNSクエリに対してDNSレベルの虚偽を防ぐことができる機能を提供しているため。
Domain名をフィルタリングしてドメイン名からセキュリティを強化する。
Rule Group
フィルタリングのルールをグループ化しては前を付けたものをRule Groupという。
一つ一つはFirewallルールという。
Domain List
Firewallルールでは、ドメイン名を指定して許可・拒否を設定する。
そのドメイン名をリスト化するための機能。
Network Firewall
新しいFirewallであり、VPCに直接付与するFirewall。
今までは、Security Group、ACLがあったが、IPやプロトコルを指定するシンプルなFirewallであった。
WAFはCloudFrontやRoute53に設定するものであり、VPCを直接Firewallする機能がなかった。
Firewall PolicyやFirewall Roule Groupを設定して、フィルタリングを作成し、IPS(侵入防止システム)として機能する。
VPN(Virtual Private Network)
VPN接続をオンプレのデータセンターなどと接続する際に設定するもの。
Customer gateway
オンプレ側の接続点
仮想 Private gateway
VPC側の接続点
サイト間VPN接続
実際の接続設定はこちらから行う。
Client VPN Endpoint
ネットワークにVPN接続する際のエンドポイントの設定。
AWS Cloud WAN
オンプレミスの複数事業拠点とAWSを接続管理するためのサービス。
Network Managerを用いて実際に管理する。
Transit Gateway
多数のVPCを利用している場合に、ハブ・アンド・スポークのように関連付けて管理することができる機能。
トラフィックのミラーリング
ネットワークトラフィックを補足して検査する機能
Settings
AZとWavelengthゾーンを設定することなどができる。
S3の接続
S3はVPC内ではなく、Region内に作成されるため、VPC向けのEndpointが必要であり、VPCウィザードでもそのように作成することができる。
これはprivate subnetにendpointが設定されている。
使わない場合はこのgatewayを削除する。
DNS設定
VPC作成時にDNS解決を有効化するとRoute53を用いて名前解決をすることができる。
DNSホスト名を有効化すると、VPC内でホスト名でアクセスすることができる。
ルートテーブルの設定
サブネット内のルータをインタネットゲートウェイ(これはVPCにある)にルーティングすることで、インターネット接続が可能となる。
これによりサブネットをpublicにすることができる。
Elastic IP
NATゲートウェイはElastic IPが割り振られる。
Elastic IPは割り当て垂れてない未使用なものは費用がかかるため、NATゲートウェイを消す場合は、Elastic IPを消すことを忘れないようにする。
global/private IPアドレス
private IP addressは、DHCPサーバーにより自動的に割り当てられる。
private IP addressはInternetでは使えない。
接続する際は、private ipをglobal ipにNATが変換することで接続が可能となる。NATソフトウェアが入っているルーターも多い。
複数を共通してglobal ipに変換する場合は、ip mascaradeという。(NATは1対1)
DHCP, NAT, IPマスカレードは、一つのルーターで実行されることも多い。
privateサブネット内のリソースへのアクセス
サブネット内に向かってくる方向の通信は、internet gatewayをpublic subnet内の踏み台サーバーを経由して、接続する。
この時も返信側にはNATゲートウェイが使われる。
NATゲートウェイ
サブネットの指定でpublic subnetをする。
2タイプある。(public/private)
基本publicで使うようだ。
privateなNATゲートウェイって?
Transit Gatewayなどで使うようだ
Elastic IPを割り当てる(必須?)。
private gatewayのRoute tableにNAT gatewayを0.0.0.0/0にして設定する。
Protocol と OSI Reference Model
住所(アドレス)だけでは通信できない。
メールでは、SMTP(Simple Mail Transfer Protocol), POP(Post Office Protocol)
Webでは、HTTP(Hypter text transfer protocol)
OSI
7つのlayer
Application ... HTTP, HTTPS, POP, SMTP
Presentation ... 文字コード、圧縮、暗号復号(コンピュータ間の表現の違いも吸収)
Session ... 認証状態、アクセス権限
Transport ... ポート番号の割り当て、TCP/UDP、パケット制御
Network ... IPアドレスのルーティング
Datalink ... MACアドレス
Phisical ... ビット単位(header, payloadの形式)
TCP/IPモデル
OSIが細かいのでまとめたもの
Application ... HTTP, SSH, DNS, SMPT, POP3, FTPなど
Transport ... TCP, UDPなど
Network ... IP, ICMP, ARP, BGPなど
Phisical ... Ethernet, PPPなど
PORTはOSがデータを受け取るためのEndpoint
デフォルトのポート番号はいろいろ決まっている。
Security GroupとACL
SG(Security Group)
EC2などのinstanceのトラフィック制御をする。
アクセス権限はIAMで管理するので、それとは少し違う。
defaultはすべて拒否。
sshは設定されているが、自身のIPだけに許可されている。
例えば、HTTPは拒否してSSH(22)だけ許可している、など。
複数のSGをインスタンスで共有することもできる
ACL
subnetに対してトラフィック制御を実施する。
デフォルトはすべてALLOWだが、カスタムで作成すると、すべてDENYされたACLとなっている。
subnetに割り当てできるのは、1つのACLのみっぽい。
実際にクライアントからアクセスするためにはアウトバウンドルールに以下を追加
カスタムTCPルール
port: 1024-65535
yumに失敗する場合は、インバウンドにもこれを追加する?
ephemeral portsというらしい。
https://e-words.jp/w/%E3%82%A8%E3%83%95%E3%82%A7%E3%83%A1%E3%83%A9%E3%83%AB%E3%83%9D%E3%83%BC%E3%83%88.html
サーバーは固定でも、クライアント側のポート番号は定めがないためと思われる。
これに対してwell-known portsというものがある。
主な用途やプロトコルが決まっており、一時的な利用のために動的に占有することが推奨されないポート番号群のこと
一般的には0番から1023番までの範囲を指す。
比較
サーバー単位
VPC/subnet単位
ステートフル(インバウンドを許可すればアウトバウンドも許可)
ステートレス
許可のみをIn/Outで設定(拒否する場合は設定しない)
許可と拒否をIn/Outで設定
デフォルトは同じSG内のみのインバウンドが許可。アウトバウンドはすべてのトラフィックが許可されている。
デフォルトはすべて許可
すべてのルールが適用
番号の順番通りに適用(デフォルトのすべて許可は100番になっている)
subnet内ではprivate ipでアクセスできる。
NATゲートウェイはsubnetに割り当てる。
private NATゲートウェイとは?
NATゲートウェイはpublicの場合必ずElastic IPが必要
privateはElastic IPが不要
他のVPCやオンプレNWに接続するために必要になる。(Transit Gateway, 仮想Private Gateway)
private subnetのルートテーブルを編集し、NATゲートウェイを割り当てる。
NATが割り当てられてて消された場合は、blackhole statusになっている。
Direct Connect
DCやOfficeと専用線を介してAWSに接続するサービス
メリット
安価なアウトバウンドトラフィック料金
ネットワークの信頼性向上
ネットワークの帯域幅向上
Direct ConnectロケーションにあるDirect Connectデバイスと、自社の危機を物理的に接続する。
ロケーションはAZよりも細かい場所にある
Direct Connect Gateway
複数のリージョンの複数AZから複数リージョンの複数VPCに接続可能となる。
VPNとDirect Connectの比較
VPN
安価なベストエフォート回線。
即時の導入が可能。
帯域幅に制限があり、ネットワーク品質低下や障害発生時の切り分けの難しさなどがある。
Direct Connect
キャリアとの専用線サービス契約が必要となり割高
物理対応のため導入に数週間かかる。
帯域幅やネットワーク品質、障害発生時の切り分けも比較的容易。
VPCエンドポイント
S3などグローバルIPをもつAWSサービスに対してアクセスするための出口
2種類の接続方式がある。
Gateway型
サブネットに特殊なルーティングを設定(ルートテーブル)を実施
Internet Gatewayと同じような感じで、サブネットのルートテーブルに設定する。
アクセス制御はエンドポイントポリシーで行う。
料金が無料
冗長性をAWS側が担保するマネージド型サービス
Gateway型は、S3かDynamoDBでしか使えない。
Interface型
サブネットにエンドポイント用のPrivate IPを持ったものを作成し、DNSの名前解決でルーティングする。
アクセス制御はSG(Security Group)で行う。
料金が有料
冗長性はマルチAZ設計となっている。
使い分けは...?
public subnetはエンドポイントを使わなくてもインターネットを通してS3に接続できてしまう。
private subnetもNATゲートウェイがあれば接続できてしまう。
これはトラフィックがインターネットに出ていくのか微妙な気がするが?
ACLとの兼ね合いはありそう
https://dev.classmethod.jp/articles/vpc-endpoint-gateway-type/
VPC Flow Logs
ネットワークトラフィックを取得し、CloudWatchでモニタリングできるようにする機能
SGやACLのルールでaccepted/rejectされたトラフィックログを取得
キャプチャウィンドウと言われる時間枠で収集・Processing・保存する。
RDS, Redshift ElasticCache WorkSpacesのネットワークインタフェースのトラフィックも取得可能
追加料金なし。
CloudWatchでCloudWatch Logsのロググループを作成しておく必要がある。
Flow Logsを作成し、送信先をCloudWatchで作成したロググループにする。
CloudWatchに送信するためのIAMロールが必要。
EC2のIAMポリシーロールになるが、他の権限のついてしまうため、手動でlogs系のアクションのカスタムポリシーを作成する。
VPC設定の上限
|VPC数|5 per 1リージョン| |サブネット数|200 per 1VPC| |Elastic IP数|5 per 1AWSアカウント, 1リージョン| |ルート数|100 per 1ルートテーブル| |SG数|500 per 1VPC| |SGルール数|50 per 1SG|
VPC分割方法
アプリケーション単位
監査
リスクレベル
組織(部署)
本番・検証・開発フェーズ
VPC Peering
VPC間でトラフィックルーティングすることが可能
異なるAWSアカウントや異なるリージョン間での接続も可能
マネージド型のため、単一障害点や帯域などのボトルネックもない
1対1の仕組みなので、例えばVPC3つ全部を接続するためには全結合させる必要がある。
private subnetのEC2からS3へのアクセス
EC2のIAMロールとしてS3へのアクセスポリシーを設定
public EC2からprivate EC2にssh接続
aws s3 ls
で確認VPCエンドポイント作成
VPCを指定
ルートテーブルも指定
Internet Gatewayと同じような感じで、サブネットのルートテーブルに設定する。
ポリシーはすべて許可とする。
aws s3 ls --region ap-northeast-1
で確認エンドポイントとしてリージョンを指定する必要がある?
Transit Gateway
VPC Peeringは1対1でしか構成できなかったが、数が多い場合に大変。
それを解決するためのサービスとして作られ、ハブのように機能する。
VPC以外のサイト間VPNなども中継し、オンプレミスのオフィスとVPCを中継するという使い方も可能。
手順
Trainsit Gatewayをまず作成
Transit Gateway AttachmentをVPCの数分作成する。
マルチキャストドメインとは?
単一のデータストリームを複数の受信PCに同時に配信するためのプロトコル
それをTransit Gatewayのルーティングで提供する。
Last updated