share facebook facebook twitter menu hatena pocket slack

2011.08.23 TUE

VPCのSubnetとRoute Tableの挙動の確認

鈴木 宏康

WRITTEN BY 鈴木 宏康

インターネットからVPC上のEC2に接続の続きです。

今回はSubnetとRoute Tableの挙動を確認してみます。

まずは、10.0.0.0/24のEC2インスタンス(10.0.0.4)で確認すると、当然、自分自身へのpingは通ります。

$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=0.038 ms
64 bytes from 10.0.0.4: icmp_seq=3 ttl=64 time=0.031 ms

ちなみにルーティングテーブルは下記のようになっており、デフォルトゲートウェイは10.0.0.1となっています。

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0
default         10.0.0.1        0.0.0.0         UG    0      0        0 eth0

次に、同じSubnetのインスタンスでpingの確認をしてみると、当然、下記のように通信ができます。

$ ping 10.0.0.5
PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=10.9 ms
64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=0.470 ms
64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=0.490 ms

そして、下記のように10.0.1.0/24のSubnetを作成します。
ちなみにAvailability Zoneは10.0.0.0/24とは違う場所にしています。

Subnetを作成すると、デフォルトでRoute TableはMainのもの(10.0.0.0/24と同じもの)が適用されるようになっており、そのSubnetのインスタンス(10.0.1.4)でpingを確認すると、下記のように通信することができ、ルーティングされていることがわかります。

$ ping 10.0.1.4
PING 10.0.1.4 (10.0.1.4) 56(84) bytes of data.
64 bytes from 10.0.1.4: icmp_seq=1 ttl=64 time=3.11 ms
64 bytes from 10.0.1.4: icmp_seq=2 ttl=64 time=3.16 ms
64 bytes from 10.0.1.4: icmp_seq=3 ttl=64 time=3.13 ms

実際にMainのRoute Tableは次のようになっており、

VPC作成時に指定したネットワークアドレス(10.0.0.0/16)のTargetがlocalに必ず設定されています。
つまり、そのVPC内のEC2インスタンスはお互いに通信できるようになっています。

今度はもう一つRoute Tableを作成し、

(やはり、10.0.0.0/16のTargetはlocalに設定されています)

下記のように10.0.1.0/24のSubnetに適用させます。
つまり10.0.1.0/24のSubnetを10.0.1.0/24とは別のRoute Tableにします。

この状態で再度、10.0.1.4でpingを確認すると、

$ ping 10.0.1.4
PING 10.0.1.4 (10.0.1.4) 56(84) bytes of data.
64 bytes from 10.0.1.4: icmp_seq=1 ttl=64 time=3.09 ms
64 bytes from 10.0.1.4: icmp_seq=2 ttl=64 time=3.01 ms
64 bytes from 10.0.1.4: icmp_seq=3 ttl=64 time=3.08 ms

それでも通信はできます。
つまり、どんなRoute TableにもVPCで設定したネットワークアドレス(10.0.0.0/16)のTargetが必ずlocalに設定されてしまうので、VPC内(10.0.0.0/16)のインスタンスは、お互いに通信できてしまうことになります。

ちなみに10.0.1.4のインスタンスのルーティングテーブルは下記のようになっており、デフォルトゲートウェイは所属しているSubnetのもの(10.0.1.1)になっていることがわかります。

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.1.0        *               255.255.255.0   U     0      0        0 eth0
default         10.0.1.1        0.0.0.0         UG    0      0        0 eth0

以上より、Subnet間でアクセス制御をしたい場合は、Network ACLを利用することになります。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。