2011年8月22日月曜日

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

スズキです。

下記の続きです。
インターネットからVPC上のEC2に接続
今回は"Subnet"と"Route Table"の挙動を確認してみます。

まずは、"10.0.0.0/24"のEC2インスタンス(10.0.0.4)で確認です。
$ 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
当然、自分自身への"ping"は通ります。

ちなみにルーティングテーブルは下記のようになっており、
$ 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
デフォルトゲートウェイは"10.0.0.1"となっています。

次に、同じ"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"のインスタンスのルーティングテーブルは下記のようになっており、
$ 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のもの(10.0.1.1)になっていることが
わかります。

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

次は"Network ACL"をやるか、"Route Table"深めるか...
--------
http://www.suz-lab.com

0 コメント: