ラベル eni の投稿を表示しています。 すべての投稿を表示
ラベル eni の投稿を表示しています。 すべての投稿を表示

2012年1月1日日曜日

VPCってなんじゃ?(ENI編)

今回は新しく追加されたENI(Elastic Network Interface)について調べてみました。

ENI(Elastic Network Interface)とは、EC2のNICにあたるもので、いままでインスタンスに直接付与されていたIPアドレスなどのネットワーク情報を、ENIに付与させることでより柔軟なネットワーク構成を実現するためのものだそうです。ENIはVPCでのみ使用出来ます。

コンソールのEC2タブをクリックすると左ペインのメニュー下部に「Network Interface」という項目があります。





これをクリックすると以下のようなENIの一覧画面が表示されます。
すでにVPCインスタンスを起動している場合は、VPCインスタンスにデフォルトでセットされているeth0のENIが表示されています。



新たにVPCインスタンスを起動してみます。
VPCとサブネットは以下のとおりです。

・VPC
10.0.0.0/16


・Subnet
publicサブネット:10.0.0.0/24
      privateサブネット:10.0.1.0/24




ENIの画面で「Create Network Interface」をクリックします。




ENIの設定ダイアログが表示されるので、publicサブネットで10.0.0.12のIPで登録します。




するとENIの一覧に新しくENIが追加されます。
ENIに設定できるSecurityGroupはEC2のものではなくVPCのセキュリティグループになります。

次に、EC2タブでVPCインスタンスを起動します。
Subnetはprivateサブネット(10.0.1.0/24)にします。




INSTANCE DETAILのフェーズで、ダイアログ下部にVPCのIPアドレスを設定できます。
ここで、「IP Address」の欄にプライベートIPを設定できます。ここで指定するIPはVPCにデフォルトでセットされているeth0のプライベートIPアドレスです。eth0は取り外しできず、基本のIPとなるため。ここに所属しているサブネットのレンジ内のIPアドレスを設定します。
ここでは、10.0.1.12を指定します。

また、「Additional Network Interface」という項目があり、ここに2枚目のENIを指定できます。選択肢から未使用の既存のENIを選べるので、ここで先程作成した、publicのENI(10.0.0.12)を指定します。




すると、起動したVPCインスタンスのプロパティ画面で、「Network Interface」欄にeth0, eth1と2つのENIが設定されていることがわかります。これはまさにNICが2枚挿されているのと同じ状態です。




 privateとpublicのENIを逆にしても同じように設定できますし、eth0とeth1に両方publicのIPを設定することもできます。

また、ENIに付与するプライベートIPアドレスはVPCインスタンスと同様、サブネットの範囲内のIPアドレスしか付与できません。






また、ElasticIPをENIに付与することができます。ただし、2つのENIに2つのEIPを設定することは現状できません。




最初に追加ENIなしで、あとからAttachもできます。




しかし、ifconfigをみると、
eth0      Link encap:Ethernet  HWaddr 02:3D:6E:63:F7:40 
          inet addr:10.0.0.20  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::3d:6eff:fe63:f740/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:551 errors:0 dropped:0 overruns:0 frame:0
          TX packets:527 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:58037 (56.6 KiB)  TX bytes:53007 (51.7 KiB)
          Interrupt:10

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

と、2枚目が認識されていません。
2枚目のENIはどうやら自分でLinuxに設定をする必要があるようです。


 次に、EC2 API ToolsでVPCインスタンスを起動してみます。 最新バージョンのec-run-instanceには、以下のようにENIに関するオプションが用意されているようです。
     -a, --network-interface NETWORKINTERFACE
          Specifies the network interface for the launched instance.
          The format of the NETWORKINTERFACE definition is as follows:
           - For an existing NETWORKINTERFACE - <eni>:<dev index>
           - For a new NETWORKINTERFACE - :<dev index>:<subnet>[:<description>[:<priv IP>[:<SGs>[:<DOT>]]]]
          where SGs is a comma separated list of security group IDs and DOT is
          either true or false, denoting whether to delete the interface on terminate.



ここで、パブリックサブネットで以下のようにeth0とeth1に既存のENIを設定してみます。
$ ec2-run-instances ami-0644f007 -t m1.small -a eni-37ae7e5e:0 -a eni-76e73a1f:1 --region ap-northeast-1 -z ap-northeast-1a -s subnet-10a57379
RESERVATION r-97f20997 821635308497 
INSTANCE i-632dfa63 ami-0644f007   pending  0  m1.small 2012-01-21T11:50:36+0000 ap-northeast-1a aki-ec5df7ed   monitoring-disabled  10.0.0.109 vpc-18a57371 subnet-10a57379 ebs     paravirtual xen  sg-53afbc3f default
NIC eni-5de73a34 subnet-10a57379 vpc-18a57371 821635308497 in-use 10.0.0.109  true
NICATTACHMENT eni-attach-22a9504b 0 attaching Sat Jan 21 20:50:36 JST 2012 true
GROUP sg-53afbc3f default



、、、が、どちらのENIもアタッチできていません。




またeth0だけでもアタッチできず、
$ ec2-run-instances ami-0644f007 -t m1.small -a eni-37ae7e5e:0 --region ap-northeast-1 -z ap-northeast-1a -s subnet-10a57379
RESERVATION r-dff60ddf 821635308497 
INSTANCE i-0d28ff0d ami-0644f007   pending  0  m1.small 2012-01-21T12:31:27+0000 ap-northeast-1a aki-ec5df7ed   monitoring-disabled  10.0.0.117 vpc-18a57371 subnet-10a57379 ebs     paravirtual xen  sg-53afbc3f default
NIC eni-37e13c5e subnet-10a57379 vpc-18a57371 821635308497 in-use 10.0.0.117  true
NICATTACHMENT eni-attach-40a85129 0 attaching Sat Jan 21 21:31:27 JST 2012 true
GROUP sg-53afbc3f default



IP指定+eth1も無理なようでした。。
ec2-run-instances ami-0644f007 -t m1.small --private-ip-address 10.0.0.12 -a eni-76e73a1f:1 --region ap-northeast-1 -z ap-northeast-1a -s subnet-10a57379

指定の仕方が間違っているのか、デフォルトで自動にプライベートIPが割り当てられているようでした。 
これは宿題にしたいと思います。 以上です。

VPCってなんじゃ?(public subnet編)

あけましておめでとうございます。本年もよろしくお願いいたします。
今年の一発目は今さらながらVPCをさわってみたいと思います。

VPCはAWS内にプライベートなネットワークを構成でき、インスタンスレベルではなくネットワークレベルでのセキュリティや経路の制御を行うことができるサービスです。これによって、いままでデータセンターでやっていたようにサブネットの構成やVPNなどを扱うことが可能になります。VPCのネットワーク空間の中にEC2インスタンスなどを配置することによって、そのインスタンス自身はネットワークのIn/Outをあまり気にすることなく使用できます。

VPCでは用途に応じたネットワーク空間をつくるために、複数のサブネット、Inbound,OutboundのIPとポートの制御、VPNやインターネットへのゲートウェイ、ルーティングテーブルなどが用意されています。
今回は、パブリックなサブネットをもつVPCを作ってみたいと思います。

コンソールのVPCタブを押すと、VPCのダッシュボードが表示され、「Get started creating a VPC」という大きなボタンがあるので、それをクリックします。


すると、ダイアログが開き、VPCのタイプが選択できます。
これはいくつかの典型的なVPCの用途に合わせてゲートウェイやルーティングテーブルなどのプリセットを用意できるように対話式で進んでいけるようになっています。
ここでは一番上の「VPC with a Single Public Subnet Only」を選択してみます。


パブリックサブネットはインターネットに直面するサブネットになるので、内部に作成したEC2インスタンスはVPCを使用しないときと大きくは変わりませんが、プライベートIPを自由に設定できたり、インスタンスとインターネットの間のルーティングを制御できるなどのメリットがあります。

デフォルトの設定が表示されます。
CIDRは10.0.0.0/16となっています。



各項目の右側の「Edit〜」でデフォルト設定を変更できます。例えばPublicサブネットのAZを指定する場合は、以下のように変更します。



作成が完了すると、ダッシュボードに作成されたVPCの各オブジェクトの個数が表示されます。
Subnetは今回はPublic Subnetがひとつなので1つになります。


ここまでで、VPCの作成が完了しました。
次に、このVPC内にEC2インスタンスを1つ作成してみたいと思います。

EC2タブで「Launch Instance」をクリックすると、AMIの選択画面が表示されます。
今回はAmazon Linux AMIを選択します。



インスタンスパラメータの設定ダイアログが開きます。
VPCではt1.smallは使用できないので、m1.smallを選択します。
すると、「Launch Instance」のアコーディオン内の「Launch Into」の項目にVPCのタブが使用できるようになるので、VPCを選択します。自動的に先ほど作成したSubnetが選択されています。この状態で「Continue」をクリックします。



次にインスタンスの詳細設定をします。
VPCで特徴的なのは下段の「VPC Advanced Options」という項目です。
ここで、サブネット内でのこのインスタンスのプライベートIPアドレスを自由に指定することができます。
ここでは、10.0.0.8を指定し、「Continue」をクリックします。



インスタンス名をつけ、「Continue」をクリックします。



キーペアを作成します。ここでは既存のキーペアを指定して「Continue」をクリックします。



セキュリティグループを指定します。ここで指定したり作成したりするセキュリティグループは通常のEC2のセキュリティグループではなくVPC内で使用する専用のセキュリティグループです。
VPC内のセキュリティグループではInboundのみではなく、Outboundも制御することができます。
ここでは、public1というグループをつくり、特定のIPからSSHを受け入れるようにしました。



「Continue」をクリックすると、すべての設定の確認画面が表示されます。
変更があれば各項目の右側のリンクやBackリンクで修正をします。問題なければ「Launch」ボタンをクリックして、操作を完了します。



これでVPC内にEC2インスタンスが起動されました。
インスタンス情報にもVPCの情報が記載されていることがわかります。



次にインスタンスにEIPを割り当てます。
まずEIPを確保するために「Allocate Address」をクリックします。



ここで、VPC用に割り当てるのか通常のEC2用に割り当てるのかを選択します。
VPCを選択して、「Yes,Allocate」をクリックします。



EIPを確保できたら、次にEIPを選択した状態で、インスタンスに割り当てるために「Associate Address」をクリックします。



するとインスタンスに割り当てるか、ネットワークカード(ENI)に割り当てるかを選択します。
ENIはEC2インスタンスのネットワークカードで、2枚挿しなどもでき、eth1であれば抜き差しも可能です。
ここでは、Network Interface(ENI)を選択します。Network Interfaceでは、先程立ち上げたEC2インスタンスのeth0が選択できます。eth0なので抜き差しできないためインスタンスに直接割り当てているのと変わりないと思いますが、新しい機能なので使ってみます。
ここで、「Yes,Associate」をクリックすると、EC2インスタンス(のENI)にEIPが割り振られます。



これで、ひと通りの設定が完了しました。
次にSSHでEC2インスタンスに接続してみます。
$ ssh -i /Users/memorycraft/Development/cloudpack/myfirstcloud/keys/myfirstcloudkey.pem ec2-user@103.4.12.204
The authenticity of host '103.4.12.204 (103.4.12.204)' can't be established.
RSA key fingerprint is 40:cb:40:9d:39:9b:b2:d0:b9:47:43:fb:1d:db:d8:d0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '103.4.12.204' (RSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

See /usr/share/doc/system-release/ for latest release notes.

無事接続することができました。
自分のIPの情報を見てみます。
[ec2-user@ip-10-0-0-8 ~]$ ifconfig
eth0      Link encap:Ethernet  HWaddr 02:3D:4D:9C:4E:4D 
          inet addr:10.0.0.8  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::3d:4dff:fe9c:4e4d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2516 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1961 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2159794 (2.0 MiB)  TX bytes:146611 (143.1 KiB)
          Interrupt:10

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:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2343 (2.2 KiB)  TX bytes:2343 (2.2 KiB)

10.0.0.8が割り振られているのがわかります。
このようにプライベートIPを指定できることで、より柔軟な構成を組むことができます。

今回はここまで。