NHN Cloud Meetup 編集部
VPCの使い方(TOASTサービスをのぞいてみる)
2018.10.01
1,136
VPC(Virtual Private Cloud)
VPCは論理的に分離された仮想ネットワークを構成できる機能を提供します。
これにより、隔離された環境のインフラ運営が可能になります。VPCはSubnet、Internet Gateway、Routing、Peeringなどのネットワークに関連するリソースを管理できるように構成されています。
ここではVPCを構成する各リソースの概要と使用方法について説明します。
Subnet(サブネット/ Subnetwork)
Subnetは、IPネットワークを論理的に分けたサブセットです。
IPネットワークを一つに大別することもできますが、一つのネットワークにIPが増加するほど、通信のルーティング情報の交換や送信、ネットワークトラフィックなどが増加することになり、トラフィックの処理効率が低下します。したがって、相互干渉をなくして、不必要なトラフィックを削減する目的でSubnetが利用されます。
LANまたはインターネットに接続されている状態であれば、少なくとも一つのIPアドレスが付与されます。
付与されたIPアドレスはSubnetに属するIPアドレスで、次のように、ifconfigコマンドを使用してNICに割り当てられたIPアドレスとそのIPのSubnetを確認できます。
# ifconfig eth0 Link encap:Ethernet HWaddr FA:16:3E:36:15:45 inet addr:192.168.0.25 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fe36:1545/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1454 Metric:1 RX packets:126360 errors:0 dropped:0 overruns:0 frame:0 TX packets:4212 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10626176 (10.1 MiB) TX bytes:429772 (419.6 KiB) eth1 Link encap:Ethernet HWaddr FA:16:3E:7D:DF:30 inet addr:172.20.0.27 Bcast:172.20.0.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fe7d:df30/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1454 Metric:1 RX packets:19814026 errors:0 dropped:0 overruns:0 frame:0 TX packets:20493074 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1730568117 (1.6 GiB) TX bytes:6874511302 (6.4 GiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:13676 errors:0 dropped:0 overruns:0 frame:0 TX packets:13676 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3177996 (3.0 MiB) TX bytes:3177996 (3.0 MiB)
NIC eth0の場合、192.168.0.25が割り当てられており、Mask値(255.255.255.0)を介してSubnetを計算出できるようになります。
CIDR形式で表現すると、192.168.0.0/24のSubnetに属するIPだとわかります。
(注:https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#IPv4_CIDR_blocks)TOASTからProject作成およびNetwork商品活性化時、デフォルトでVPCとSubnetが一つずつ生成されます。
リソース | 提供内容 |
---|---|
VPC | 192.168.0.0/16(/ 24 * 256) |
Subnet | 192.168.0.0/24 |
VPC IPネットワーク内でSubnetを分けて利用できるように、WebコンソールからSubnet作成/削除機能が提供されます。
Subnet作成時、VPCが提供するIPアドレスの範囲内でのみ生成可能です。
Routing
Routingは、ネットワーク内でデータ転送時に使用するパスを指定する過程を意味します。
ここでは、Ruleベースの静的ルーティングについてのみ説明します。
静的ルーティングは、ルータにパケットが到達すると、パケットの宛先IPアドレスが判別され、決められたルールに基づいてパケットの流れが決定されます。宛先IPがルールに一致しない場合は、デフォルトのルーティングの影響を受けます。一般的なLinuxシステムでip routeコマンドを使用すると、次のような内容を見ることができます。
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 qr-7998b0a6-39 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 qr-4ffdaa94-2c
上記の例では、宛先IPが192.168.0.0/24に属するパケットに対して、qr-7998b0a6-39ルータインターフェイスを介して抽出し、宛先IPが192.168.10.0/24の場合、qr-4ffdaa94-2cルータインターフェイスを介して抽出されます。
ルータ内部では説明したような設定が存在し、そのプロセスを自動化するために、VPCはRouting Table接続機能とRoutingメニューを提供しています。
「Routing Table接続」機能を利用すると、VPC内の異なるSubnet間のネットワーク通信が可能に設定できます。複数のSubnetを一つのRouting Tableに接続することができ、このように接続されたSubnetは、追加作業なしで相互に通信ができるようにVPC内で自動的に設定されます。
VPC内部ネットワークから外部ネットワークへ接続するには、外部ネットワークに接続可能なゲートウェイを作成する必要があり、VPCはInternet Gatewayという名前でサポートしています。
VPCのRoutingメニューでは、現在のInternet Gatewayへのパケットのパスのみサポートしており、今後、VPN接続のためVPN Gatewayを指定できるように対応する計画です。
Peering
異なるVPCは完全に分離されたネットワーク環境です。
VPC間で接続が必要なケースが発生した場合、Peeringを利用して接続できます。
図のようにVM1 – VM3はPeeringに接続されているので、通信可能な状態です。また、VM2 – VM1も通信可能な状態です。
Peeringに接続されたVPC同士だけ通信が可能で、図のようにVPC1 – VPC3、VPC1 – VPC2が接続されても、VM3とVM2間の通信は対応していません。また、Peeringで接続するVPCは、必ず互いに重ならないIPアドレスの範囲を持つ必要があります。