【小ネタ】WindowsサーバでセカンダリIPを設定してみた

ご機嫌いかがでしょうか、豊崎です。

かなり今更ですが、先日初めてWindowsサーバでセカンダリIPを設定したので設定方法を書いていきたいと思います。

先日、検証環境でt3.microでWindowsサーバを建てていました。プライベートIPアドレスを一つのENIに3つ割り当てようとしたのですが、できませんでした。確認したところ、T1/2/3ファミリーのnano/microはENIあたり利用できるIPv4のプライベートIPアドレスは2つまでのようでした。

良い機会なのでプライベートIPの追加方法について備忘録的に書き残したいと思います。

本投稿では2つのパターンについて書いていきます。

  • 1つのENIに対して2つIPを付与するパターン
  • 2つのENIに対してそれぞれ1つずつ、計2つのIPを付与するパターン ※ENI=Elastic Network Interface

気をつけたいインスタンスタイプ

インスタンスタイプ ENIの最大数 ENIあたりのIPv4アドレス
t1.micro 2 2
t2.nano 2 2
t2.micro 2 2
t3.nano 2 2
t3.micro 2 2

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI

本番環境ではなかなかT1/2/3ファミリーの小さいインスタンスタイプを選択することはないかもしれませんが、2つ以上のプライベートIPを利用したい場合は気に留めておくと良いかもしれません。

前提

  • AMI:Windows_Server-2016-Japanese-Full-Base-2019.01.10 (ami-024969f4422a2bb91)
  • パターンごとのEC2、2台と疎通確認用のサーバ1台を用意してあります
  • 各EC2のENIにはSecurityGroupは適切に設定されているものとします
  • Windows Firewallはpingを許可しています
  • 疎通確認用のサーバは対象のWindowsサーバと同一VPC内に配置

やってみた

複数のプライベートIPアドレスを設定するEC2は起動している状態からスタートしていきます。

1つのENIに対して2つIPを付与するパターン

まずはAWSマネジメントコンソールのEC2ダッシュボードからEC2に付与されているENIを確認し、対象のENIを選択しアクション>IPアドレスの管理をクリックし、新しいIPの割り当てを行い「更新する」をクリックします。

次にWindowsにログインしてコマンドラインでipconfigで「IPv4アドレス」、「サブネットマスク」、「デフォルトゲートウェイ」、「DNSサーバ」を確認します。

PS C:\Users\Administrator> ipconfig /all

<抜粋>

イーサネット アダプター イーサネット:

   DHCP 有効 . . . . . . . . . . . . . .: はい
   IPv4 アドレス . . . . . . . . . . . .: 10.0.1.77(優先)
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: 10.0.1.1
   DNS サーバー. . . . . . . . . . . . .: 10.0.0.2

次にネットワークと共有センターから対象のイーサネット>プロパティ>インターネットプロトコルバージョン4(TCP/IP)を選択してプロパティを開き、上記4項目を設定していきます。

そしてセカンダリIPの設定ですが、詳細設定から追加をクリックし、セカンダリIPアドレスとサブネットマスク(先ほどと同様)を入力します。

これで設定は以上です。疎通確認用サーバから疎通を確認してみます。

疎通確認用サーバからのping
PS C:\Users\Administrator> ping 10.0.1.77

10.0.1.77 に ping を送信しています 32 バイトのデータ:
10.0.1.77 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.77 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.77 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.77 からの応答: バイト数 =32 時間 <1ms TTL=128

10.0.1.77 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms
PS C:\Users\Administrator> ping 10.0.1.88

10.0.1.88 に ping を送信しています 32 バイトのデータ:
10.0.1.88 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.88 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.88 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.88 からの応答: バイト数 =32 時間 <1ms TTL=128

10.0.1.88 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

無事通信ができました。

2つのENIに対してそれぞれ1つずつ、計2つのIPを付与するパターン

今回はENI自体を追加しますので、AWSマネジメントコンソールのEC2ダッシュボードからネットワークインターフェースを作成し対象のEC2に追加します。

次にWindowsにログインしてコマンドラインでipconfigで「IPv4アドレス」、「サブネットマスク」、「デフォルトゲートウェイ」、「DNSサーバ」を確認します。

PS C:\Users\Administrator> ipconfig /all

<抜粋>

イーサネット アダプター イーサネット:

   DHCP 有効 . . . . . . . . . . . . . .: はい
   IPv4 アドレス . . . . . . . . . . . .: 10.0.1.66(優先)
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: 10.0.1.1
   DNS サーバー. . . . . . . . . . . . .: 10.0.0.2

次にネットワークと共有センターから対象のイーサネット>プロパティ>インターネットプロトコルバージョン4(TCP/IP)を選択してプロパティを開き、上記4項目を設定していきます。ここまでは先ほどと同様なので画像は割愛します。

次に追加でアタッチしたENI側で上記と同様の手順を繰り返し行います。

PS C:\Users\Administrator> ipconfig /all

<抜粋>

イーサネット アダプター イーサネット 3:

   DHCP 有効 . . . . . . . . . . . . . .: はい
   IPv4 アドレス . . . . . . . . . . . .: 10.0.1.99(優先)
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: 10.0.1.1
   DNS サーバー. . . . . . . . . . . . .: 10.0.0.2

保存しようとしたら以下のような警告が出ました。1つ目のENIでデフォルトゲートウェイが指定されているためです。 複数のネットワークインターフェースを利用する場合は、2つの異なるデフォルトゲートウェイの指定は冗長対策として利用されるため、ここでは設定しないことにします。

それでは改めて、疎通確認用サーバから疎通を確認してみました。

PS C:\Users\Administrator> ping 10.0.1.66

10.0.1.66 に ping を送信しています 32 バイトのデータ:
10.0.1.66 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.66 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.66 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.66 からの応答: バイト数 =32 時間 <1ms TTL=128

10.0.1.66 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms
PS C:\Users\Administrator> ping 10.0.1.99

10.0.1.99 に ping を送信しています 32 バイトのデータ:
10.0.1.99 からの応答: バイト数 =32 時間 =1ms TTL=128
10.0.1.99 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.99 からの応答: バイト数 =32 時間 <1ms TTL=128
10.0.1.99 からの応答: バイト数 =32 時間 <1ms TTL=128

10.0.1.99 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 1ms、平均 = 0ms

こちらも疎通が確認できました

さいごに

非常に基礎的な内容でしたが、個人的にWindowsはあまり触らないため、備忘録として書きました。途中キャプチャし忘れた部分がありますが、フローは残せたかなと思います。誰かのご参考になれば幸いです。

参考

https://aws.amazon.com/jp/premiumsupport/knowledge-center/secondary-private-ip-address/

http://www.atmarkit.co.jp/ait/articles/0212/14/news002.html