VPCの使い方(TOASTサービスをのぞいてみる)

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アドレスの範囲を持つ必要があります。

TOAST Meetup 編集部

TOASTの技術ナレッジやお得なイベント情報を発信していきます
pagetop