EC2のインスタンスタイプを変更するとネットワークアダプタが変更され、通信ができなくなる場合がある

# はじめ

この記事は「[AWS Advent Calendar 2021]
(https://qiita.com/advent-calendar/2021/aws)」25日目の記事です。
本日はクリスマスですね。メリークリスマス🎅🎄

昨年の[本番環境でやらかしちゃった人 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/yarakashi-production)にて、"""[S3「 お゛め゛ぇ゛に゛権゛限゛ね゛ぇ゛がら゛！」](https://qiita.com/tsumita7/items/b8120e3ac5b79019e994)"""という ~~ネタ~~ 記事を書いてから既に丸1年が経過したという事実が受け入れられません。

インフラエンジニア5年目の[tsumita](https://twitter.com/tsumita7)と申します。

# 3行まとめ
- Windows系OSでインスタンスタイプを変更するとネットワークアダプターが変更されることにより、DNS設定がリセットされて名前解決ができなくなることで、通信ができなくなる場合があります
- [DHCP オプションセット](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_DHCP_Options.html)や[Route 53のアウトバウンドクエリ転送](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver-forwarding-outbound-queries.html)を使用することで回避できます
- インスタンスタイプ変更前に[互換性](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/resize-limitations.html)を確認しましょう

# 経緯
Windows Server 2019のインスタンスタイプをt3.mediumからc6i.largeへタイプを変更したところ、名前解決が出来なくなり結果として通信ができなくなりました。
該当のサーバはActive Directory(AD)に参加しており、手動でDNSサーバの設定をしていました。

## 詳細
状態を把握するために`ipconfig /all`でネットワークの情報を確認したところ、ネットワークアダプターが付け変わったことによりネットワーク(DNS)の設定がリセットされたようです。
設定がリセットされたことにより、VPCデフォルトのDHCPオプションセットで設定されているRoute 53 ResolverのDNSサーバ(172.31.0.2)が設定されていました。
**※AWS公式ドキュメントの[インスタンスタイプの互角性](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/resize-limitations.html)に記載されている以下の仕様のとおり、"ENA"から"high-bandidth ENA"に変更するとネットワークアダプターの設定がリセットされるようです。**

> Network adapters
If you switch from a driver for one network adapter to another, the network adapter settings are reset when the operating system creates the new adapter. To reconfigure the settings, you might need access to a local account with administrator permissions. The following are examples of moving from one network adapter to another:
> - AWS PV (T2 instances) to Intel 82599 VF (M4 instances)
> - Intel 82599 VF (most M4 instances) to ENA (M5 instances)
> - ENA (M5 instances) to high-bandwidth ENA (M5n instances)

**t3.mediumの情報(インスタンスタイプ変更前)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299739/04a1f51c-760f-a1fc-bb1e-232690469cf2.png)

**c6i.largeの情報(インスタンスタイプ変更後)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299739/2e389cca-29df-465b-15ba-1dc14298668c.png)

また、今回はWindows Server 2019の比較的新しいAMIを利用していたため対象ではないのですが、古いAMIを利用している場合でc6iなど新しいインスタンスタイプを利用する際に[ドライバ更新が必要な場合](https://aws.amazon.com/jp/premiumsupport/knowledge-center/migrate-to-gen6-ec2-instance/)があります。


# 解決策
本事象の一番簡単な解決策は[DHCP オプションセット](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_DHCP_Options.html)を利用してDNSの設定を自動化することです。
DHCPオプションセットはVPC単位での設定となるため、何らかの理由で設定が出来ない場合は[Route 53のアウトバウンドクエリ転送](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver-forwarding-outbound-queries.html)を利用することで今回の事象は回避できると思います。
力技としてDNS設定スクリプトをユーザデータに仕込んで置いたり、SSM Run Commandなどを実行することで設定も出来るとは思いますが、本当にどうしようもない場合のみ利用した方が良いと思います。

# おわり
AWSをはじめとするクラウドではマシンスペックを気軽に変更できるため、今回のようなことで障害が発生する場合があると思います。
設定変更する際には必ず影響範囲(互換性)を精査してから行うことが大切だと改めて身をもって体験しました。

[AWS Advent Calendar 2021]
(https://qiita.com/advent-calendar/2021/aws)関係者の皆様お疲れ様でした。
記事を読んで下さった皆様にとって来年も素敵な年になることを切に願っています！
良いお年をお迎えください！